Skip to content

Флоу ​

Это короткая карта сквозных пользовательских процессов. Подробные правила каждого контура вынесены в отдельные концепции, а точные HTTP-контракты — в Scalar API Reference.


Проектный флоу ​

Админ: "Настраиваю пользователей, отделы, должности и роли"
    ↓
Менеджер: "Создаю компанию, контакт и проект"
    ↓
Менеджер: "Загружаю ТЗ и создаю спецификацию"
    ↓
Менеджер: "Формирую команду или создаю team request"
    ↓
Команда: "Создает задачи и запускает work sessions"
    ↓
Задачи: "pause/finish создают auto time entries"
    ↓
Логистика: "Оборудование оформляется через equipment requests и logistics"
    ↓
Trips: "Командировки создают задачи и travel cost items"
    ↓
Finance: "Cost items агрегируются в budget summary"
    ↓
Documents: "Генерируются смета, счет, договор, акт"
    ↓
Менеджер: "Проект проходит done -> closed"

Ключевые backend-правила:

  • проектные статусы: planned -> estimating -> approved -> in_progress -> done -> closed, отдельно cancelled;
  • задача закрывается через POST /api/v1/tasks/:id/finish, а не прямым PATCH в done;
  • GET /api/v1/tasks/active-sessions — открытые рабочие сессии текущего пользователя (задача, проект, начало): таймер в шапке интерфейса; пауза и завершение — теми же POST /tasks/:id/pause|finish;
  • GET /api/v1/tasks и GET /api/v1/tasks/:id отдают allowed_statuses — куда текущий пользователь может перевести задачу: по матрице переходов (todo → in_progress/blocked/cancelled, in_progress → blocked/done/cancelled, blocked → in_progress/cancelled; done и cancelled конечные), администратор — в любой статус. Интерфейс показывает только эти статусы и не держит свою копию матрицы;
  • budget читает finance.cost_items;
  • закрытый проект запрещает новые финансовые строки.

CRM-флоу ​

  1. Создать компанию: POST /api/v1/companies.
  2. Создать контакт: POST /api/v1/contacts.
  3. Связать контакт с компанией: POST /api/v1/companies/:id/contacts.
  4. Добавить реквизиты: POST /api/v1/requisites.
  5. Создать проект с company_id и contact_id.
  6. В карточке использовать /api/v1/entities/:type/:id/related, чтобы показать связанные проекты, контакты, реквизиты и произвольные links.

Подробнее: Клиенты и контакты.


Коммуникационный флоу ​

  1. Глобальный список: GET /api/v1/chats.
  2. Direct/group чат создается пользователем через POST /api/v1/chats.
  3. Project chat создается бизнес-логикой проекта/команды.
  4. Task chat создается или возвращается через GET /api/v1/tasks/:id/chat.
  5. Сообщения отправляются через /api/v1/chats/:id/messages или /api/v1/tasks/:id/chat/messages.
  6. Открытый чат обновляется через /ws/chat.
  7. Notification badge обновляется через /ws/notifications.

Подробнее: Система чатов, Система уведомлений.


Логистический флоу ​

  1. Менеджер создает заявку на оборудование в проекте.
  2. Finance согласует сумму, если используется legacy-flow equipment request.
  3. Логист запрашивает source-options.
  4. Логист собирает operation-plan/preview.
  5. operation-plan/confirm создает дочерние logistic_operations.
  6. Маршрут подтверждается через /api/v1/logistics/:id/confirm.
  7. Финансы согласуют сумму операции через /finance/approve.
  8. Логистика ведет статусы до closed.
  9. Оборудование меняет фактическую локацию, Finance получает cost item.

Подробнее: Логистический контур.


Финансово-документный флоу ​

  1. Автоматические источники и ручной ввод создают finance.cost_items.
  2. GET /api/v1/projects/:id/budget группирует строки и применяет наценку.
  3. POST /api/v1/projects/:id/documents/estimate создает смету.
  4. invoice и act участвуют во взаиморасчетах.
  5. payments фиксирует факт денег и allocations по документам.
  6. Отчеты ДДС, дебиторки и НДС строятся по completed-платежам.

Подробнее: Система бюджета, Касса и платежи, Система документов.


Граница с API ​

В этом разделе не нужно вручную держать полные JSON-схемы. Для точных контрактов используйте:

  • Scalar API Reference;
  • docs/assets/data/endpoints.json;
  • docs/assets/data/openapi.json;
  • исходные DTO в internal/modules/*/transport_http.go.

Загружаем документацию…