Add "Architecture"

2026-04-12 20:26:02 +00:00
parent d7b2b93714
commit 8a29b58897

67
Architecture.md Normal file

@@ -0,0 +1,67 @@
# Архитектура проекта
## Структура директорий
```
VA.ASPEKTER/
├── z51-pug-builder/ # Основное приложение
│ ├── vite.config.js # Backend API (~1400 строк, Vite middleware)
│ ├── src/
│ │ ├── App.svelte # Монолитный UI (~6500+ строк)
│ │ ├── app.css # Стили
│ │ ├── main.js # Entry point
│ │ └── lib/
│ │ ├── api.js # API клиент
│ │ ├── parsing.js # Парсинг Pug-шаблонов
│ │ └── spellcheck.js # Проверка орфографии
│ ├── public/ # Статика (favicon, Block.pug)
│ ├── data/ # Данные проекта (не в git)
│ ├── Dockerfile
│ └── package.json
├── email-gen/ # Pug-шаблоны писем (репо коллег)
│ └── emails/
│ ├── includes/mixins.pug # Общие миксины
│ └── vipavenue/ # Шаблоны VipAvenue
│ ├── parts/ # Header/Footer
│ └── letters/ # Сгенерированные письма
├── deploy/
│ ├── email-gen-api/ # Сервис рендера Pug → HTML
│ │ ├── server.js
│ │ └── Dockerfile
│ ├── nginx/ # Конфиг nginx
│ └── scripts/ # Скрипты деплоя
├── docker-compose.yml # Dev окружение
└── docker-compose.prod.yml # Prod окружение
```
## Цепочка рендера
```
App.svelte (блоки → PUG-код)
↓ POST /api/project/vipavenue/render-email
vite.config.js (записывает let.pug, html.pug)
↓ HTTP POST к email-gen-api
email-gen-api:8787 (Pug → HTML, inlines CSS)
vite.config.js (кэш, Mindbox-теги, nowrap, фид)
App.svelte (iframe srcdoc → превью)
```
## Аутентификация
- scrypt хеширование паролей
- Cookie `va_token`, HttpOnly, SameSite=Strict, Secure
- Сессии в памяти + файл `_system/sessions.json`
- TTL 7 дней
- Роли: `admin` (полный доступ к настройкам) / `user`
## Хранение данных
Файловая БД в `data/vipavenue/`:
- `settings.json` — настройки проекта (FTP, feedUrl, genderPaths)
- `letters.json` — индекс писем
- `letters/*.json` — данные каждого письма (блоки, тема, дата)
- `drafts/*.json` — черновики по юзерам
- `presets.json` — пресеты блоков
- `block.pug` — кастомный шаблон блока