2.7 KiB
2.7 KiB
V2 Unified Architecture — v0.5.105 (2026-06-15)
Как устроено
/v2/app — единый интерфейс
│
├── Юзер (isAdmin=false)
│ └── dropdown: свои компании из IAM (profiles[])
│
├── Админ (WZ01112, isAdmin=true)
│ ├── dropdown: все компании из БД
│ ├── свои помечены (личное)
│ └── email помечен (админ)
│
└── CRUD — одинаковый для обоих
└── crud.list/add/edit/remove(clientId)
Слои
| Слой | Файл | Что |
|---|---|---|
| CRUD API | v2/src/crud/index.js |
Чистые функции, clientId → БД |
| SQL | v2/src/db/queries.js |
Все запросы, транзакции |
| Роутер | v2/src/user/index.js |
Express, сессия → crud |
| Шаблон | views/v2/user.ejs |
EJS, единый для всех |
Компании
clientId(W-номер) →company_id(внутренний PK) черезgetOrCreateCompany- По умолчанию: активный профиль из IAM (
is_active_profile=true) - Админ может переключиться на любую компанию (
?switchTo=W***) - Юзер — только на свои
История версий (новые сверху)
- 0.5.139 — ширина столбцов: CIDR 125px, комментарий широкий, Правка вместо Редактирование
- 0.5.138 — CSP script-src-attr 'unsafe-inline' → onchange заработал
- 0.5.137 — onchange + console.log для проверки
- 0.5.136 — ↺ зелёная, deleted сохраняется после restore/delete
- 0.5.135 — UI таблицы: разделение столбцов, 💾, размеры
- 0.5.134 — восстановление записей (restore), кнопка удалённых, время МСК
- 0.5.133 — type=submit на кнопке удаления
- 0.5.132 — ADMIN_EMAIL в resolveContext для всех
- 0.5.131 — isAdmin при имперсонации по ADMIN_EMAIL
- 0.5.130 — имперсонация не сохраняет isAdmin от оригинала
- 0.5.129 — кнопка Выбрать, убран debug
- 0.5.127 — clId обновляется после switchTo (фикс бага)
- 0.5.105 — убран toggle Администратор
- 0.5.104 — (личное) у своих компаний в dropdown
- 0.5.103 — WZ01112: adminMode auto-on
- 0.5.102 — единый интерфейс /v2/app (юзер+админ)