feat(server): 参考 BidEngine 补五项:原因码、截断重跑、项目信息逐项表态、占位符、提示词规则对应校验

- 待确认记原因码(extract.FAILURES,存在 ai_values.failures),解析结果按原因计数
  (verify_failures);前端待确认条目显示具体原因
- 相邻分块重叠约 800 字;模型输出被截断或不是合法 JSON 时对半重跑(最多 3 层),
  拆到底仍不完整记 output_incomplete。修复:以前截断时整块条目被当成「没有结果」悄悄丢掉
- 项目基本信息提示词 v2:12 个字段逐项表态 found / ambiguous / not_found,跨分块合并为
  found / absent / needs_review(info_fields)
- 「____元」「××」「( )」「待填」等占位符不算取值
- 提示词 substantive v4,qualification / scoring / schedule / tech_param v3:每条禁止事项
  对应一个原因码,对照表在 prompts/README.md
- 顾问(Fable)深读参考项目的结论补进 ref-bid-engine-analysis.md §5;架构 §13 SK12
- 待确认:国动 4 → 2,S02 13 → 3,S06 57 → 55

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-11-03 21:59:12 +08:00
parent e3f234ca0b
commit f99bb8b358
22 changed files with 884 additions and 81 deletions

View File

@@ -1720,6 +1720,18 @@ export interface components {
/** @description 重新解析时没再出现的旧条目 */
items_absent?: number;
lots_found?: number;
/** @description 没通过校验的原因码和条数(如 quote_too_short、value_unverified),评测和排查用 */
verify_failures?: {
[key: string]: number;
};
/** @description 模型输出被截断、把分块对半重跑的次数 */
chunks_split?: number;
/** @description 拆到底输出仍不完整的分块数(这些分块的结果可能不全) */
output_incomplete?: number;
/** @description 项目基本信息各字段的结论:found / absent(文件本身没写)/ needs_review(抽取有问题,要人核对) */
info_fields?: {
[key: string]: "found" | "absent" | "needs_review";
};
} | null;
created_at: components["schemas"]["Timestamp"];
finished_at?: components["schemas"]["Timestamp"] | null;