DI2: удаление старого модуля финансов — пул БД и аудит перенесены в finance-di2

- server/finance/ (19 файлов) удалён: пул финансовой БД перенесён в server/finance-di2/db-core.ts, db-client.ts теперь реэкспортирует из ./db-core
- Шедулер аудита перенесён в server/finance-di2/audit-scheduler.ts (03:00 МСК, setInterval, без node-cron), запуск из registerDi2Routes с защитой от повторного старта
- История аудита DI2 теперь персистентна: загрузка/запись data/finance-audit-history.json в audit-agent.ts (порт из удалённого server/finance/audit.ts)
- registerFinanceRoutes убран из server/routes/index.ts, registerDi2Routes остался на его месте
- Клиент: удалены pages/finance/, components/finance/, hooks/useFinance.ts, hooks/useColumnLabels.ts, lib/format.ts, pages/salary.tsx; роуты /finance*, /income*, /expenses*, /salary и lazy-импорты убраны из App.tsx
- Навигация: «Финансы» в Sidebar и MobileBottomNav ведёт на субапп /di2 (внешняя ссылка), гейт moduleAccess.finance + finance.view сохранён
- index.css: удалён блок .hover-elevate/.hover-elevate-2/.active-elevate (использовался только старым модульным DataTable)
- FinanceBottomNav.tsx сохранён как референс для этапа 3 (.superpowers/sdd/di2-restyle/FinanceBottomNav.reference.tsx)
- Не тронуто: client-di2/, сиды прав finance.view/manage, finance_access (module-access)
This commit is contained in:
2026-09-06 21:53:47 +03:00
parent 6bcf4dfdfc
commit 66f4e5ef53
68 changed files with 212 additions and 14471 deletions

View File

@@ -1,5 +1,5 @@
// Обёртка над существующим пулом финансовой БД iistwin (server/finance/db-client.ts).
// DI2-код импортирует эти имена из "./db-client" — второй пул не создаётся.
// Обёртка над пулом финансовой БД (./db-core) — DI2-код импортирует эти имена из "./db-client".
// Пул перенесён из удалённого server/finance/db-client.ts (единый источник — db-core).
import type { DbConnectionConfig } from "./schema";
import {
@@ -9,12 +9,12 @@ import {
setConfig,
isConnectionError,
getPoolClient,
} from "../finance/db-client";
} from "./db-core";
export { query, testConnection, setConfig, isConnectionError, getPoolClient };
// В DI2 getConfig() всегда возвращал конфиг (не null) и включал password.
// iistwin-версия отдаёт конфиг без пароля и может вернуть null — приводим к DI2-совместимой форме.
// Ядро отдаёт конфиг без пароля и может вернуть null — приводим к DI2-совместимой форме.
export function getConfig(): DbConnectionConfig {
const cfg = financeGetConfig();
if (!cfg) {