97 lines
4.0 KiB
Plaintext
97 lines
4.0 KiB
Plaintext
---
|
|
description:
|
|
globs:
|
|
alwaysApply: false
|
|
---
|
|
|
|
# Структура файлов шаблонов документов и алгоритм правки
|
|
|
|
## Основные директории и файлы
|
|
|
|
### 1. Определение типов и интерфейсов (cooptypes)
|
|
**Путь:** `/cooptypes/src/cooperative/registry/[ID.DocumentName]/index.ts`
|
|
|
|
В этих файлах определяются:
|
|
- Интерфейсы данных (`IAgendaMeet`, etc.)
|
|
- Основная модель данных документа (`Model`)
|
|
- HTML шаблон документа (`context`)
|
|
- Переводы строк (`translations`)
|
|
- Пример данных для тестирования (`exampleData`)
|
|
|
|
**Для изменения шаблона нужно править:**
|
|
- Интерфейсы модели данных при изменении структуры
|
|
- HTML в переменной `context` для изменения внешнего вида
|
|
- Строки переводов в `translations.ru`
|
|
|
|
### 2. Схемы валидации (factory)
|
|
**Путь:** `/factory/src/Schema/[SchemaName].ts`
|
|
|
|
Содержат:
|
|
- JSON схемы для валидации данных
|
|
- Определение обязательных полей
|
|
|
|
**При изменении структуры данных:**
|
|
- Обновите соответствующую схему валидации
|
|
- Обновите список обязательных полей в `required`
|
|
|
|
### 3. Фабрики документов (factory)
|
|
**Путь:** `/factory/src/Actions/[ID.DocumentName].ts`
|
|
|
|
Обрабатывают:
|
|
- Получение данных из разных источников
|
|
- Сборку модели для шаблонизатора
|
|
- Валидацию данных по схеме
|
|
- Генерацию PDF
|
|
|
|
**При изменении логики сборки документа:**
|
|
- Обновите метод `generateDocument()`
|
|
- Добавьте новые источники данных
|
|
|
|
### 4. Шаблоны (factory)
|
|
**Путь:** `/factory/src/Templates/[ID.DocumentName].ts`
|
|
|
|
Связывают:
|
|
- Шаблон из cooptypes
|
|
- Схему валидации
|
|
- Метаданные документа
|
|
|
|
**После изменения в cooptypes:**
|
|
- Убедитесь, что схема в Templates соответствует новой модели
|
|
|
|
### 5. Тесты (factory)
|
|
**Путь:** `/factory/test/[category].test.ts`
|
|
|
|
Содержат:
|
|
- Тестовые данные для генерации документов
|
|
- Вызовы функции `testDocumentGeneration`
|
|
|
|
**После внесения изменений:**
|
|
- Обновите тестовые данные в соответствии с новой структурой
|
|
- Запустите тесты командой `pnpm test`
|
|
|
|
## Алгоритм внесения изменений
|
|
|
|
1. **Модификация типов**
|
|
- Изменить файл в `/cooptypes/src/cooperative/registry/[ID.DocumentName]/index.ts`
|
|
- Обновить интерфейсы, шаблон HTML и переводы
|
|
|
|
2. **Обновление схемы валидации**
|
|
- Изменить соответствующую схему в `/factory/src/Schema/`
|
|
- Убедиться, что обязательные поля совпадают с интерфейсом
|
|
|
|
3. **Компиляция библиотеки типов**
|
|
- Выполнить `cd /cooptypes && pnpm build`
|
|
|
|
4. **Обновление тестовых данных**
|
|
- Привести тестовые данные в соответствие с новой структурой
|
|
|
|
5. **Запуск тестов**
|
|
- Выполнить `cd /factory && pnpm test [filename].test.ts`
|
|
|
|
## Особенности шаблонизации
|
|
|
|
- Используется Nunjucks для шаблонов
|
|
- Поддерживаются конструкции: `{% if %}`, `{% for %}`, `{% trans %}`
|
|
- Переменные вставляются через `{{ variable }}`
|
|
- Переводы через `{% trans 'KEY' %}`
|