Версия: 1.0
Источник: ТЗ 4 компонента v2.0
Дата: 2026-03-07
┌─────────────────────────────────────────────────────────┐
│ КЛИЕНТЫ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Мобильное │ │ Веб-app │ │ PWA (буфер) │ │
│ │ (прораб, │ │ (директор, │ │ для прораба │ │
│ │ бригадир) │ │ инженер,ПТО)│ │ офлайн │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
└─────────┼─────────────────┼─────────────────┼──────────┘
└─────────────────┼─────────────────┘
↓
API GATEWAY + AUTH (JWT, 5 ролей)
↓
┌─────────────────────────────────────────────────────────┐
│ BACKEND СЕРВИСЫ (Node.js) │
│ Projects │ Storage │ Chat │ Notifications │ Reports │
└─────────────────────────┬───────────────────────────────┘
↓
PostgreSQL + S3 + Redis + Elasticsearch
Обслуживает все остальные компоненты. Фото с GPS/watermark, документы, сертификаты, чертежи.
Статический. Каталог операций, инструкции, чек-листы, нормативы. Читается Процессом.
Живой, по каждому объекту. Обследование → Ордер → Этапы → Работы → Приёмка → ИД.
Параллельный. Читает данные из Процесса. Контракт, смета, закупки, КС-2/КС-3.
| Уровень | Содержание | Статус |
|---|---|---|
| 1 — ЯДРО | БД + авторизация + JWT + роли | ⏳ В работе |
| 2 — ПРОЦЕСС | Проекты, этапы, чек-листы, приёмка | — |
| 3 — ФАЙЛЫ | Загрузка фото, watermark, хранилище | — |
| 4 — КОММУНИКАЦИИ | WebSocket чат, Web Push уведомления | — |
| 5 — PWA | manifest.json, Service Worker, офлайн | — |
| 6 — ОТЧЁТНОСТЬ | PDF фотоотчёт, ИД-пакет, реестр | — |
| 7 — КОММЕРЦИЯ | Биллинг, онбординг, мультитенант | — |
pusk-backend/
├── server.js ← Express сервер
├── database.js ← SQLite схема + миграции
├── routes/
│ ├── auth.js ← /login /logout /invite /me
│ ├── users.js ← пользователи, роли
│ └── org.js ← организация, настройки
├── middleware/
│ ├── auth.js ← JWT-проверка
│ └── roles.js ← проверка прав
└── package.json
pusk-frontend/
├── index.html
├── app.js
├── screens/
│ ├── Login.jsx
│ ├── Dashboard.jsx
│ └── ...
└── api.js ← вызовы к бэкенду
docker-compose.yml
nginx.conf
MVP: SQLite — встроенная, не нужен отдельный сервер. Переход на PostgreSQL — замена одной строки конфига.
Watermark на фото: Node.js + sharp — наложение на каждое фото: [Логотип] [Объект] | [GPS] [Дата/время] [ФИО]
Офлайн: Service Worker кэширует фото при плохом интернете, загружает при появлении связи.
Ключевая дифференциация — адаптация под любую нишу без изменения кода. В архитектуру заложены хуки:
- Конфигурируемые этапы и их порядок
- Кастомные чек-листы по типу работ
- Шаблоны отчётов
- Расширяемые роли и права
Спецификация: требует отдельного документа DESIGN-yaml.md (не написан).