Appearance
Collatio
Согласование документов. UI: «Согласование», путь /collatio (сайдбар, как Консьерж). Данные scoped по выбранному пространству. Секция ACL: collatio. Ключ карточки: CLT-N.
Порты
| Порт | Назначение |
|---|---|
| 8108 | HTTP REST (PM2) |
| 18108 | Docker host |
- БД:
collatio_db - Gateway:
/proxy/collatio/
Назначение
Отдельный сервис, не конфиг Task Tracker. Маршрут — versioned graph (как pipeline templates): raw ng-diagram JSON, save = новая версия. Узлы: startNode, stageNode, endNode. Ребро этапа на endNode — нет следующих этапов → карточка approved. Задача снимает snapshot этапов в цикл. Процесс уходит в архив (archived_at), не удаляется: скрыт из пикера, новые карточки с него нельзя стартовать, текущие циклы живут на snapshot. EnsureDefault считает и архивные — иначе после архива последнего процесса снова появляется «Договор».
Статусы: new, in_review, approved, rework, rejected, completed, hold.
Решения этапа (approved / rework / rejected) append-only. rework сразу переводит карточку; rejected ждёт закрытия этапа. Hold / Complete / новый цикл — только инициатор.
Рабочие дни: weekday hours минус hold_seconds, / 8. Праздников нет.
Обсуждение — messaging (collatio / collation). Резолюция хранится на collation_decisions.
API
База: /api/v1/collatio — JWT + секция collatio. Без space_id в пути. view — свои карточки (инициатор или исполнитель этапа), старт (POST /), решение участника (POST /:id/decisions), повторный цикл и замена файла на доработке (POST /:id/cycles, PATCH /:id). GET /routes без графа. edit — ещё граф процесса, мутации /routes/:id и удаление любой карточки (DELETE /:id).
Список: q (title/key), scope (active = new/in_review/rework/hold, history = approved/rejected/completed, inbox = ждёт решения текущего пользователя), status, document_type, participant_id, created_from.
GET /stats читает rollup-таблицы (collation_stat_spaces, _users, _routes, _route_users), не живые карточки. Счётчики пишутся на create / decide / hold / resume / complete / delete. Ответ: KPI, by_status, by_route[] (by_status, slowest_user_id, slowest_wait_days), people[] отсортированы по суммарному времени на этапе (wait_days, плюс max_wait_days / avg_wait_days; открытые waiting этапы добавляются в сумму). Время — раб. дн. = секунды / 8ч. Пустой rollup при наличии карточек пересобирается один раз.
GET/POST /
GET /inbox
GET /stats
GET /key/:key
GET/PATCH/DELETE /:id PATCH — файлы, только инициатор на `rework`
POST /:id/decisions
POST /:id/hold
POST /:id/resume
POST /:id/complete
POST /:id/cycles
GET /:id/analytics
GET /:id/history
GET /types
GET/POST /routes ?archived=1 — архив
GET/PATCH/DELETE /routes/:route_id DELETE = архив
POST /routes/:route_id/archive
POST /routes/:route_id/restore
POST /routes/:route_id/templates
GET /routes/:route_id/templates
GET /routes/:route_id/templates/:versionS2S: GET /api/v1/internal/access (RequireService) для messaging.
Swagger: /swagger/index.html
События
| Subject | Когда |
|---|---|
collatio.created | Карточка создана |
collatio.status_changed | Смена статуса |
collatio.decision | Решение этапа |
collatio.stage_queued | Этап в очереди |
collatio.deleted | Удаление (каскад messaging) |
NATS Bridge: collatio.> → namespace collatio.
Notifications: collatio.assigned на stage_queued (исполнители этапа, link = /collatio/:key), плюс collatio.status_changed / collatio.rework / collatio.completed наблюдателям.
Env
| Переменная | По умолчанию | Назначение |
|---|---|---|
PORT | 8108 | HTTP. Docker host: COLLATIO_PORT (18108) |
DB_NAME | collatio_db | PostgreSQL |
JWT_SECRET | — | Подпись JWT |
SERVICE_TOKEN | — | S2S |
MESSAGING_URL | nats://localhost:4222 | NATS |
SPACES_SERVICE_URL | http://localhost:8092 | Проверка пространства |
Gateway / messaging ACL: COLLATIO_SERVICE_URL (http://localhost:8108).
Интеграции
- Storage категория
collatio - Messaging comment_resources
collatio/collation - Auth секция
collatio