---
id: design-doc-generate-all
title: "POST /api/projects/:id/doc-content/generate-all — Сгенерировать весь документ (SSE)"
domain: design-doc
kind: api-method
http: "POST /api/projects/:id/doc-content/generate-all"
---

# POST /api/projects/:id/doc-content/generate-all — Сгенерировать весь документ (SSE) {#design-doc-generate-all}

## Сводка

| Поле | Значение |
|---|---|
| **HTTP** | `POST /api/projects/:id/doc-content/generate-all` |
| **Auth** | `optionalAuth, requireProjectAccess` — гость + авторизованный, доступ к проекту (read/write) |
| **Scope токена** | `read_write` |
| **PG-функции** | `api.get_block_prerequisites_content`, `api.upsert_block_doc_content` |
| **Таблицы** | `block_doc_content`, `block_doc_content_history`, `project_edge`, `project_node` |
| **SRM** | SRM-200, SRM-201 |
| **RP (права)** | RP-113, RP-114 |
| **Файл роута** | `server/routes/projects.js` |
| **Статус** | done |

**Аргументы запроса** (best-effort из хендлера; путь-параметры опущены):

| Аргумент | Где | Обяз. | Заметка |
|---|---|---|---|
| `mode` | query | | _подтвердить_ |
| `quality` | query | | _подтвердить_ |
| `resume` | query | | _подтвердить_ |

**Коды ответов/ошибок** (из хендлера): `202`, `403`, `429`, `500` (+ `200`) — _уточнить причины вручную_

Запись — токен со scope `read_write` (см. [Конвенции](../../../shared/conventions.md#conventions)); под ролью владельца, write-доступ к проекту обязателен. Ответ — **поток `text/event-stream` (SSE)**.

**Параметры (query):**

| Параметр | Значения | Назначение |
|---|---|---|
| `resume` | `1` | Продолжить с первого незаполненного блока, не трогая уже готовые (кнопка «Продолжить») |
| `quality` | `fast` (дефолт) · `pro` | `pro` — несколько вариантов на блок с выбором лучшего, дольше и качественнее |

**Пример запроса** (`-N` — потоковый ответ):

```bash
curl -N -X POST "https://specbuilder.vnimanie.ai/api/projects/a1b2c3d4-.../doc-content/generate-all?quality=fast" \
  -H "Authorization: Bearer tak_..."
```

**Пример потока** (события — из `server/services/docGenerator.js`):

```
event: progress
data: {"total":6,"completed":0,"phase":"start"}

event: progress
data: {"total":6,"completed":0,"current":"node-1","currentLabel":"Бизнес-цель"}

event: chunk
data: {"nodeId":"node-1","text":"## Контекст\n..."}

event: saved
data: {"nodeId":"node-1","version":2,"contentLength":1240}

event: progress
data: {"total":6,"completed":1,"current":"node-3","currentLabel":"Сбор данных"}

event: all_done
data: {"total":6}
```

`progress` отмечает переход к следующему блоку (поля `completed`/`total`/`current`); внутри блока идут те же `chunk`/`saved`, что и в [генерации одного блока](generate-block.md#design-doc-generate-block). Завершение всего прогона — событие `all_done`. Если обнаружены циклы в графе, придёт `warning` (порядок может быть неоптимальным), есть и потолок на число блоков за прогон. Обрыв соединения = `AbortController` на сервере: запускается пауза, придёт `paused` с числом готовых блоков — затем поток можно возобновить с `resume=1`. Ошибки отдельных блоков — `block_error`, общий сбой — `error`. Поток — SSE, не JSON и не Markdown.

<!-- gen:start:related -->
## Связанные
- [Конвенции](../../../shared/conventions.md#conventions) · [Роли](../../../shared/roles.md#roles) · [Ошибки](../../../shared/errors.md#errors) · [Глоссарий](../../../shared/glossary.md#glossary)
<!-- gen:end:related -->

---

Human view: https://docs.vnimanie.ai/specbuilder/v1/domains/design-doc/api/generate-all/