NODEDC_1C/llm_normalizer/backend/src/config.ts

125 lines
5.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import path from "path";
export const BACKEND_ROOT = path.resolve(__dirname, "..");
export const MODULE_ROOT = path.resolve(BACKEND_ROOT, "..");
function toBooleanFlag(value: string | undefined, defaultValue: boolean): boolean {
if (!value || value.trim() === "") {
return defaultValue;
}
const lowered = value.trim().toLowerCase();
return !(lowered === "0" || lowered === "false" || lowered === "off" || lowered === "no");
}
function toNumberFlag(value: string | undefined, defaultValue: number): number {
if (!value || value.trim() === "") {
return defaultValue;
}
const parsed = Number(value);
return Number.isFinite(parsed) ? parsed : defaultValue;
}
export const PORT = Number(process.env.PORT ?? 8787);
export const TIMEZONE = process.env.TZ_FALLBACK ?? "Europe/Moscow";
export const DEFAULT_OPENAI_BASE_URL = process.env.OPENAI_BASE_URL ?? "https://api.openai.com/v1";
export const DEFAULT_MODEL = process.env.OPENAI_MODEL ?? "gpt-4o-mini";
export const DEFAULT_TEMPERATURE = Number(process.env.OPENAI_TEMPERATURE ?? 0);
export const DEFAULT_MAX_OUTPUT_TOKENS = Number(process.env.OPENAI_MAX_OUTPUT_TOKENS ?? 700);
export const DEFAULT_PROMPT_VERSION = process.env.DEFAULT_PROMPT_VERSION ?? "normalizer_v2_0_2";
export const FEATURE_ASSISTANT_INVESTIGATION_STATE_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_INVESTIGATION_STATE_V1,
true
);
export const FEATURE_ASSISTANT_CONTRACTS_V11 = toBooleanFlag(process.env.FEATURE_ASSISTANT_CONTRACTS_V11, true);
export const FEATURE_ASSISTANT_STATE_FOLLOWUP_BINDING_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_STATE_FOLLOWUP_BINDING_V1,
true
);
export const FEATURE_ASSISTANT_EVIDENCE_ENRICHMENT_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_EVIDENCE_ENRICHMENT_V1,
true
);
export const FEATURE_ASSISTANT_BROAD_GUARD_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_BROAD_GUARD_V1,
true
);
export const FEATURE_ASSISTANT_MIN_EVIDENCE_GATE_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_MIN_EVIDENCE_GATE_V1,
true
);
export const FEATURE_ASSISTANT_ANTI_GENERIC_RANKING_GUARD_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ANTI_GENERIC_RANKING_GUARD_V1,
true
);
export const FEATURE_ASSISTANT_ANSWER_POLICY_V11 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ANSWER_POLICY_V11,
true
);
export const FEATURE_ASSISTANT_ACCOUNTANT_EVAL_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ACCOUNTANT_EVAL_V1,
true
);
export const FEATURE_ASSISTANT_PROBLEM_UNITS_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_PROBLEM_UNITS_V1,
true
);
export const FEATURE_ASSISTANT_PROBLEM_CENTRIC_ANSWER_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_PROBLEM_CENTRIC_ANSWER_V1,
true
);
export const FEATURE_ASSISTANT_PROBLEM_UNIT_CONTINUITY_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_PROBLEM_UNIT_CONTINUITY_V1,
true
);
export const FEATURE_ASSISTANT_STAGE2_EVAL_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_STAGE2_EVAL_V1,
false
);
export const FEATURE_ASSISTANT_LIFECYCLE_RUNTIME_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_LIFECYCLE_RUNTIME_V1,
true
);
export const FEATURE_ASSISTANT_LIFECYCLE_ANSWER_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_LIFECYCLE_ANSWER_V1,
true
);
export const FEATURE_ASSISTANT_GRAPH_RUNTIME_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_GRAPH_RUNTIME_V1,
true
);
export const FEATURE_ASSISTANT_MCP_RUNTIME_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_MCP_RUNTIME_V1,
false
);
export const FEATURE_ASSISTANT_ADDRESS_QUERY_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ADDRESS_QUERY_V1,
true
);
export const FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1,
true
);
export const FEATURE_ASSISTANT_ADDRESS_QUERY_LIVE_V1 = toBooleanFlag(
process.env.FEATURE_ASSISTANT_ADDRESS_QUERY_LIVE_V1,
true
);
export const ASSISTANT_MCP_PROXY_URL = (process.env.ASSISTANT_MCP_PROXY_URL ?? "http://127.0.0.1:6003").replace(
/\/+$/,
""
);
export const ASSISTANT_MCP_CHANNEL = process.env.ASSISTANT_MCP_CHANNEL ?? "default";
export const ASSISTANT_MCP_TIMEOUT_MS = toNumberFlag(process.env.ASSISTANT_MCP_TIMEOUT_MS, 6000);
export const ASSISTANT_MCP_LIVE_LIMIT = Math.max(1, Math.trunc(toNumberFlag(process.env.ASSISTANT_MCP_LIVE_LIMIT, 24)));
export const DATA_DIR = process.env.DATA_DIR ?? path.resolve(MODULE_ROOT, "data");
export const TRACES_DIR = path.resolve(DATA_DIR, "traces");
export const PRESETS_DIR = path.resolve(DATA_DIR, "presets");
export const EVAL_CASES_DIR = path.resolve(DATA_DIR, "eval_cases");
export const ASSISTANT_SESSIONS_DIR = path.resolve(DATA_DIR, "assistant_sessions");
export const PROMPTS_DIR = path.resolve(MODULE_ROOT, "prompts");
export const REPORTS_DIR = path.resolve(MODULE_ROOT, "reports");
export const EVAL_DATASETS_DIR = path.resolve(MODULE_ROOT, "eval_cases");
export const SCHEMAS_DIR = path.resolve(BACKEND_ROOT, "src", "schemas");
export const ARCH_EXPORT_2020_DIR = path.resolve(MODULE_ROOT, "..", "docs", "ARCH", "2020экспорт");