v2: документирование интеграции 0.5.98 — таблицы + impersonation

This commit is contained in:
2026-06-15 09:17:34 +04:00
parent 814d066b10
commit 3e418f9f4a
+84
View File
@@ -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_* таблицы из БД | ⏸ после деплоя |