Add smart ACK provider for WeChat MP replies

Replace fixed ackText with a rule-based AckProvider that picks
response templates by message type and intent (translate, summary,
rewrite, poster, ppt, mindmap, code, search, schedule). Pure sync,
zero I/O, auto-falls back to config.ackText on any error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
john
2026-06-26 15:19:03 +08:00
parent 9ed4fd48d7
commit 9b4a25799f
162 changed files with 17276 additions and 2054 deletions
+138
View File
@@ -0,0 +1,138 @@
# 103 生产收口记录(2026-06-26
## 目标
`103` 从“可直接手改的运行工作树”收口为“只接收本地发布包的生产环境”。
这份记录只做两件事:
1. 固定 2026-06-26 看到的真实生产状态。
2. 给后续“本地唯一发布源”改造提供基线。
## 已确认的生产真相
### 主机与入口
- 生产主机:`john@58.38.22.103`
- 当前 SSH 端口:`22`
- 旧的 `2222` 已关闭,不应再写入文档或脚本
### 运行目录
- Memind: `/Users/john/Project/Memind`
- 管理后台: `/Users/john/Project/memind_adm`
- Plaza: `/Users/john/Project/memind_plaza`
### 运行服务
- `cn.tkmind.memind-portal`
- `cn.tkmind.plaza`
- `cn.tkmind.memind-adm-web`
- `cn.tkmind.memind-adm-api`
- `cn.tkmind.goosed-18006`
- `cn.tkmind.goosed-18007`
结论:Goose 在线上是双实例负载,本地不需要强行复制这套拓扑;这部分应作为“发布后巡检”处理,而不是“本地开发必须等价”处理。
## 数据库结论
### 生产正在使用的业务库
`/Users/john/Project/Memind/.env``/Users/john/Project/memind_adm/.env` 都指向同一个 RDS
- `DATABASE_URL=.../goose`
因此:
- 当前正式业务库是 `goose`
- `memind` 库仍存在,但不是当前正式流量的主写入目标
### 2026-06-26 抽样结果
`goose`
- `h5_users`: `41`
- 有充值/加款记录的用户数:`27`
`memind`
- `h5_users`: `26`
- 有充值/加款记录的用户数:`12`
这说明 `memind` 更像旧数据或历史分流,当前生产业务应以 `goose` 为准。
### 付费用户观察
`goose.h5_billing_ledger` 统计:
- 除去明显超大测试/管理员账户 `admin`
- 充值额度最高的真实用户:`wx_95eskyda / cheng cong👑`
- 实际消耗最高的真实用户之一:`wx_ul610et8 / 唐`
## 工作树漂移结论
### 103 生产工作树
- `Memind`
- branch: `main`
- commit: `728b01c`
- dirty files: `154`
- `memind_adm`
- branch: `main`
- commit: `7a5b9cc`
- dirty files: `42`
### 本地工作树
- `test-memind`
- commit: `d51df2f`
- local diff count: `102`
- `test-memindadm`
- commit: `f217232`
- local diff count: `28`
## 判断
不能把 `103` 视为“最新版本”,也不能把本地直接视为“可全量覆盖生产”的唯一事实。
当前状态更准确的描述是:
1. `103` 是真实运行版本,但带有大量未回收漂移。
2. 本地是主要开发来源,但尚未完成对 `103` 有效差异的回收。
3. 因此必须先做一次“收口”,再执行“本地唯一发布源”制度。
## 收口策略
### 禁止动作
- 禁止再用 `rsync` 直接覆盖生产工作树
- 禁止在 `103` 直接改源码后继续跑
- 禁止把 `103` 直接反向同步进本地主开发目录
### 允许动作
1. 单独创建 `103-baseline` 副本或 worktree
2.`103` 与本地、目标主线做三向比较
3. 只回收“生产独有且必须保留”的热修
4. 回收完成后,以本地提交为唯一发布源重新出包上线
## 后续制度
从这次收口完成后开始:
1. 本地源码是唯一发布源
2. 生产只接收发布包
3. 发布包上传到 `incoming/`
4. 生产解包到 `releases/`
5. 备份当前 live 目录
6. 原子切换目录并重启
7. 失败自动回滚
## 需要继续执行的事项
1.`memind_adm` 补齐与 `Memind` 一样的发布包脚本和规则文档
2.`103` 导出一个只读差异清单
3. 把真正必须保留的生产热修回收到本地
4. 收口完成后,把 `103` 变成“不可手改源码”的发布目标