Rodger-Wang
|
96a23b5791
|
docs:清理文档更正——echomeet_getsummaryservices 已被语音纪要「总结模型」使用,移出「没人调」清单
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
2 weeks ago |
Rodger-Wang
|
0ccc978993
|
清理:第 1 批,移出误进 git 的构建产物与本机文件(约 31MB)
- apps/services/console(29MB go build 产物)、apps/admin/.nuxt(45 个 nuxt 生成文件)
- dump.rdb、5 个运行日志、10 个 .DS_Store、1 个 .pyc
- 只从索引移除,工作区文件不动;.gitignore 补上此前没覆盖到的几类
- 附上本轮清理的落地文档 docs/2026-09-24-无用代码清理-落地文档.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 264acd2c742617a971e918cd22a0d816bf0ad44b)
|
2 weeks ago |
Rodger-Wang
|
4ec8932aef
|
车载香薰 AI 对话:唤醒问候、按键插话、自动回连、退出聊天、前后台与状态同步(均只对香薰生效,恒玄耳机流程不变)
- 会话:服务端放弃回复(requestAccepted)时停播解门控,修掉互等 90s 的卡死;会话中再按唤醒键=打断重听;
唤醒后用应用音色随机回一句「我在」;退出(0x07 03)无应答不再干等 2s;设备上线复位 AI 状态,
防 App 被杀后设备停在 AI 模式、再唤醒 0 帧上行;Android 会话期间开前台服务,防切后台被冻结断 WS
- 指令:extra_info.commands 为 JSON 字符串时也能解出 quit(新车载应用下发形状)
- 连接:香薰断线/冷启动自动回连(带退避、OTA 与主动断开不回连);回连带上记住的 MAC;
设备断开后界面显示最后连接的那台(DeviceHub 落盘 lastUsedVendor)
- iOS 经典蓝牙判断按 MAC 首字节±1/设备名匹配,连着就不再弹配对提示
- Android 播放器:车载会话(playbackOnly)回复间垫静音,防 A2DP 流挂起吞掉「我在」
- 聊天页:设备对话中底部按钮可「改用手机」;离开正显示香薰对话的页面时结束会话并通知设备
- 车载助手百炼应用 ID 改为 mm_127ddb82ba1244a99d2feaef0c1f
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
2 weeks ago |
Rodger-Wang
|
9f105bf7c8
|
会议纪要分享:链接最后一段改成服务端签发的只读票据,不再放登录 JWT
链接格式 share.ymaikj.com/share/{serverHost}/ymaikj.com/{id}/{ticket}。最后一段
以前放的是 logintoken(完整登录 JWT)——谁拿到链接就拿到了整个账号,转发进群、
被截图、进浏览器历史都等于把账号交出去,而且除了改密码没有任何失效手段。
现在是 HMAC 签名的分享票据:绑定单条记录、只读、默认 7 天过期,密钥由
FIELD_ENCRYPT_KEY 派生(上线不需要新配置项)。
- echomeet_getsharedrecord 必须在 gateway 白名单里——打开链接的人本来就没登录,
漏了是 code:18、表现为「分享链接打开一片空白」。签发端 echomeet_createsharelink
反之,不要加进白名单。
- 落地页嵌在 gateway 二进制里(go:embed),路由 GET /share/*any 必须是 catch-all:
路径里的段是数据不是文件路径,gin.Static 会去磁盘找同名文件、一律 404。
- 落地页的 ALLOWED_HOSTS 白名单不能删:serverHost 来自 URL,不校验就等于「构造
一条链接让别人的浏览器带着票据去请求任意域名」。新增环境要加一行。
- 极简 Markdown 渲染器先 esc() 再套正则,块级语法要匹配转义后的形态(引用块匹配
的是 > 不是 >),写成 > 不报错、只会静默退化成普通段落。
客户端侧:分享前先申请票据并加载提示,拿不到就不分享出一条必然打不开的链接。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
6f1686a8fd
|
client: EaiCar 设备设置面板(按能力出现、按设备回的 items 渲染)
「设备 → 设备管理」里 EaiCar 那一行整块可点(解绑按钮除外),弹底部面板拉 0x15
显示并可改:启停 0x0D / 音量 0x0B / 亮度 0x0A / 行车感应 0x11 / 摇摆 0x14 /
随机表情频次 0x13 / 随机播一个表情 0x06。
- 面板是厂商无关的:只认 DeviceCapability.settingsPanel 与 DeviceFeatures.settings*
通用键,按 settings.query 返回的 items 画控件,缺哪项不画哪项。EaiCar 插件把
通用键映射成字节(EaiCarSession.settingsCommand,纯函数,金测试逐字节钉死)。
以后耳机/支架要露设置,各自插件声明即可。
- 状态只有 0x15 一个来源:六条写命令只回 0x64 成功码,不回显新值也没有主动上报。
插件写成功后本地回填并派 settings.changed;面板从不自己推断状态。原先
_applySummary 解完 14 字节只留固件和电量,这次整份留下。
- 0x11 双向语义不同:AA 11 是行车感应开关,CC 11 是设备上报 AI 唤醒,按帧头分发。
- 「随机表情」设备只有频次(9 档秒数);「现在随机播一个」没有原生命令,
由 app 在 0x00~0x09 里挑一个发 0x06。
- 未连接的 EaiCar 行也可点(按设备名猜品类),进去是「未连接 / 去连接」;
其它品类的行 onTap 仍为 null,行为一字不差。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
811a008545
|
services: 语音纪要→拾忆→MCP 链路审计落地;修两个「什么都没发生」的既有 bug
审计与落地计划见 docs/语音纪要-拾忆-MCP链路审计与落地计划.md,已在阿龙测试环境
逐条验收通过(记录见该文档 §5.1)。
## 安全
echomeet 八个按 id 操作的接口**一处都没有比对 record.Uid 与会话 uid**,任何登录用户
改一个 id 就能读别人纪要全文、删改别人的记录、给别人的记录发起总结(扣自己算力,
但覆盖对方 summary 并触发对方的拾忆抽取)。统一改走带 uid 的查询:
- 「不存在」与「不是你的」回同一个错误码同一句话——分开回等于给出一个探测他人 id
的接口;用的还是改动前记录真不存在时的 DBError,合法用户行为无任何变化;
- 批量接口按交集处理、**不报错**:客户端轮询队列里本就可能留着已被别的设备删掉的 id,
报错会把整个轮询循环掀掉;delrecords 响应回实际删掉的那批;
- starttask 的校验排在扣算力之前,否则拒绝了还先把钱扣了;
- 回调接口是第三方来的、没有 session,不在此列。
- TestApisUseUidScopedQueries 扫源码守着:最容易复发的不是有人改回去,
而是新加接口时照旧写法抄一遍,那样既不报错也看不出来。
## gorm 的 default: 标签吞零值
mysql.Insert = db.Table().Create(model),gorm 对带 default: 的字段**一律把零值换成
默认值**。DBMemoryItem 的 date_certain(default:true) / remind_ahead(default:5) 因此
永远写不进 false/0:测试库 25 条记录全部落成 1/5,「待定日期」分组恒为空,
会议待办还会在 08:55 响提醒——与「会议待办默认不提醒」正好相反。
⚠️ 加 Select("*") **救不了**:替换在 ConvertToCreateValues 的 reflect.Struct 分支里
无条件做,只看值是不是零值,与 Select/Omit 无关(DryRun 实测两种写法生成的 VALUES
一模一样)。改成插入后把这两列按结构体现值补写回去,并把真值还给调用方——
gorm 连结构体上的字段一起改了,不还原的话 memory_add 回给客户端的也是错的。
存量由 migrate_defaults.go 幂等修正(只碰 source=meeting 且 user_edited=0)。
## 内容门槛
6 秒的测试通话、20 秒的单人自述照样被抽成「继续进行进一步的功能测试」这类废话待办,
再靠条数凑够周报阈值又触发一次 LLM 调用。门槛卡**转写正文**不卡纪要——内容太薄时
模型按模板兜底规则照样能写出六百多字。只拦抽取与 MCP 检索,**纪要照出**:
短语音备忘是合法用法,也不判成 SummarizFail(客户端把那个码显示成「请稍后重试」,
用户会一直点)。数据缺失时按通过处理,不因上游漏传一个字段就静默关掉抽取。
## 其余
- 报告补偿:原先的 requeueIfStale 由 memory_getreport 驱动,而客户端调无参版本 →
走 latestUnconfirmedReport,那条 SQL 只查 state=Done,pending/processing/failed
永远查不出来也就永远补不了。新增 ensureRecent 挂在 memory_today:漏建的补建
(过与 cron 同一道条数闸门)、卡住的复用 requeueIfStale、失败的至多重试 3 次
(计数寄在 error_msg 的 retry=N; 前缀,fail() 必须保住它,否则上限形同虚设)。
加 enqueueOnce 判重与按报告 id 的 SETNX 生成锁,cron 与 ensure 撞上只跑一次 LLM。
- 说话人标签:finishSyncTranscribe 拼的是「Speaker 0」(空格)、其余是「Speaker_0」,
抽出来的负责人就成了 Speaker2、[Speaker_0] 各种样。四条写入路径统一走 normalizeSpeakers,
顺带修掉没开说话人分离时拼出「Speaker_」空尾巴。
- 时区:LoadMemoryLocation 现在认 IANA / 固定偏移 / CST(按 Asia/Shanghai 解释,
兜住已落库那批),认不出来仍退服务器本地时区但**打 warn**——原来是全静默的。
- 删纪要连带删自动待办(只删 user_edited=0),查询带 uid:入参来自删除请求,
光信 source_id 等于把归属校验的成果又丢一次。
- 回调幂等:两个回调既不看状态也不抢锁,与轮询撞车就各翻译一遍、各入队一次。
失败分支同样要过闸门——一条已 Completed 的记录被迟到的失败回调打回 TranscribeFail,
用户看到的就是「纪要好端端地变成了转写失败」。挡下来仍回 SUCCESS,不让第三方重投。
SubmitAITask 保持不判重(用户点的「重新生成」悄悄跳过等于按钮失灵),
自动路径改走 submitAITaskOnce。
- 重复项统计:只展开闹钟。花销展开等于虚构金额,待办的 done/undone 按次拆不开。
## 顺带修的两个既有 bug(部署验收时挖出来的)
happen_date / period_start 都是 type:date 列 + DSN parseTime=True,读进 Go 的 string
是「2026-09-07T00:00:00+08:00」。SQL 比较靠 MySQL 转换还是对的,所以这个问题
**在任何日志任何报错里都看不见**,只在 Go 侧解析它的地方发作:
1. remind.go 的 expandItem 解析不了 → **memory_upcoming 恒返回 0 个提醒时刻,
整个拾忆提醒在服务端一直空转**(真机实测:建一条每天 08:00 的闹钟,slots 为 []);
2. 下发给客户端的 happen_date 一直是 RFC3339 而非协议约定的 YYYY-MM-DD,
客户端 _localToday() 的字符串相等比较恒不匹配、_mergeRange 在区间端点会重复。
这也是审计里「会议待办会在 08:55 响通知」只能是推演的原因:实际一条都不会响,
两个 bug 互相遮蔽。修法两层:ParseMemoryDate 容忍带时间的形式(安全网),
读路径出口统一归一(管对外格式),缺任一层都会留坑。
## 列表骨架化(同批)
echomeet_getallrecords 只回列表要用的骨架字段,original/translate/summary 占每条
97% 的字节(实测 59 条 ≈ 500KB,列表用得上的 15KB)。
⚠️ 骨架记录**绝不能写回库**:mysql.Save 是整行 UPDATE,三列会被清空。
StartTask 允许对已完成/已阅/失败的记录「重新转写」,那期间 state=Transcribing 而旧
纪要还在库里,用户切一下列表页旧转写和旧总结就没了。轮询前重新取整条再操作,
TestListEndpointNeverSavesBriefRecord 守着不许回退。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
41e3a023a3
|
client: 蓝牙名白名单(EaiRec/EaiCar);连接即按账号登记绑定;iOS 崩溃加固;弱网翻译超时
- 设备名闸门:支架只认 EaiRec/EAIMAR/Pad Note,车载香薰只认 EaiCar,固件名对不上直接不连;
一次性清掉此前被归一化名字污染的配对记录;Smartcar 资源与 agent 命名统一改为 EaiCar
- 绑定登记:新增 DeviceBindRegistry(按 uid|MAC 去重),支架也进 verifyConnected,
登录态从无到有时补报一次,换账号不再漏切绑定
- iOS 崩溃加固:补 NSPhotoLibraryAddUsageDescription(保存思维导图/统计图必崩);
StsAgent 先配音频会话再 installTap 并校验格式;支架录音两处 installTap 加 0Hz 守卫;
AzureTtsHelper 播放队列改加锁队列(三线程裸改 Array,release 下崩);
MicrophoneCapture 主线程不再用信号量等权限弹窗(看门狗误杀)
- 网络:connectionError 给中文文案;实时翻译请求 12s 超时,不再跟 30s 默认值等
- 附:AI 助手中枢设计文档 v0.2(未动代码)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
4 weeks ago |
Rodger-Wang
|
223f7d0a44
|
deploy: 移除本机连不上的 6 台服务器,顺带清掉测试里写死的下线机器凭据
云雁(yunyan)/灵谱(lingpu) 的部署目标从所有脚本移除,ENVS / PROD_ENVS / REGIONS
现在都只剩 along。那 6 台(云雁测试/上海/日本/新加坡、灵谱测试/正式)的 SSH 私钥路径
指向的是另一台开发机,本机一台都登不上(22 端口通、无可用密钥),留在交互菜单里只会误选。
- 删 deploy/{console,admin,app}/dev-deploy.sh 的 lingpu、yunyan 两段 env_profile
- 删 deploy/{console,admin}/prod-deploy.sh 的 yunyan、lingpu 两段
- 删 deploy/app/prod-deploy.sh 的 shanghai/japan/singapore 三段 region_profile
- 删 deploy/admin/deploy.sh:早期脚本,只指向灵谱且生产位留空,已被
dev-deploy/prod-deploy 取代(CLAUDE.md 里"要同步两份 deploy.sh"也是错的,
console 那份早就不存在)
- IP 与私钥路径不再记在文档里,需要时从 git 历史取回
镜像仓库刻意保留:registry.voitrans.net / registry.lingpu.net 都在,prod-build.sh
仍可选 yunyan|lingpu 推镜像(三家仓库本机都能读写,协作者仍从他那台机部署这两家)。
顺带修掉三处把已下线机器地址连明文数据库密码一起写死的测试:
- sys/nats/nats_test.go 有个真 bug——`url := "nats://<写死地址>"` 紧接着 `if url == ""`,
常量永远不为空,所谓"默认跳过"从来没生效:每次 go test 都在连那台早已废弃的机器,
白等 4.5 秒超时。现在真正读 NATS_URL 了。
- modules/{api,echomeet}/model_test.go 的 DSN 改走 API_TEST_DSN / ECHOMEET_TEST_DSN
另外给 app/prod-deploy.sh 加了一条明确报错:输入已移除的区域名(如 shanghai)原本会被
is_tag_like 当成版本号,报出"版本指定了两次"这种驴唇不对马嘴的错。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
4 weeks ago |
Rodger-Wang
|
bb483ec008
|
落地文档补上线后体检:修好统计主键与 MCP 反代,记下一次凭据搬迁的试错
修复三项:stats_global_day 主键重建(统计快照原本会全部写入失败)、
mcp.ymaikj.com 的证书与反代(SSE 需关缓冲)、手签证书的续期 crontab。
记下一次已回滚的试错:照着「测试有值/正式为空」搬短信与微信凭据是错的,
两边是不同服务商不同账号(测试走阿里云、正式配的腾讯云),混搭后
实测报 SmsSdkAppIdVerifyFail。已恢复原状。教训:凭据搬迁前要先核对
非机密的配套字段(Provider/AppId/模板/签名)是否同一账号体系。
另记七项待决策发现,含 NPM 管理端口公网开放、两机 MySQL 大版本差异
(8.0.27 vs 26.7.0)、nats healthcheck 命令写错导致恒 unhealthy。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
4 weeks ago |
Rodger-Wang
|
4c7902778f
|
落地文档补执行记录:0.2.0 已上线阿龙正式服
记下与计划的三处出入,其中一条对下次新环境上线有用:
config 表要在 app 首次启动之前导入——app 启动会写
COMPUTE_LEGACY_MIGRATED 标记并占掉自增 id=1,之后再导就撞主键。
剩余两件需人工:stats_global_day 主键重建(DDL 被本次会话权限策略挡住)、
mcp.ymaikj.com 的 NPM 反代与证书。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
4 weeks ago |
Rodger-Wang
|
37817f2e96
|
会员与算力:VIP 管准入、算力管计量;补上线落地文档
VIP 与算力两层权益各管一件事,判定与记账统一走 comm/compute.go:
- VIP 管功能准入(无 VIP 时 user_translate / echomeet_starttask 返回 VipRequired);
自购记 user.vipexptime,设备赋予记在 device_mac 行上(激活日 + 天数),
两者在 ResolveUserVip 合并成有效值下发,库里仍只记自购——以前绑定礼把天数
累加进用户表,解绑时拆不开。
- 算力管用量计量,按后台系数折算,先扣设备赠送再扣用户余额。
三个旧额度桶停用,存量余额由 home 启动时一次性折进 computebalance。
- 闸门 COMPUTE_GATE 默认关:user_usages 是用完才上报、没有预扣,
现在开闸门形同虚设。
另含本次「阿龙测试服 → 正式服」上线落地文档(docs/),
以及 admin 侧商品/设备/产品/用户页的配套改动。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
4 weeks ago |
Rodger-Wang
|
dbf7f2403b
|
记忆中心文档 v0.3:标注实施状态与剩余待办
新增 §零(实施状态)与 §十三(剩余待办)。
§零 列出一~三期已落地的 18 项与对应落点,并记下实施中替你做的三个默认决策
(成本闸门选活跃度阈值而非额度、多币种一期只分行不换算、「上周」固定 ISO 周),
三条都可推翻。
§十三 分四类列剩余项:
A 外部系统操作(百炼后台补/摘工具、会议模板第四节、mcp 的 GATEWAY_TOKEN_KEY)
B 产品决策(USE_EXACT_ALARM、提醒送达率预期、实名闸门、埋点、数据导出)
C 已知偏差(会议日期用上传时间、周报 cron 是北京时间、迁移丢时区、i18n 英文占位)
D 未做(小票 OCR、后台排障页、allhelp 的 doubao 硬编码)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
1 month ago |
Rodger-Wang
|
4a24ece7d3
|
记忆中心设计文档:服务端到客户端全局复核,推翻 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>
|
1 month ago |
Rodger-Wang
|
7c5c23acaa
|
记忆中心设计文档 v0.2:复核现状盘点
v0.1 之后主仓有 4 次提交(翻译延迟优化、设备表合表、收拢积压改动、
上传改预签名 URL),本次逐条复核「现状盘点」,修正已不成立的条目,
并记下会绊到本设计的既有缺陷。状态仍为未开工。
|
1 month ago |
Rodger-Wang
|
24e17b3434
|
收拢积压改动:恒玄 OTA、发版配置拆表、实名认证、芯片厂商/代工厂管理等
把工作区里积压的多轮改动一次性入库。主要几块:
客户端
- 恒玄 OTA 打通:新增 local_plugins/bes_ota_manager(自包含 BES SDK,
Android Java + iOS ObjC,SPP OTA 2.0),路由切到 BesOtaUpgradeView /
BesOtaUpgradeController,配套下载服务;杰理那套文件保留但已不挂路由。
- 通话翻译新增阿里 3.5 档(alibaba35_language_config.dart,
qwen3.5-livetranslate-flash-realtime + 实时声音复刻)。
- 实名认证接入、游客登录改走服务端 api_sgin 的 Tourists 分支、
功能闸门由 GuestGuard 改为 IdVerifyGuard。
- 41 个语种文案同步(OTA 新增 28 个 key 等)。
- 默认主题改为浅色,不跟随系统。
服务端
- 发版类配置拆表:app_release(版本控制 / 游客显隐,一应用一行)与
channel_app(渠道级下载地址 / 上架状态 / 支付渠道)分家,
新增 comm/apprelease.go 与 console/api_apprelease.go。
- 授权码字符串整体移除:删除 utils/license 包,新增 utils/devcode
(MAC 规范化与 PID 反解),配套迁移 SQL 在 docs/migrations/。
- console 新增芯片厂商、代工厂、用户管理接口与对应 admin 页面。
- 身份证实名核验(sys/idverify)与第三方服务的服务端专用类别。
其它
- .gitignore 补挡 apps/services/lego/sys/gin/log-*.log:gin 子系统跑起来
会按时间戳滚动生成日志(多为 0 字节),与 apps/services/comm/log 同一
性质,不进版本管理。已跟踪的 log-2026-08-20 那个仍在库里,未动。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
1 month ago |
Rodger-Wang
|
27434754a1
|
记忆中心设计与开发文档
把「代办」页升级为「记忆」页的完整设计:统一 memory_item 模型
承载闹钟/待办/灵感/花销四类且分类可扩展,会议纪要经 AI 抽取自动
落成待办,每日播报、提前 5 分钟提醒、周报月报复盘,以及经 MCP
工具让 EMAI 助手随时问答,形成录入→提醒→复盘→问答的闭环。
盘点后确认在 allhelp 已有的任务体系与异步总结流水线之上演进,
而非另起炉灶;DBTask「仅记录不自动触发」的限制与花销后端空白
是本次要补的主要缺口。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
1 month ago |
liwei1dao
|
1639cf35a0
|
上传代码
|
2 months ago |
liwei1dao
|
948e368996
|
上传代码
|
2 months ago |
liwei1dao
|
59e54eb575
|
上传发布版本
|
2 months ago |
liwei1dao
|
97ecbf9df5
|
上传新版本的管理后台
|
2 months ago |
liwei1dao
|
6e5da54cf8
|
上传代码
|
3 months ago |