DI2 внедрение, таск 1: серверная интеграция Data-Insight2 (server/finance-di2)

- Копия DI2-сервера в server/finance-di2/ с правками: schema/db-client/cache/table-config/override-tables/google-auth/audit-agent/routes
- db-client — обёртка над существующим пулом server/finance/db-client (второй пул не создаётся, добавлен экспорт isConnectionError)
- ai-config.ts — чистое IO конфигов из ai-agent.ts без Telegram-поллинга; роуты /api/ai/toggle и /api/ai/status удалены, без compression/startAuditScheduler/autoStartIfEnabled
- Обёртка registerDi2Routes с auth-gate (authenticateToken + finance.manage), регистрация строго перед registerFinanceRoutes
- Статика /di2 из dist/public-di2 перед веткой vite/static (dev и prod)
- Фикс предсуществующего бага DI2: buildGlobalExclusionConditions без cats в /api/profitability
This commit is contained in:
2026-09-06 19:27:43 +03:00
parent a60a75eda0
commit 254950f151
16 changed files with 8200 additions and 0 deletions

View File

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