From 8a29b5889797f395fc7d60263147b7c051dc0c0b Mon Sep 17 00:00:00 2001 From: "s.zotov" Date: Sun, 12 Apr 2026 20:26:02 +0000 Subject: [PATCH] Add "Architecture" --- Architecture.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Architecture.md diff --git a/Architecture.md b/Architecture.md new file mode 100644 index 0000000..ffa5fec --- /dev/null +++ b/Architecture.md @@ -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` — кастомный шаблон блока