fix(ai-outfit): 标题解析改为「按逗号分割」,避开 Markdown 表格坑 (§19.23)
实测模型常返回 Markdown 表格(編號/標題/字元數估算 三列),按行解析会把 表头/分隔线/带 | 数字的行当成标题,写进 Excel A 全是「| 編號 | 標題 | … |」。 改用「提示词约定标题逗号分隔 + 解析按逗号拆分」,简单可靠。 - ai_text_service._clean_titles:从按行拆改为按逗号拆(半角 , / 全角 ,, 换行作兜底分隔),每段走 _clean_title_line 去空白/序号/引号、丢空 - config_service.DEFAULT_TITLE_PROMPT:改逗号分隔风格,明确禁 Markdown 表格/ 换行/序号/編號/字元數/引号/表情 - extract_text_from_response(取首条)、generate_texts/generate_titles/ _TitleWorker 均不变 测试:逗号分隔(全角/半角)→ 多条;逗号+换行混用都拆开;逐段去序号/引号; Markdown 表头单行不再炸成多条垃圾。全套 py37 通过(test_config_service 的 packaging 模板失败属并行 §19.13,与本改动无关)。离屏冒烟:逗号响应解析 + 按序回填 Excel A。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1397,4 +1397,24 @@
|
||||
- [x] `ai_outfit_panel.py` `_TitleWorker`:改为一次 `generate_titles` → 按序 `write_title_result` 回填、逐条 `progress` 刷新明细表;`N>行数`多的丢+日志、`N<行数`后面行留空+日志;请求异常 → 日志 + 成功 0 收尾;去掉行间 `request_interval` sleep
|
||||
- [x] `ai_outfit_panel.py` `_start_title`:不再传 `request_interval`;图片模型开跑前拦截(§19.21)保持
|
||||
- [x] 测试:`test_ai_text_service.py` 加 `extract_titles_from_response`(多行→多条、去序号/引号、丢空)+ `generate_texts`(mock,返回多条、无图 payload 不含 image_url);`test_ai_title.py` 改为 `generate_titles`(一次请求多条、客户端异常);删旧 `generate_title` 用例
|
||||
- [x] 验证:相关单测 + 全套 py37 通过;离屏冒烟:一次请求返回 6 条 → 6 行 A 按序回填;返回 3 条/8 条 → 兜底(留空/丢弃)+ 日志;payload 不含图片
|
||||
- [x] 验证:相关单测 + 全套 py37 通过;离屏冒烟:一次请求返回 6 条 → 6 行 A 按序回填;返回 3 条/8 条 → 兜底(留空/丢弃)+ 日志;payload 不含图片
|
||||
|
||||
### 19.23 标题解析改为「按逗号分割」 — docs/11 §17.1 / §17.2 / §17.3
|
||||
|
||||
前置阅读:
|
||||
|
||||
- `docs/11-ai-outfit.md`(§17.1 数据流、§17.2 文本服务、§17.3 默认提示词)
|
||||
- `src/services/ai_text_service.py`(`_clean_titles`/`extract_titles_from_response`/`_clean_title_line`)
|
||||
- `src/services/config_service.py`(`DEFAULT_TITLE_PROMPT`)
|
||||
- `tests/test_ai_text_service.py`(`extract_titles` 用例)
|
||||
|
||||
背景:
|
||||
|
||||
实测模型常返回 **Markdown 表格**(編號/標題/字元數估算 三列),按行解析会把表头/分隔线/带 `|` 数字的行当成标题(垃圾),写进 Excel A 全是 `| 編號 | 標題 | 字元數估算 |`。改用**提示词约定「标题之间用逗号分隔」+ 解析按逗号拆分**,简单可靠、避开表格坑。
|
||||
|
||||
任务:
|
||||
|
||||
- [x] `ai_text_service.py`:`_clean_titles(text)` 改为**按逗号拆分**——先把原始文本按 `,`/`,`(并把换行也当分隔,兜底)切成段,每段走 `_clean_title_line`(去首尾空白/序号/符号/引号),丢空,返回列表。`extract_titles_from_response`/`extract_text_from_response`(取首条)签名不变
|
||||
- [x] `config_service.py`:`DEFAULT_TITLE_PROMPT` 改为「逗号分隔」风格——明确「标题之间用逗号分隔、不要 Markdown 表格/换行/序号/引号/表情」,数量由用户写
|
||||
- [x] 测试:`test_ai_text_service.py` 更新/新增——逗号分隔(半角/全角)→ 多条;混换行+逗号→拆开;段内去序号/引号;Markdown 表格输入**不再**当多条(要么单条要么靠提示词避免,至少不产出表头那种垃圾的多条断言);`extract_text_from_response` 取首条
|
||||
- [x] 验证:相关单测 + 全套 py37 通过;离屏冒烟:逗号分隔字符串 → 按序回填各行 A
|
||||
Reference in New Issue
Block a user