Your Name and Claude Opus 5
f313979e88
开场消息条数限制,附近按距离分档随机刷新
...
一、对方回复前,免费用户最多发送 N 条(默认 3,迁移 034,管理端可改,
0 表示不限)。约束在 persistMessageContext 的事务内,HTTP 与 WebSocket
两条发送路径都覆盖,并发也不会挤过最后一个名额。要点:
- 对方一旦开口,限制永久解除;会员始终不受限。
- 撤回自己的消息不会换回名额,否则删了重发即可绕过。
- AI 托管账号的回复是「回答」不是「敲门」,不计入限制。
- 被拒时返回 30007 + HTTP 402,与会员媒体限制区分,客户端据此引导开通。
- 消息列表接口附带 unansweredQuota,聊天页在发送失败之前就把剩余条数
告诉用户。
二、附近下拉刷新按距离分档随机。原先带 seed 的分支排在最前,导致附近
一旦刷新就退化成全城纯随机、距离排序被完全丢弃。现在按 1 公里分档,
档内用同一 seed 做确定性洗牌:刷新会换人,但近处的人永远排在远处之前,
同一 seed 下分页顺序稳定,不会重复或漏人。
两个既有测试显式关闭了开场限制——它们测的是入队规则和媒体会员限制,
连发消息只是手段。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-04 18:21:19 +08:00
Your Name and Claude Opus 5
b42743c882
AI 托管账号支持筛选未托管
...
筛选只有「仅已托管」一个选项,想找还没开启的账号只能翻页。补上
managed=0:未托管既包括从未绑定的账号,也包括绑定后被关闭的账号,
运营要开启的正是这两类,所以放在一起。
测试覆盖三种状态,并断言两个筛选相加等于全部、没有重复计数。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-04 11:34:39 +08:00
Your Name and Claude Opus 5
812d8032e1
修复 AI 回复为空与开头数字被吞
...
日志里一批「成功但回复为空」的调用,completion tokens 恰好等于配置的
上限 256:推理模型把预算全花在思维链上,正文没写出来就被截断。
- 解析 OpenAI 兼容响应时读取 reasoning_content,并据此与 finish_reason
判断「被截断」。
- 被截断时自动加大预算重试一次(4 倍,下限 1024、上限 4096),两次调用
都记入日志以便核算成本;重试后仍为空才报错,并说明是推理占满预算,
提示调高 tokens 或改用非推理模型。
- sanitizeAIReply 原本用 TrimLeft 去掉列表符号,连同任何开头的数字一起
吃掉了——「30岁啦」发出去变成「岁啦」。改为只匹配真正的列表前缀
(- * • 或 "1. " "2、"),号码、年龄、时长都不再受损。
线上两台已将模型 max_tokens 由 256 调整为 2048。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-04 10:50:25 +08:00
Your Name and Claude Opus 5
acd8933dbb
后端:资料距离、语音图片会员限制、免短信注册、AI 托管回复修复
...
- 单用户资料接口补上距离:此前只有推荐/附近列表会算距离,资料页和
聊天头部因此无内容可显示。沿用同一套 haversine 与隐私开关。
- 语音/图片消息可限定会员发送,两个开关在管理端「运营配置」中修改
(迁移 032)。校验放在 persistMessageContext,HTTP 与 WebSocket
两条发送路径都覆盖;文本消息永不受限。
- 短信服务关闭时注册不再要求验证码:关掉之后没人能拿到验证码,继续
要求就等于关闭注册通道。重置密码不做同样放宽,那里缺验证码等于
凭手机号夺号。app/config 增加 smsVerification 供客户端决定表单形态。
- 修复 AI 托管账号之间不回复:原规则按「发送方是否托管账号」拦截,
把真人操作测试号的正常对话也挡了。改为标记 worker 自己写入的回复,
只对 AI 生成的消息跳过入队。
- ai.default_model_id 同时接受模型 ID 与名称,填名称时不再被 MySQL
静默转成 0 而使配置失效。
- 聊天媒体留存管理与清理任务(迁移 033,两台线上均已应用)。
新增集成测试均针对真实 MySQL:会员限制、免短信注册、AI 入队规则、
默认模型解析、资料距离。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-04 10:00:08 +08:00