Центральная сущность — объект ремонта клиента.
| Поле | Тип | Описание |
|---|
| name | string | Название проекта |
| address | string | Адрес объекта |
| status | enum | active / archived |
| assigned_manager | FK → managers | Назначенный менеджер |
| deadline | date | Срок завершения |
Прогресс и «текущий этап» вычисляются из коллекции stages (status=‘active’ / count(done)) — отдельных полей-счётчиков на projects нет.
| Поле | Тип | Описание |
|---|
| project_id | FK → projects | Проект |
| name | string | Название этапа |
| order | int | Порядковый номер |
| status | enum | pending / active / done |
| Поле | Тип | Описание |
|---|
| chat_id | FK → chats | Чат |
| sender_type | enum | client / manager |
| text | text | Текст сообщения |
| attachments | M2M → files | Вложения |
| Поле | Тип | Описание |
|---|
| project_id | FK → projects | Проект |
| amount | decimal | Сумма |
| due_date | date | Дата оплаты |
| status | enum | pending / paid / overdue |
projects ←→ directus_users (M2M через projects_users)
projects → managers (FK: assigned_manager)
projects → payments (O2M)
projects → documents (O2M)
projects → receipts (O2M)
projects → photo_categories (O2M)
managers → directus_users (FK: user_id)
Полная модель с TypeScript-типами: dimetra-claude/docs/DATA_MODEL.md