platform-assistant/scripts
Sisyphus 1a92a3c095 fix(categories): 硬化 AI 分类输出过滤,防止下拉框再次被 AI 推理文本污染
【问题】
AdminPage / InquiryPage 品类下拉框显示 414 条 AI 推理文本 (例: '**合金铝线采购** - 这是**电线电缆**的一种'),
源头: CategoryInferenceService 把 MiniMax (M2.7) 响应的整段 markdown/think 文本写到了 ProductCategory.name。

【根因】
原代码对 MiniMax 返回值没有任何后处理,直接信任模型输出。
-prompt 只说'只输出品类名', M2.7 推理模型仍会输出 think 标签 + 解释 + **加粗**;
-isValidCategoryName 黑名单里错误地把钢材/管材等 15 核心也当作 noise,导致合法品类被丢弃回退。

【修复】
1. src/product-category/category-inference.service.ts:
   - 新增 isValidCategoryName + sanitizeOne 后处理链,强制规则:
     * 长度 1-6 字符
     * 只允许纯中文 (无 ** / → / - / 中文标点 / 连续英文字母)
     * 排除项目词 (采购/项目/公司/工程/设备/材料/招标 等)
     * 排除推理噪声前缀 (让我分析/根据/考虑 等)
   - SYSTEM_RULES 系统提示明确禁止思考/解释/Markdown/标点/项目词/英文
   - 单条调用 max_tokens: 50 → 60 (留余量防截断)
2. scripts/restore_categories.js: 恢复 27 品类(15核心+12扩展),upsert 幂等,关键词来自 scripts/expand_keywords.js
3. scripts/sanitize_smoke.js: 11 case 回归测试,验证 sanitizeOne 拒绝所有已知污染样本

【生产验证】
/api/categories 返回 53 个品类,最长 6 字符,无 ** / → / - 。PM2 已重启加载新版。
2026-07-01 12:12:19 +08:00
..
direv-publish feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
tender-fetcher feat: 采集器地址提取优化 - 省份关键词匹配、标题兜底、跨天去重 2026-06-26 16:24:32 +08:00
AGENTS.md feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
assign_remaining.js feat: 扩展关键词完成 68 条空品类线索分类 (100% 覆盖率) 2026-07-01 11:51:38 +08:00
backfill_category.js refactor: DeepSeek → MiniMax (M2.7 推理模型) 迁移 2026-07-01 11:31:17 +08:00
CATEGORY_CLEANUP.md feat: 扩展关键词完成 68 条空品类线索分类 (100% 覆盖率) 2026-07-01 11:51:38 +08:00
clean_category.js refactor: DeepSeek → MiniMax (M2.7 推理模型) 迁移 2026-07-01 11:31:17 +08:00
deploy.sh chore: 添加一键部署脚本 scripts/deploy.sh 2026-06-26 16:55:40 +08:00
expand_keywords.js feat: 扩展关键词完成 68 条空品类线索分类 (100% 覆盖率) 2026-07-01 11:51:38 +08:00
extract_address_from_pdf.py feat: 采集器地址提取优化 - 省份关键词匹配、标题兜底、跨天去重 2026-06-26 16:24:32 +08:00
parse_products.py feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
process_image.py feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
restore_categories.js fix(categories): 硬化 AI 分类输出过滤,防止下拉框再次被 AI 推理文本污染 2026-07-01 12:12:19 +08:00
rotate-mcp-key.sh feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
sanitize_smoke.js fix(categories): 硬化 AI 分类输出过滤,防止下拉框再次被 AI 推理文本污染 2026-07-01 12:12:19 +08:00
search_image.py feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
start-dev.sh feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00
stop-dev.sh feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit 2026-06-24 11:07:11 +08:00