refine scheme implementation

This commit is contained in:
2026-02-14 01:03:15 +03:00
parent 91ff1642dc
commit 59558784f6
5 changed files with 905 additions and 0 deletions

View File

@@ -0,0 +1,121 @@
@startuml Редактирование счета на оплату
!pragma teoz true
title AS IS Редактирование счета на оплату (флоу из ТЗ COMPRO-3467)
actor "Пользователь (АРМ)" as User
participant "Frontend (АРМ)" as Front
participant "Gateway (Прокси)" as Gateway
participant "OMS-Documents (метаданные)" as Docs
participant "Хранилище (S3)" as S3
participant "OMS-Print (конвертация)" as Print
participant "Редактор (Tiptap)" as Editor
== 1. ИНИЦИАЦИЯ РЕДАКТИРОВАНИЯ (ПОЛУЧЕНИЕ HTML) ==
User -> Front: Клик "Редактировать счет" (актуальный)
activate Front
Front -> Gateway: GET /documents/v1/invoice/{id}/html
activate Gateway
Gateway -> Docs: Запрос docURL для invoiceID
activate Docs
Docs --> Gateway: docURL (ссылка на PDF в S3)
deactivate Docs
Gateway -> S3: Запрос PDF файла по docURL
activate S3
S3 --> Gateway: PDF файл счета
deactivate S3
Gateway -> Print: Конвертация PDF в HTML (вызов метода)
activate Print
Print --> Gateway: HTML файл счета
deactivate Print
Gateway --> Front: HTML файл (ответ 200)
deactivate Gateway
Front -> Editor: Инициализация редактора с HTML
activate Editor
Editor --> Front: Готово
deactivate Editor
Front --> User: Открыто окно редактора
deactivate Front
== 2. РЕДАКТИРОВАНИЕ И СОХРАНЕНИЕ НОВОЙ ВЕРСИИ ==
User -> Editor: Вносит изменения (текст, таблицы)
activate Editor
Editor --> User: Изменения отображены
User -> Editor: Клик "Сохранить"
Editor -> Front: Передача измененного HTML
deactivate Editor
activate Front
Front -> Gateway: POST /documents/v1/invoice/{id}/html\n{ "html": "..." }
activate Gateway
Gateway -> Print: Конвертация HTML в PDF
activate Print
Print --> Gateway: Новый PDF файл
deactivate Print
Gateway -> S3: Сохранение нового PDF файла
activate S3
S3 --> Gateway: newDocURL (ссылка на новый файл)
deactivate S3
Gateway -> Docs: Создание новой версии записи\n(новый docURL, isSend:false, обновленные Base/Details)
activate Docs
Docs --> Gateway: OK (новая версия создана)
deactivate Docs
Gateway --> Front: 204 No Content (Успех)
deactivate Gateway
== 3. ОБНОВЛЕНИЕ ИНТЕРФЕЙСА ==
Front -> User: 1. Закрывает редактор\n2. Уведомление "Счет изменен"
Front -> Gateway: Вызов getInvoiceLatest (перезапрос)
activate Gateway
Gateway -> Docs: Запрос последней версии счета
activate Docs
Docs --> Gateway: Данные обновленного счета (с newDocURL)
deactivate Docs
Gateway --> Front: Данные обновленного счета
deactivate Gateway
Front -> User: Обновляет отображение во вкладке "Счет на оплату"
deactivate Front
@enduml
@startuml
@enduml
@startuml
title TO BE Логика расчета НДС
actor "Триггер" as User
participant "OMS" as OMS
participant "NDS" as NDS
User -> OMS: Создание спеки / счета на оплату / триггер ПМП
OMS --> OMS: Заполнение необходимых данных (Блок КА, блок доставок,\nшапка документа и т.д. в зависимости от типа документа)
OMS -> NDS: Вызывает метод: nds/vat_calc в сервисе NDS
alt Если вернулся nds_calc = nds_reverse || nds_calc = nds_direct
OMS -> NDS: Запрашашивает НДС и производные
NDS --> OMS: answer
OMS --> OMS: Подставляет НДС и производные из ответа сервиса NDS
else Если вернулся nds_calc = self
OMS --> OMS: Рассчитывает НДС и производные по формуле (UnitPrice*20)/120\n(как и было)
end
OMS --> User: answer
@enduml