|
|
@@ -297,3 +297,46 @@
|
|
|
- 用户主动**停止保留已流出文字**;后端出错 / 断流**撤掉未定稿的草稿**
|
|
|
- 旧后端(不下发流式事件)与 mock 测试按钮**仍走原来的打字机**(回归重点)
|
|
|
- 新增 `verify-answer-stream.mjs`(78 项:纯逻辑 + 协调器级假流)、`probe-answer-stream.mjs`(真后端探针)
|
|
|
+
|
|
|
+## 20260921
|
|
|
+
|
|
|
+- **卡片改为「正文开流前」上屏**(对齐后端契约 F079):有入选政策时后端先发完完整的 `source`/`item`
|
|
|
+ 才开始 `answer_start`,而前端此前一直等 `done` 才显示卡片 —— 只能靠整块重写把卡片插到正文之上,
|
|
|
+ 界面上表现为「正文先渲一遍、又从头再渲一遍」。现在开流前就把卡片上屏,收尾只做纯追加
|
|
|
+- **修「同一段回答内容出现两次」**:真载荷实测 `answer_end.text`(1610 字)比增量拼接(1309 字)
|
|
|
+ **多 301 字**,导致应用侧记录的"流式正文"不再是上屏内容的后缀 → 重排落兜底分支 → 正文上屏两份。
|
|
|
+ 修法:`answer_end` 后同步"流式正文",并加固兜底(对不上时**绝不重复插入正文**)
|
|
|
+- **参考资料改为「正文定稿就上屏」**:实测 `done` 要等 `result`(375~390KB 的完整快照),
|
|
|
+ 比正文定稿晚 **3~10 秒**,而参考资料的数据(`source` 事件)在正文开流前就发完了 —— 等于白等。
|
|
|
+ 现在正文一定稿就发;二维码(来自 `result.cipa`、只能等)走定向重排,保住「在参考资料之前」的版式
|
|
|
+- **修「文字快渲染完时视图被拽回回答顶部」**:流式期间正文是即时渲染的,但最后一行一直被标成
|
|
|
+ "打字未完成",收尾时整套打字机机制被重新启用,其中一环会把视图滚到最后一条 AI 消息的顶部。
|
|
|
+ 修法:收尾时把已在屏幕上的行补记为「打字完成」
|
|
|
+- **大块内容改为对齐它的顶部**(不再滚过它):卡片/参考资料是一整块插入的(300~900px),
|
|
|
+ 此前贴底滚动会一步滚过整块 —— 用户刚拿到卡片却看不到卡片
|
|
|
+- **「流式草稿被最终文本整段替换」记为已接受行为**:契约要求「完整校验后绑定真实链接,
|
|
|
+ 随最终替换出现」「不能用 text 覆盖…不能只保留草稿」。实测草稿与最终文本的公共前缀只有 11.7%
|
|
|
+ (最终版给标题补了序号、把纯文本换成 markdown 链接)
|
|
|
+- **DMS token 不用再每次手填**:token 约 24 小时过期,以前要「改 .env + 重启 dev server」。
|
|
|
+ 现在放在本机单行文件 `.dms-token`,代理**每个请求现读**(换 token 不用重启):
|
|
|
+ `npm run dms:token`(从剪贴板读)、`npm run dms:login`(账号密码自动登录)、
|
|
|
+ `npm run dev` 前自动续期。顺带发现原来 `.env.development.local` 里的 token 写在了**下一行**,
|
|
|
+ dotenv 读出来是空串 —— 等于一直没生效
|
|
|
+- 注释掉输入框右侧的测试用 MOCK 按钮组(资料/问卷/流测/回放/打字/Scope/测试输入)
|
|
|
+
|
|
|
+## 20260922
|
|
|
+
|
|
|
+- **1887 助手会话写入企业相关字段**(未登录也写):企业名称、统一社会信用代码、企业图片、是否登录
|
|
|
+ - 规则:**登录态的值优先级最高**(库里已有值也覆盖);对话带出的 `company_info` 值**与库里不同就更新**;
|
|
|
+ 但**已被登录态认领过的行**(`c_is_login="1"`)不许被后来的访客对话改写 —— 否则会把这行改到别的公司名下
|
|
|
+ - **企业看不到陌生访客的会话**:读「我的会话」时排除访客行(改造前访客标识是随机的、本来也匹配不上,
|
|
|
+ 这里只是保持一致的可见范围)
|
|
|
+ - `c_title` 不写(标题由运营侧生成);DMS 系统字段 `title` 只在建行那一刻带上
|
|
|
+- **访客归属改用本机 IP**:新增取 IP 接口(返回纯文本 IP;**走同源代理** —— 它是 HTTP 而页面是 HTTPS,
|
|
|
+ 直连会被浏览器按混合内容拦掉),IP 存进 `c_ip`,访客身份为 `访客_<IP>`;
|
|
|
+ 取不到 IP 时退回浏览器随机 id,不影响任何写入
|
|
|
+- **复制回答去掉 markdown 语法符号**:`###`、`**`、反引号、`[文字](链接)` 的括号语法、无序列表的 `- `
|
|
|
+ 都不再复制出去;**有序列表序号保留**(顺序是内容)、**链接地址保留**(写成「文字(地址)」)
|
|
|
+- 排查中撞到一个 DMS 协议坑并记录:payload 里含模型里**不存在**的列时,`addContent` 会忽略该列照写,
|
|
|
+ 而 `updateContent` 会**静默丢弃整个更新**(返回仍是 `{"code":200,"message":"成功"}`)——
|
|
|
+ 新增列时必须先确认 DMS 侧已加
|