Rodger-Wang
|
2cf260eb05
|
服务端:音乐模块与腾讯云 COS 整体下线;新增分发桶(App 安装包与录音/固件分开放)
音乐:sys/music、sys/musicobj、modules/music、mcp/tool_music.go 全部删除,home 的
模块列表与 musicobj 初始化、两份 yaml 模板里的 musicobj 段一并去掉。起因是它的
ApiBaseUrl 指向上一代品牌域名;客户端的音乐模块本来就早已删除。
⚠️ 咪咕音乐(tool_migu_music + migu 服务)没有动,别一起当成音乐链路删了。
腾讯云 COS:sys/tencentyun 整个删除,home/api 的 cos.OnInit 与配置段、
comm.svcRuntimeSections 的 cos 托管一并去掉。头像上传改走阿里云 OSS(与
user_getuploadurl、console 后台直传同一个桶)。modules/api/api_getcostoken.go 是
孤儿(后台调的其实是 console 那个同名路由,客户端从不调),删除。后台两处的
腾讯云 COS 卡片/模板与巡检探针也删——服务端读存储配置的唯一入口只认
provider=aliyun_oss,留着是「配得上却不生效」的陷阱。存量 tencent_cos 行不动。
⚠️ 老客户端仍读业务库 config 表的 COS_* 直传腾讯云,那 5 个键别删;历史录音的
audiourl 是 COS 绝对地址,不会自动搬家。
分发桶:comm.AliyunOSSConf 加 DistBucket/DistDomain(留空用 ymai-dl /
dl.ymaikj.com),凭据与主桶共用。后台「上传 APK」走 api_getcostoken 带
target:"dist":key 不加 EAIMAR 根前缀(分发桶直接挂在 dl.ymaikj.com 上)、目录走
白名单、按应用分子目录(一个桶放多个应用,不分目录会静默互相覆盖)。
⚠️ Content-Type 由服务端按扩展名强制并回带给前端:浏览器对 .apk 给出的 File.type
往往是空串,前端照它发 PUT 会与预签名不符、OSS 回 403,而报错里完全看不出是类型
对不上。⚠️ 分发桶必须单独配 CORS(来源 console.ymaikj.com、方法 PUT),
浏览器直传打的是桶的 OSS endpoint 而不是自定义域名。
另含下载落地页 deploy/dl(含 OSS 部署教程)与各 deploy 脚本/README 的同步更新。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
90fe2d6c2a
|
services: 阿里机器翻译的错误解析兼容数字 Code,未开通时给出可操作的提示
排查客户端「翻译失败」时发现两处会把真实原因吞掉:
- Code / WordCount 两个字段阿里有时回字符串、有时回数字,struct 里写死 string
会让整个响应 json.Unmarshal 失败,错误变成「解析失败」,真正的服务端返回码
一个字都看不到。改用 flexStr,两种 JSON 形状都吃。
- code 10009 / "is not activated" 说的是机器翻译产品没开通或 RAM 子账号没授权
(实测:子用户 200212789836990119 缺 AliyunAlimtFullAccess)。这属于账号侧
配置,不是代码问题,所以单独给一条指名道姓的错误,别让它混在通用失败里。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
4d97c99528
|
services: 通话录音按左右声道分轨转写,说话人直接按音轨给
客户端录的通话音频是双声道 WAV(左=本端麦克风、右=对端),而 DashScope 录音文件识别
不传 channel_id 时只转第 0 轨 —— 语音纪要里只有机主自己说的话,对方一句都没有。
- 提交前先探一次 WAV 头(probeWavChannels),确认是多声道才传 channel_id=[0,1]:
每多一轨按一份音频计费,单声道文件不该白花钱;
- 多轨结果每轨一份 transcript,说话人直接按音轨定(0=本端 1=对端),
比让服务商去分离 speaker_id 可靠得多,再按时间轴合并成一条转写。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
3 weeks ago |
Rodger-Wang
|
e00b617025
|
services,admin,client: 服务配置按应用隔离、应用参数下线、客户端凭据走加密 v3
后台
- 服务配置去掉「全局默认」层,svc_config / svc_region_override / echomeet_orch
/ echomeet_orch_setting / echomeet_template 五张表统一按 app_name 隔离,
启动迁移 migrate_scope.go 幂等分配(首个应用原地改名保 id,其余拷贝);
写接口 app_name 必填(scope_check.go)。
- 类别落库 svc_category,可增删改;内置 11 个 id 不可改不可删,运行时语义仍只挂 comm.SvcCat*。
- 「应用参数」标签页下线:业务库 config 表不再随 user_getappconfig 下发,
migrate_appparams.go 把 AGENT_TYPE / MOBILE_ELF_* 迁到服务 llm_mobile_elf、
iapCustomerServiceQQ 迁到 app_params,COMPUTE_*/NEWUSER_GIFT_* 留在 config 表不下发,
无人读的音乐/公码/导航/COS_*/MeetServers 删除,其余键保留并在启动日志告警。
- 删除 console appcfg/* 与 api 模块的 get/add/update/delconfig、唤醒音四个接口(无调用方)。
- 修 getmcpservers 仍查全局层导致 MCP 类服务永远读不到。
客户端
- 凭据改走结构化通道:user_getappconfig_v3 整体 AES-CBC 加密(api_crypto.dart,
拦截器须排在 AuthInterceptor 之前),AppConfig.cred(svcId, field, envKey) 取值,
老键名只作兜底;lib 内 AppConfig.env( 已降到 0 处调用。
- 图片翻译的 ALIBABA_VL_MODEL / ENDPOINT 改挂 ast_alibaba。
启动日志
- 删除 sys/auth/firebase(google_auth 的重复实现,零调用方,且同一错误刷两行)。
- api 模块不再每次启动无条件插入默认超管(Duplicate entry 'admin')。
- sys/auth/* 五个包的 logger 名从复制来的 sys.tavily 各改各名;
google_auth 启动时即判断配置是否可用。
Co-Authored-By: Claude Opus 5 (1M context) <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
|
90abb0ad42
|
身份证实名核验、翻译与新用户开户礼
本次会话开始前就已存在于工作区的改动,一并提交。主要是三块:
1) 身份证实名核验(sys/idverify + user 模块)
接入阿里云 Id2MetaVerify、腾讯云 IdCardVerification、创蓝三家 provider,
无状态工厂——配置在 svc_config 里按应用作用域存,调用时才解析。
客户端接口 user_idverify / user_getidverify。
凭据是云账号主 AK/SK,故新增服务端专用类别 comm.SvcCatIdVerify=11,
由 svcresolve.go 在下发口整条跳过,svcpool_serveronly_test.go 守着这条底线。
2) 翻译(sys/aliyun/translate + comm/lang.go)
语言码归一与阿里云翻译调用。
3) 新用户开户礼(newuser_gift.go)
配套 api_sgin 建号流程。
注:go test ./modules/user/ 里的 TestApiProbeAppConfigV3 会失败,但与本次改动无关
——那是打线上接口的联调探针,硬编码的域名 app-dev.voitrans.net 已废弃、JWT 也过期了,
该文件自 b2577e16 起未改动过。go test -short 会跳过它,其余全部通过。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
1 month ago |
liwei1dao
|
1639cf35a0
|
上传代码
|
2 months ago |
liwei1dao
|
aca7204e57
|
上传代码
|
2 months ago |
liwei1dao
|
59e54eb575
|
上传发布版本
|
2 months ago |
liwei1dao
|
a36f0a016a
|
上传服务端代码
|
2 months ago |
liwei1dao
|
18ffb48466
|
上传代码
|
2 months ago |
liwei1dao
|
6e5da54cf8
|
上传代码
|
3 months ago |
liwei1dao
|
197d544062
|
上传管理后台的系统升级和服务配置逻辑优化
|
3 months ago |
liwei1dao
|
99de0fa26f
|
上传代码修复
|
3 months ago |
liwei1dao
|
eaecd00d20
|
上传基本版本
|
3 months ago |
liwei1dao
|
1d25322437
|
上传当前版本
|
3 months ago |
liwei1dao
|
b493d5b4b1
|
上传部署代码
|
3 months ago |
liwei1dao
|
ec7d512172
|
上传基础开发版
|
4 months ago |
liwei1dao
|
66d561dc1b
|
上传代码
|
4 months ago |
liwei1dao
|
715f8e3818
|
上传厨师版本
|
4 months ago |