# 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` 变成“不可手改源码”的发布目标
