[C28-50][@ant] feat(factory): перенести инфру doc_data из marketplace2 (приватные данные документа off-chain)
Typecheck / desktop (pull_request) Failing after 8m40s
Typecheck / controller (pull_request) Failing after 8m0s

Выборочный перенос переиспользуемого паттерна doc_data из marketplace2
(исходный коммит 10158b5b33, 598-8) — БЕЗ marketplace-документов 1102/1103,
которых нет в dev (их cooptypes-реестры и controller-сервисы тянули конфликты
modify/delete и сломали бы сборку). 1102/1103 придут штатно при мерже marketplace2.

Что такое doc_data: приватные поля документа (реквизиты/ПДн) сохраняются в Mongo
(коллекция doc_private_data) через DocDataService.save(payload, registry_id) →
{hash}; on-chain в meta публикуется только doc_data_hash (sha256). При генерации
фабрика подгружает payload по хэшу и отдаёт шаблону под зарезервированной
переменной {{ doc_data.* }}. Так реквизиты в блокчейн не попадают, но документ
регенерируем и верифицируем по слепку.

Перенесено (идентично marketplace2 — будущий мерж без конфликтов):
- factory: Services/DocData + обвязка Factory/index.ts (saveDocData/getDocData) +
  реэкспорт в Services/Databazor + Generator.saveDocData/getDocData в src/index.ts;
- controller: GeneratorPort/GeneratorInfrastructureService/DocumentDomainService —
  проброс saveDocData/getDocData;
- cooptypes: IDocDataRef { doc_data_hash } в модели документа.

cooptypes build + factory typecheck/build зелёные. Контур: следующим шагом
перенастроить СЗ-2010 на doc_data для реквизитов (отдельной задачей).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
coopops
2026-06-14 13:15:15 +00:00
parent 245a8fbd1d
commit c69f0f24d8
12 changed files with 350 additions and 1 deletions
@@ -112,6 +112,18 @@ export interface IGenerate extends Omit<Partial<IMetaDocument>, 'title'> {
[key: string]: any
}
/**
* Зарезервированная ссылка на приватный payload документа.
* Action конкретного документа расширяет этот интерфейс, если хочет
* хранить персональные/приватные данные off-chain — payload лежит в
* коллекции `doc_private_data` фабрики, on-chain публикуется только
* `doc_data_hash`. См. раздел «Document Generation Pattern: doc_data»
* в архитектуре.
*/
export interface IDocDataRef {
doc_data_hash?: string
}
/**
* Интерфейс генерации заявления на вступление в кооператив
*/