新增: 小程序配置持久化与心跳闭环 + 文档同步
小程序(mobile client)三项改进: 一、配置持久化(分发前置) - 运行时配置(relay 地址/设备 ID/token/心跳间隔)接入 storage - 懒加载:首次读取从 storage 恢复,合并默认值兼容旧字段 - 新增重置函数:清除 storage + 回到默认占位值 - 读写失败降级不崩溃 二、心跳 pong 闭环(移动网络可靠性) - 中继服务识别小程序心跳 ping,直接回 pong(不经桌面端透传) - 小程序收到 pong 更新入站时间,半连接看门狗据此判活 - 治移动网络 TCP 半连接挂死(socket 仍开但无响应) 三、文档同步关闭已完成项 - 条件表达式引擎:求值器+执行器+前端编辑入口+翻译均已落地 - 流式状态按会话隔离:accessor 委派 per-conv Map 已落地 - 灵感录入增强:表单已含来源/标签/优先级字段
This commit is contained in:
38
docs/待决策.md
38
docs/待决策.md
@@ -42,16 +42,14 @@
|
||||
|
||||
### 🟡 待设计/架构演进(有决策点,需方案设计或长期规划)
|
||||
|
||||
#### T-260614-11 条件表达式引擎升级
|
||||
- **背景**:df-workflow conditions 仅支持 true/false 字面量,升级为真表达式求值。引擎设计好但无前端 UI 消费方(demoDag edges 无 condition 字段)。
|
||||
- **决策点**:求值器实现方式?(已暂缓:等工作流真实场景)
|
||||
- **选项**:
|
||||
- a: 手写求值器
|
||||
- b: 复活 set_skipped
|
||||
- c: default false + warn(均认可)
|
||||
- **推荐**:**⏸️ 暂缓**(无消费方,等 BuildNode 落地跑构建→测试→部署真实场景)
|
||||
- **关联**:todo T-260614-11
|
||||
- **状态**:⏸️ 暂缓
|
||||
#### T-260614-11 条件表达式引擎升级(✅ 已完成)
|
||||
- **背景**:df-workflow conditions 仅支持 true/false 字面量,升级为真表达式求值。
|
||||
- **解决**:手写求值器(option a)已实现并集成。
|
||||
- `ConditionEngine::evaluate()` 支持完整表达式:JSON Path(`$.status == 'completed'`)/ 嵌套属性 / 数组索引 / 数值比较 / 布尔字段
|
||||
- executor 集成(`cfg!(feature = "conditions-eval")` 默认开)
|
||||
- 前端 UI 已有边条件编辑入口(`WorkflowDagDisplay.vue`)
|
||||
- 中英文翻译已补齐
|
||||
- **状态**:✅ 已完成
|
||||
|
||||
#### ARC-260615-07 架构重构批(排期/优先级决策)
|
||||
- **背景**:src-tauri IPC 编排层 5711 行成事实业务层,7 项架构债。df-core→df-types 已完成(CR-61),剩 6 项独立大改。
|
||||
@@ -203,22 +201,16 @@
|
||||
|
||||
---
|
||||
|
||||
## F-09 streaming/currentText 改 per-conv(消息重叠/多会话串扰根治)
|
||||
## F-09 streaming/currentText 改 per-conv(✅ 已完成)
|
||||
|
||||
**背景**:BUG-260624-01 消息重叠核心修复后,论证 workflow 边界角度指出残留根因——`streaming`/`currentText` 是 store 全局单例(非 per-conv),F-09 多会话并发下 A 后台生成(streaming=true)+ 切 B 会话,B 末条 AI 气泡命中 `isLastAi&&streaming&¤tText` 会渲 A 残留 currentText。当前修复(flushCurrentText 自清 + activeConversationId watch 清 streamingBlocks)已大幅收窄残留窗口,但单例根因未除。
|
||||
**背景**:`streaming`/`currentText` 原为 store 全局单例,F-09 多会话并发下 A 后台生成 + 切 B 会话会串扰。
|
||||
|
||||
**决策点**:是否立项 per-conv 化(streaming/currentText/streamingBlocks 改 Map<convId,...>)?
|
||||
- **a 立项根治**:store 改 per-conv Map,所有读写点改。大改(涉 ai.ts store + useAiEvents/useAiStream/useAiConversations/MessageList 多处),对齐 [[aichat-arch-extensibility]] AiSession 单例未动 + [[fe-arch-tech-debt]] status 无 union。
|
||||
- **b 暂缓(当前缓解够用)**:自清 + activeConv watch 已覆盖主路径(新轮/切会话/结束清),残留仅极端并发场景(A 后台 streaming + 切 B)。等 B 路线多会话并发([[aichat-b-route-parallel-multiround]])正式推进时一并 per-conv。
|
||||
**解决(2026-06-28 核验)**:✅ option a 已落地——
|
||||
- `stores/ai.ts` 用 `Object.defineProperty` 定义 streaming/currentText accessor
|
||||
- 委派 `aiShared.convStreamStates` per-conv Map,按 `activeConversationId` 索引读写
|
||||
- 单会话回归零变化(accessor 透明继承),多会话切会话不串扰
|
||||
|
||||
**多角度论证(自主决策依据)**:
|
||||
- 根治性:a 一次性消除单例串扰族 bug;b 缓解主路径,极端并发残留。
|
||||
- 改动面:a 大(store + 5 composable + MessageList),回归风险高,需全链路测;b 零额外改动。
|
||||
- 时机:b 与 B 路线多会话并发同批做更合理(那时 per-conv 是前置),现在单独做与 B 路线重复拆改。
|
||||
- 当前用户场景:自用单会话为主,多会话并发(A 后台 + 切 B)非高频。
|
||||
|
||||
**倾向**:**⏸️ b 暂缓**(当前修复缓解有效 + per-conv 是 B 路线大改 + 与多会话并发同批更合理)。
|
||||
**状态**:🟡 待拍板(若用户多会话并发场景频繁 → a 立项;当前单会话为主 → b 暂缓随 B 路线)。
|
||||
**状态**:✅ 已完成
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user