Этап 4 / Волна 10: корректировка settlement-кейса — доменная фиксация синтеза, честное покрытие, удержание фокуса / Этап 4 / Волна 11: бизнес-якоря, доменное заземление и устранение утечки дебага
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>NDC AI Normalizer Playground</title>
|
||||
<script type="module" crossorigin src="/assets/index-OzA7Q0i7.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-HMlzOgoV.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-Ch7jCAii.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --host 0.0.0.0 --port 5174",
|
||||
"dev": "vite --host 0.0.0.0 --port 5174 --configLoader runner",
|
||||
"build": "tsc -b && vite build",
|
||||
"preview": "vite preview --host 0.0.0.0 --port 4174"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { apiClient } from "./api/client";
|
||||
import { AssistantPanel } from "./components/AssistantPanel";
|
||||
import { ConnectionPanel } from "./components/ConnectionPanel";
|
||||
@@ -23,6 +23,8 @@ import type {
|
||||
|
||||
const SESSION_CONFIG_KEY = "ndc_normalizer_session_config_v1";
|
||||
const ASSISTANT_STAGES = ["Разбираю запрос", "Ищу данные", "Собираю ответ"];
|
||||
const DEFAULT_UI_MODE: UiMode = "assistant";
|
||||
const AUTOLOAD_PROMPT_VERSION = "normalizer_v2_0_2";
|
||||
|
||||
function withTs(message: string): string {
|
||||
return `[${new Date().toLocaleTimeString("ru-RU")}] ${message}`;
|
||||
@@ -72,13 +74,14 @@ export default function App() {
|
||||
const [evalReport, setEvalReport] = useState<unknown>(null);
|
||||
const [lastError, setLastError] = useState("");
|
||||
|
||||
const [uiMode, setUiMode] = useState<UiMode>("decomposition");
|
||||
const [uiMode, setUiMode] = useState<UiMode>(DEFAULT_UI_MODE);
|
||||
const [assistantSessionId, setAssistantSessionId] = useState("");
|
||||
const [assistantConversation, setAssistantConversation] = useState<AssistantConversationItem[]>([]);
|
||||
const [assistantInput, setAssistantInput] = useState("");
|
||||
const [assistantBusy, setAssistantBusy] = useState(false);
|
||||
const [assistantStatus, setAssistantStatus] = useState("");
|
||||
const [assistantError, setAssistantError] = useState("");
|
||||
const presetAutoloadDoneRef = useRef(false);
|
||||
|
||||
const log = (message: string) => {
|
||||
setAppLogs((prev) => [withTs(message), ...prev].slice(0, 300));
|
||||
@@ -128,7 +131,30 @@ export default function App() {
|
||||
async function refreshPresets() {
|
||||
try {
|
||||
const payload = await apiClient.loadPresets();
|
||||
setPresetList(payload.presets ?? []);
|
||||
const presets = payload.presets ?? [];
|
||||
setPresetList(presets);
|
||||
if (presetAutoloadDoneRef.current) {
|
||||
return;
|
||||
}
|
||||
const presetForAutoload =
|
||||
presets.find((item) => item.prompt_version === AUTOLOAD_PROMPT_VERSION) ??
|
||||
presets.find((item) => item.id === "default-normalizer-v2_0_2");
|
||||
if (!presetForAutoload) {
|
||||
presetAutoloadDoneRef.current = true;
|
||||
log(`Preset autoload skipped: ${AUTOLOAD_PROMPT_VERSION} not found.`);
|
||||
return;
|
||||
}
|
||||
setSelectedPresetId(presetForAutoload.id);
|
||||
setPreviousPreset(prompts);
|
||||
setPrompts({
|
||||
systemPrompt: presetForAutoload.systemPrompt,
|
||||
developerPrompt: presetForAutoload.developerPrompt,
|
||||
domainPrompt: presetForAutoload.domainPrompt,
|
||||
schemaNotes: presetForAutoload.schemaNotes ?? "",
|
||||
fewShotExamples: presetForAutoload.fewShotExamples ?? ""
|
||||
});
|
||||
presetAutoloadDoneRef.current = true;
|
||||
log(`Preset autoloaded: ${presetForAutoload.name} (${presetForAutoload.prompt_version}).`);
|
||||
} catch (error) {
|
||||
log(`Presets load error: ${error instanceof Error ? error.message : String(error)}`);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ function buildConversationExport(sessionId: string, conversation: AssistantConve
|
||||
lines.push("");
|
||||
|
||||
if (item.role === "assistant" && item.debug) {
|
||||
lines.push("### technical_breakdown_json");
|
||||
lines.push("### debug_payload_json");
|
||||
lines.push("```json");
|
||||
lines.push(stringifyDebug(item.debug));
|
||||
lines.push("```");
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
> llm-normalizer-frontend@0.1.0 dev
|
||||
> vite --host 0.0.0.0 --port 5174
|
||||
|
||||
[2m15:50:14[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m Re-optimizing dependencies because vite config has changed
|
||||
|
||||
[32m[1mVITE[22m v7.3.1[39m [2mready in [0m[1m438[22m[2m[0m ms[22m
|
||||
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://10.122.6.134:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://172.22.0.188:[1m5174[22m/[39m
|
||||
[2m[32m ➜[39m[22m[2m press [22m[1mh + enter[22m[2m to show help[22m
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/presets[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/history[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/accounting-agent/v1/runs[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/presets[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/history[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m15:50:15[22m [31m[1m[vite][22m[39m [31mhttp proxy error: /api/accounting-agent/v1/runs[39m
|
||||
AggregateError [ECONNREFUSED]:
|
||||
at internalConnectMultiple (node:net:1134:18)
|
||||
at afterConnectMultiple (node:net:1715:7)
|
||||
[2m16:21:34[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/@fs/X:/1C/NDC_1C/llm_normalizer/frontend/src/components/AssistantPanel.tsx[22m
|
||||
Reference in New Issue
Block a user