diff --git a/v2/history/2026-06-12.md b/v2/history/2026-06-12.md index 585f74d..463def5 100644 --- a/v2/history/2026-06-12.md +++ b/v2/history/2026-06-12.md @@ -748,3 +748,87 @@ WZ01112: entries=10 audit=10 dupes=False overLimit=False | 2 | EJS-шаблоны вместо inline HTML | ❌ | | 3 | Auth end-to-end (KC callback) | ❌ | | 4 | Интеграция в основной код (убрать v2_) | ❌ | + + +--- + +## Интеграция с основным проектом (0.5.98, 2026-06-15) + +### Что изменилось + +#### 1. Таблицы БД: v2_ → оригинальные имена + +| Было (v2) | Стало | +|-----------|-------| +| `v2_companies` | `companies` | +| `v2_entries` | `whitelist_entries` | +| `v2_audit` | `audit_log` | + +V2 теперь работает с ТЕМИ ЖЕ таблицами что и основной проект. +Старые v2_* таблицы больше не создаются. + +**Файлы:** `v2/src/db/schema.js`, `v2/src/db/queries.js` + +#### 2. Модуль impersonation/ (новый слой) + +**Файл:** `v2/src/impersonation/index.js` + +**Зачем:** когда админ имперсонирует в `tazet@narod.ru`, у этого юзера +должна быть не только своя компания но и админская. + +**ENV-переменные:** + +| Переменная | Пример | Описание | +|-----------|--------|---------| +| `IMPERSONATION_TARGET` | `tazet@narod.ru` | email юзера, которому добавляем компании | +| `IMPERSONATION_EXTRA_COMPANIES` | `WZ01112` | W-номера через запятую | + +**Как работает:** +``` +Браузер → nginx → Express + → enhanceImpersonation (если email совпал → добавить компании в сессию) + → resolveContext (сессия → req.clientId, req.allClientIds) + → userRouter / adminRouter +``` + +**Результат:** `tazet@narod.ru` видит в выпадающем списке свою компанию + WZ01112. + +**Монтаж в server.js:** +```js +router.use('/app', enhanceImpersonation, resolveContext, createUserRouter()); +router.use('/admin', enhanceImpersonation, resolveContext, createAdminRouter()); +``` + +#### 3. Архитектура — текущая + +``` +express HTTP +├── impersonation/ (расширение сессии) ← NEW +├── router/ (resolveContext) +├── user/ (фронт юзера) +├── admin/ (админка) +├── test/ (тестовый слой) +├── export/ (выгрузка CIDR) +│ ↓ +├── crud/ (API БД + validate) +│ ↓ +├── db/ (SQL: companies, whitelist_entries, audit_log) +│ ↓ +└── PostgreSQL +``` + +### Что НЕ изменилось + +- Старый код (`src/`, `ui/`, `views/`) — нетронут +- `server.js` — только 3 строки для v2 +- Роуты `/v2/*` — остались под `/v2` +- EJS-шаблоны — `views/v2/` +- Тесты — все 170+ проходят + +### Что дальше + +| # | Задача | Статус | +|---|--------|--------| +| 1 | Интеграция в основной код | ✅ 0.5.98 | +| 2 | Auth (KC callback) | ⏸ заблокирован облаком | +| 3 | Убрать старые v2_* таблицы из БД | ⏸ после деплоя |