Перейти к содержимому

Шаблон маппинга

Шаблон описания маппинга данных между системами.

Шаблон маппинга

Маппинг описывает, как данные преобразуются между источником и получателем: UI -> API, REST -> gRPC, API -> БД, система A -> система B, событие -> внутренняя модель.

Паспорт маппинга

ПолеЗначение
Название<название>
Источник<система / API / БД / UI>
Получатель<система / API / БД / UI>
Направление<source> -> <target>
Сценарий<UC / FR>
Версияv1.0
СтатусDraft / Review / Approved

Назначение

Опишите, зачем нужен маппинг.

Контекст взаимодействия

Frontend -> BFF REST API -> Backend gRPC -> Database

Общие правила преобразования

IDПравило
MAP-RULE-001Если поле отсутствует и не является обязательным, в target оно не передается.
MAP-RULE-002Если обязательное поле отсутствует, вернуть ошибку валидации.
MAP-RULE-003Даты передаются в формате ISO 8601.
MAP-RULE-004Пустые строки обрабатываются как null, если не указано иное.
MAP-RULE-005Значения enum преобразуются по таблице соответствия.

Маппинг полей

Source pathSource typeTarget pathTarget typeОбяз.Правило преобразованияDefaultКомментарий
body.contractIdstringrequest.contract_idstringДаПередать без измененийID договора
body.reasonCodestringrequest.reason_codestringДаПо справочнику ReasonCodeПричина
body.commentstringrequest.commentstringНетTrim, max 1000nullКомментарий
headers.X-Correlation-Idstringmetadata.x-correlation-idstringДаПередать без измененийСгенерироватьТрассировка

Таблица соответствия enum

Source valueTarget valueОписание
CLIENT_REQUESTCLIENT_INITIATEDИнициатива клиента
ERROR_CORRECTIONCORRECTIONИсправление ошибки

Маппинг ошибок

Source errorTarget errorHTTP / gRPC statusТекст
CONTRACT_NOT_FOUNDCONTRACT_NOT_FOUND404 / NOT_FOUNDДоговор не найден
INVALID_STATUSINVALID_STATE409 / FAILED_PRECONDITIONНедопустимый статус
VALIDATION_ERRORINVALID_ARGUMENT422 / INVALID_ARGUMENTПроверьте данные

Валидации до маппинга

IDПолеПроверкаОшибка
VAL-001body.contractIdОбязательноCONTRACT_ID_REQUIRED
VAL-002body.reasonCodeЗначение есть в справочникеINVALID_REASON_CODE

Правила null / empty

Source valueTarget valueКомментарий
nullnullЕсли поле необязательное
""nullЕсли пустая строка не имеет смысла
[][]Если пустой список допустим
Поле отсутствуетНе передаватьЕсли target допускает отсутствие

Пример source

{
  "contractId": "123456",
  "reasonCode": "CLIENT_REQUEST",
  "comment": "Заявление клиента"
}

Пример target

{
  "contract_id": "123456",
  "reason_code": "CLIENT_INITIATED",
  "comment": "Заявление клиента"
}

Диаграмма

@startuml
participant "Source" as S
participant "Mapper" as M
participant "Target" as T
S -> M: Source payload
M -> M: Validate source
M -> M: Transform fields
M -> T: Target payload
T --> M: Result
M --> S: Response
@enduml

Открытые вопросы

IDВопросКому адресованСтатус
Q-001<вопрос><роль / ФИО>Открыт

Критерии приемки документа

IDКритерий
AC-DOC-001Документ согласован с владельцем продукта / архитектором / разработкой, если применимо.
AC-DOC-002Все спорные места вынесены в открытые вопросы или зафиксированы как ограничения.
AC-DOC-003В документе нет неоднозначных формулировок вроде “быстро”, “удобно”, “корректно” без измеримого критерия.