Раздел 5 · Модуль 3
Submission Engine
Сбор отчётности: Task Manager на стороне регулятора и Form Filler в кабинете организации. Связаны только по HTTP.
Корень: submission_engine/. Две независимые связки FastAPI+Vue, обе зависят от DG (8000) и Form Builder (8100).
5.1 · Task Manager (регулятор) — 8200 / 5175
Назначение: создать задание на сбор, назначить организациям, мониторить, согласовать/отклонить отчёты, консолидировать, вести DQ-правила.
Данные (БД task_manager)
| Таблица | Назначение |
|---|---|
report_task | Задание: template_id/template_version (согласованный шаблон FB), период, deadline, target_system (дефолт «FNS»), status. |
task_assignment | Связь задание↔организация, свой status. |
task_target_config | Таргетинг: all / org_type / organization. |
report_submission | Присланный отчёт: payload (JSON), status (дефолт review), поля ревью. |
report_submission_snapshot | Неизменяемая копия на каждую подачу. |
term_quality_rule | DQ-правило, привязанное к термину DG (см. DQ Checks). |
API: /tasks, /tasks/assignments, /tasks/submissions, /tasks/submissions/{id}/decision, /tasks/submissions/{id}/export (XLSX), /monitoring/summary, /dq/term-rules (CRUD), /dq/term-rules/usage, /dq/submissions/{id}/checks.
Страницы: Дашборд, Назначения, Организации, Мониторинг, Согласование, Консолидированный отчёт, Проверки качества, История слепков.
Доступ: декодирует JWT-подобный токен (base64, без проверки подписи) — роли + submission_access (view_all / region_ids / org_type_ids / organization_ids — региональная фильтрация).
5.2 · Form Filler (кабинет организации) — 8300 / 5176
Назначение: организация тянет свои задания, заполняет форму, подписывает электронной подписью, отправляет обратно в Task Manager.
Данные (БД form_filler)
| Таблица | Назначение |
|---|---|
local_task | Зеркало задания из Task Manager. |
local_instance | Заполняемый отчёт: form_data (JSON), completion_percentage, status (жизненный цикл) + local_status (синхронизация), подпись. |
sync_queue | Очередь офлайн-повторов при неудачной отправке. |
local_submission_snapshot | Локальная копия отправленного. |
API: /auth/login (выбор организации из справочника DG, без пароля), /reports/my, /reports/{id}, /reports/{id}/dg-context, /filling/{id}/save, /signing/{id}/sign, /submission/{id}/send, /sync/tasks/pull, /sync/queue/process.
Страницы: Вход, Мои отчёты, Заполнение отчёта, История. Импорт/экспорт таблиц через npm xlsx.
5.3 · Как связаны Task Manager ↔ Form Filler
Всё по HTTP. Form Filler хранит base-URL Task Manager.
- Pull (TM→FF):
sync_tasksтянет/tasks/assignments+/tasks, фильтрует по организации, создаётlocal_task+local_instance, синхронизирует статус. - Push (FF→TM):
_push_submission_to_task_managerшлётPOST /tasks/submissionsсpayload. Успех → снимок; ошибка →sync_queueна повтор. - Решение (TM→FF): решение меняет записи только в TM; организация видит новый статус при следующем
sync/tasks/pull. - Консолидация — клиентская (
ConsolidatedReportView.vue, XLSX в браузере). Отдельного backend-эндпоинта консолидации нет; на backend — только per-submission XLSX черезopenpyxl.