Initial commit

This commit is contained in:
tkachenko committed 2026-10-09 01:45:17 +00:00
commit 41d230d524
163 files changed
+11500

No files matched your search

@@ -0,0 +1,39 @@
# Модуль: Организация
**Ответственность**: описывает единый нормализованный профиль юридического лица и его фирменных ресурсов.
**Расположение**: `.template/lib/domain/company.typ`
## Публичный интерфейс
| Символ | Тип | Описание |
|--------|-----|----------|
| `company-profile()` | конструктор dictionary | Создаёт профиль из секций `legal`, `contacts`, `banking`, `brand`, `director`, `resources` |
| `validate-company()` | функция | Проверяет обязательные реквизиты и типы необязательных полей |
| `company-display-name()` | чистая функция | Возвращает полное или краткое наименование по политике профиля |
| `company-resource()` | чистая функция | Возвращает нормализованное значение ресурса из уже построенного profile |
## Зависимости
| Модуль | Что использует |
|--------|----------------|
| Нет | Domain не читает JSON и не строит пути |
## Инварианты
- `id`, полное наименование и юрисдикция заданы.
- ИНН/КПП/ОГРН и БИН/КБЕ хранятся как строки, чтобы не терять ведущие нули и формат.
- Контактные и банковские поля имеют единые ключи для всех компаний; неприменимое поле равно `none`.
- Brand color нормализован до color до передачи renderer.
- Логотип, подпись и печать имеют значение `none`, `path` или готовый content; произвольная строка после infrastructure-нормализации не допускается.
- Director содержит должность и ФИО; ресурсы подписи и печати хранятся отдельно и не задают координаты на странице.
## Намеренно НЕ обрабатывает
- Поиск компании по содержимому документа.
- Чтение `.template/companies/` и `.private/`.
- Отрисовку логотипа, подписи, печати и реквизитов.
- Валидацию законодательства конкретной юрисдикции.
## Заметки для агента
> Существующие JSON-файлы отличаются по набору полей. Нормализуйте их через infrastructure, не добавляйте условные ключи в renderer. Для РФ и Казахстана используйте общую структуру с `none` для неприменимых идентификаторов. Не переносите пользовательские изображения в CompanyProfile.