记忆中心设计文档:服务端到客户端全局复核,推翻 5 处设计
在 v0.2 复核现状盘点的基础上,从 gateway 逐层过到客户端,又推翻或补充 5 处。
风险表 11 高 / 20 中 / 2 低。
拾忆页是纯展示页,写操作 UI 一个都没有(最大的工作量遗漏)
全页没有 RefreshIndicator、没有 FloatingActionButton/Icons.add、卡片没有
onTap(唯一的 onTap 是范围切换 Tab)。于是 memory_update/del/complete 三个
写接口在客户端没有任何调用点,user_edited + gen_round 这套「保护用户修改」
的机制在没有编辑 UI 之前完全是空转的。分期表 #6 原先只写了「分类筛选、换源、
删 mock」,补上 6b:编辑层 / 勾完成 / 新增表单 / 下拉刷新 / 空态。
每日弹窗不能 await 在 splash——与 6a64c3d0 方向相反
那次提交刚把 _initMeetingTemplate 从启动串行链摘出去改成 unawaited,理由是
「启动时没有任何地方要用它」。文档写「每日弹窗排在启动第三个」等于把刚摘掉的
成本原样加回来,而且这次摘不掉。改成:splash 照常放行导航,进主页后 unawaited
拉 memory_today,拿到再弹。取舍同设备页那处「新耳机晚一两秒出现」。
MCP 工具会造成第二份查询实现
mcp 是独立进程,工具直接 mysql.Table(...).Where(...) 裸查,全模块搜不到一次
RpcCall。5 个新工具 = 过滤条件/分类白名单/权限规则在两个进程各写一遍,改一边
不报错地漂移。且 mcp.yaml 只配了 mysql,没有 redis/postgres。列了两条出路
(RPCX 调 home / 抽共享包),一期就要选,否则三期返工。
cron 的真实风险是漏跑不是重复
docker-compose.yml 没有 replicas/deploy,当前就是单副本,「多副本重复生成」
是前瞻性风险。现在会发生的是:00:30 跑到一半容器重启,cron 不补跑,
memory_report 永远停在 state=0,那周永远没报告且不报错。补上客户端驱动的
补偿(照 echomeet 的 PollTranscribe)。顺带记下 timer_uselog 那个每日 cron
零防重零补偿、靠 Redis Del 巧合幂等,不是可照抄的范例。
「报告挂额度」走不通
既有额度扣减全是「用户主动发起」语义(api_starttask 先查够不够再扣、失败 +=
退还;api_usages 扣 AI 次数)。周报是 cron 主动生成,用户什么都没做就被扣,
余额不足时「报告不生成」也没有合理的交互位置。改成三个可行选项,推荐只给
「上周期有 N 条以上记录」的活跃用户生成。
另补四条中危
- 业务错误会自动弹红色 snackbar(AuthInterceptor 默认行为),抑制名单里只有
user_getinfo/user_binddevice;memory_today/upcoming 是启动路径自动调的。
- code==0 且 data 为空拿到的是 {} 不是 null,与「业务错误」含义相反。
- AppLifecycleManager 已存在且 permanent 注册,前台恢复钩子直接复用,别挂
第四个 WidgetsBindingObserver(已有 emai/translation/permissions 三个)。
- ErrorCode 要新开 5201- 段,复用 ReqParameterError 会让客户端无法分流。
顺带确认无需改动的:/api/:param1/:param2 的 param1 就是服务名,模块挂进 home
后路径直接命中;meettemplates.vue 已能按语言编辑 outline/template;IsSign 时间戳
防重放所有 yaml 都没配(默认 false),并发请求暂不受影响;播报走 TTS 的 normal
支不碰 80c6ea1b 刚修好的 phone_call 路由,但共用同一个 AVAudioSession,判据是
通话翻译活动期间一律不播报。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|