import { Fragment, useState } from "react";
import { CheckCircle2, Edit3, RotateCcw, Save, Sparkles } from "lucide-react";
import { toast } from "sonner";
import { Button } from "~/components/ui/button";
import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "~/components/ui/table";
import { Textarea } from "~/components/ui/textarea";
import { usePersistentState } from "~/hooks/use-persistent-state";
import { FilterSelect, OperationsPageHeader } from "./OperationsUi";
import { PROMPTS, PROMPT_REGRESSION, PROMPT_VERSIONS } from "./governanceData";
type PromptKey = keyof typeof PROMPTS;
function PromptPreview({ text }: { text: string }) {
const parts = text.split(/(\{\{[^}]+\}\})/g);
return
{parts.map((part, index) => part.startsWith("{{") ? {part} : {part})};
}
export default function PromptManagementPage() {
const [promptKey, setPromptKey] = useState("BC");
const [texts, setTexts] = usePersistentState>("a-card-prompt-texts", { A: PROMPTS.A.text, BC: PROMPTS.BC.text });
const [editing, setEditing] = useState(false);
const [versions, setVersions] = usePersistentState("a-card-prompt-versions", PROMPT_VERSIONS);
const passed = PROMPT_REGRESSION.filter((item) => item.result === "通过").length;
const savePrompt = () => {
const version = `P${Number(versions[0]?.version.slice(1) ?? 5) + 1}`;
setVersions((current) => [{ version, author: "模型团队 李伟", createdAt: "2026-08-31 11:05", current: true, note: "手动保存并提交回归(Mock)" }, ...current.map((item) => ({ ...item, current: false }))]);
setEditing(false);
toast.success(`已保存为 ${version} 并提交回归评审`);
};
return (
保存并提交回归} />
提示词查看与调整属于需求沟通补充项,建议在下一版需求文档中同步固化。平台注入变量由程序取数,不交由大模型计算。
提示词全文变量占位符必须保持双花括号格式 { setPromptKey(value as PromptKey); setEditing(false); }} />
{editing ?
版本留痕当前生效与历史版本
{versions.map((version) => {version.version}{version.note}{version.author} · {version.createdAt}{version.current ? 生效中 : }
)}
回归评审上线前使用历史样本回归
回归样本{PROMPT_REGRESSION.length}
通过{passed}
待复核{PROMPT_REGRESSION.length - passed}
历史样本结果说明{PROMPT_REGRESSION.map((item) => {item.sample}{item.result === "通过" ? 通过 : 待复核}{item.detail})}
);
}