Просмотр исходного кода

docs(harness): 补记续 44 被 shell 吃掉的反引号内容(并把教训写进记忆)

上一个提交推送成功,但 progress.md 里续 44 那段正文有大量反引号(markdown 代码标记),
而我是用 node -e "…" 改的文件 —— bash 把双引号里的反引号当命令替换执行了,
于是那几处代码标记的内容被替换成命令输出、留了空位(顺带还误跑了一次构建/打包)。

已用 Edit 工具把那几处补回(严格教训:**改文件内容只用 Edit/Write,别塞进 shell 字符串**),
并把这条教训写进我的长期记忆,避免第四次。

无代码改动;validate-harness 通过。

Co-Authored-By: Claude Code <noreply@anthropic.com>
gongtianxiao 1 месяц назад
Родитель
Сommit
788e534491
1 измененных файлов с 15 добавлено и 10 удалено
  1. 15 10
      harness/progress.md

+ 15 - 10
harness/progress.md

@@ -4284,26 +4284,31 @@ payload 里含模型里**不存在**的列时,`addContent` 会忽略该列照
 
 **用户反馈**:「提交完问卷直接看不见了」——即作答后整张卡片消失。
 
-**根因(我上一版引入)**:写回后卡片内容变成 ,但**渲染层交给组件的 content 是带标记的**
-—— 切行器  对 block 行产出的是 :
+**根因(我上一版引入)**:写回后卡片内容变成 `{answers:[…]}`,但**渲染层交给组件的 content 是带标记的**
+—— 切行器 `StreamXMLFilter.handleBehavior` 对 block 行产出的是 `openTag + inner + closeTag`:
 
-而  里两个解析函数**一个剥标记、一个不剥**: 剥、 不剥
-→ 作答后只读分支解析失败、交互分支也解析不出  → 模板两个分支都不成立 → **卡片渲染成空**。
+```
+<question-cards>{"answers":[…]}</question-cards>
+```
+
+而 `QuestionCard` 里两个解析函数**一个剥标记、一个不剥**:`parseQuestions` 剥、
+`parseAnswersFromContent` 不剥 → 作答后只读分支解析失败、交互分支也解析不出 `questions`
+→ 模板两个分支都不成立 → **卡片渲染成空**。
 
 **我的测试为什么没抓到(关键教训)**:续 43 的 [1] 节里,我**手工把标记切掉**再断言 JSON 合法
 —— 把渲染层给的是带标记内容这个事实自己抹平了,于是测试绿着、页面上卡片是空的。
 **教训:组件解析类的验证必须走真实管线(真实切行器的输出),不能自己构造理想输入。**
 
 **修法**:
-1. 新增纯函数模块 [](../src/utils/question-cards-content.ts):
-   (统一解包)+  / ,
-   两个解析**走同一个解包逻辑**; 改为引用它(本地那两份实现删掉)
-2. 答案形状  也收到该模块(原来是 answers 模块自己定义一份)
+1. 新增纯函数模块 [`src/utils/question-cards-content.ts`](../src/utils/question-cards-content.ts):
+   `unwrapQuestionCardsContent`(统一解包)+ `parseQuestionsFromContent` / `parseAnswersFromContent`,
+   两个解析**走同一个解包逻辑**;`QuestionCard.vue` 改为引用它(本地那两份实现删掉)
+2. 答案形状 `QuestionCardAnswer` 也收到该模块(原来是 answers 模块自己定义一份)
 3. 验证脚本加【5】完整往返:**跑真实切行器** → 取问卷行 content(带标记)→ 两个解析函数分别断言,
    并加一条直接守卫:「**至少有一个分支能渲染**(否则整张卡片是空的)」
 
-**运行过的验证**: 22 → **29/29**(新增 6 项往返 + 1 项兼容);
-**变异测试**:把解包改成直接返回原文(=复现原 bug)→ **6 项失败**,其中就有那条至少有一个分支能渲染;
+**运行过的验证**:`verify-question-cards` 22 → **29/29**(新增 6 项往返 + 1 项兼容);
+**变异测试**:把解包改成直接返回原文(=复现原 bug)→ **6 项失败**,其中就有那条「至少有一个分支能渲染」;
 还原后 29/29。回归:内联脚本 6/6、NLS 44/44、附件 57/57、toast 27/27、政策库 29/29、
 DMS 字段契约 19/19、build 通过、vue-tsc 无新错、validate-harness 通过。