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
+30 -64
View File
@@ -1,44 +1,21 @@
> **生产环境警示:当前目录 `/Users/john/Project/Memind` 为生产目录与生产环境,禁止重启服务;操作前先阅读 [docs/service-isolation-runbook.md](docs/service-isolation-runbook.md)。**
> **本仓库说明:这是 `test-memind` 本地开发仓库,默认用于本机联调与验收。生产 / 测试 / 预览隔离规则单独看 [docs/service-isolation-runbook.md](docs/service-isolation-runbook.md),不要把生产同步流程混进本地开发。**
>
> **重要:** `pnpm dev` 只启动本仓库自己的服务,不再联动 Plaza。需要全栈联动时请显式使用 `pnpm dev:all`。
>
> **流程硬约束:** 本机开发每次都要形成 Git commit;本机不允许直接 `rsync` 到 `103` 或 `105`,只能从本地 commit 打包发布。
# Memind (TKMind H5)
Memind 主应用Plaza 发现广场与管理后台。当前生产入口统一是 `105 -> Studio` 反代链路,详细流程分别见下面三份 runbook
Memind 主应用Plaza 发现广场。**当前以本机 Mac 为主服务**,105 服务器已停用
> **开发基线:** `v0.1.0-baseline`2026-06-16)— 后续开发请从此 tag 创建分支,详见 [docs/BASELINE.md](docs/BASELINE.md)。
## 统一拓扑
```mermaid
flowchart TB
User[用户 / 浏览器 / 微信] --> N105[105 公网入口]
N105 --> G2[g2.tkmind.cn]
N105 --> Plaza[plaza.tkmind.cn]
N105 --> Gadm[gadm.tkmind.cn]
G2 --> StudioG2[Studio 生产机<br/>Memind H5 :8081 / Plaza :3001]
Plaza --> StudioPlaza[Studio 生产机<br/>Plaza :3001]
Gadm --> StudioAdm[Studio 生产机<br/>memind_adm :8082]
StudioG2 --> Portal[Portal / API]
StudioPlaza --> Portal
StudioAdm --> AdminAPI[admin-server.mjs]
```
## 入口总览
| 入口 | 说明 | 文档 |
|------|------|------|
| `g2.tkmind.cn` | 主应用 H5105 入口转发到 Studio | [docs/release-deploy.md](docs/release-deploy.md) |
| `plaza.tkmind.cn` | Plaza 前台,105 入口转发到 Studio | [docs/plaza-local.md](docs/plaza-local.md) |
| `gadm.tkmind.cn` | `memind_adm` 后台,105 入口转发到 Studio | [docs/gadm-local.md](docs/gadm-local.md) |
## 快速开始
```bash
pnpm install
cp .env.example .env # 按需填写
pnpm dev # MindSpace + Plaza + Ops
pnpm dev # MindSpace + API / Portal + Ops
```
| 服务 | 地址 |
@@ -49,17 +26,19 @@ pnpm dev # MindSpace + Plaza + Ops
| API / Portal | http://127.0.0.1:8081 |
| memind_adm | http://127.0.0.1:8082 |
详见 [docs/local-dev.md](docs/local-dev.md)。生产机器上预览前先看 [生产 / 测试 / 预览隔离规程](docs/service-isolation-runbook.md),不要占用 `8081`
`pnpm dev` 现在只启动本仓库自己的服务,Plaza 已单独剥离为 `pnpm dev:plaza` / `pnpm start:plaza`。如果你确实要一次性拉起旧式全家桶,请用 `pnpm dev:all`
详见 [docs/local-dev.md](docs/local-dev.md)。如果你在本机联调 Plaza,请优先看本地开发文档里 `PLAZA_APP_DIR` 的默认路径;生产 / 测试 / 预览隔离另看 [生产 / 测试 / 预览隔离规程](docs/service-isolation-runbook.md)。
仅 Plaza
```bash
pnpm start:plaza # 本机正式模式(105 反代回源)
pnpm start:plaza # 本机正式模式(Tunnel 回源)
pnpm dev:plaza # 开发热更新
pnpm open:plaza # 浏览器打开 https://plaza.tkmind.cn/plaza
```
## Plaza 入口
## Plaza 本机为主
完整说明见 **[docs/plaza-local.md](docs/plaza-local.md)**,摘要如下:
@@ -72,59 +51,46 @@ pnpm open:plaza # 浏览器打开 https://plaza.tkmind.cn/plaza
| 开发调试 | `pnpm dev:plaza` |
| 诊断 | `pnpm check:plaza` |
公网 `https://plaza.tkmind.cn`105 反代回源 Studio 本机 `:3001`,需保持 `pnpm start:plaza` 运行。
## gadm / memind_adm
管理后台和运维接口说明见 **[docs/gadm-local.md](docs/gadm-local.md)**。
| 服务 | 地址 |
|------|------|
| memind_adm | http://127.0.0.1:8082 |
| ops 审核后台 | http://127.0.0.1:3002/ops/ |
公网 `https://plaza.tkmind.cn`Cloudflare Tunnel 回源本机 `:3001`,需保持 `pnpm start:plaza` 运行。
## 常用脚本
| 命令 | 说明 |
|------|------|
| `pnpm dev` | 全栈开发 |
| `pnpm dev` | 本仓库开发(不含 Plaza |
| `pnpm dev:all` | 兼容入口:全栈开发(含 Plaza),仅在需要联动 Plaza 时使用 |
| `pnpm open:local-test` | 浏览器打开 H5 |
| `pnpm start:plaza` | Plaza 正式模式 + Portal |
| `pnpm dev:plaza` | Plaza 开发模式 + Portal |
| `pnpm open:plaza` | 浏览器强制本地解析 |
| `pnpm check:plaza` | 本地 Plaza 诊断 |
| `pnpm test` | 单元测试 |
| `bash scripts/deploy-to-test-host.sh --dry-run` | 预览并检查到 `192.168.1.9` 的同步差异 |
| `bash scripts/deploy-to-test-host.sh` | 同步 `Memind / memind_adm / Plaza` 到测试机 |
| `bash scripts/release-portal-runtime-prod.sh --dry-run` | 预演 103 Portal runtime 发布包,不做实际切换 |
| `bash scripts/release-portal-runtime-prod.sh` | 本机构建 runtime artifact 并按正式流程发布 Portal 到 103 |
## 通过 rsync 发布到测试机(推荐)
目标机路径(你给的基线):
- `/Users/john/PycharmProjects/test/test-memind`
- `/Users/john/PycharmProjects/test/test-memindadm`
- `/Users/john/PycharmProjects/test/test-memindplaza`
执行:
## 发布规则入口
```bash
cd /Users/john/Project/Memind
bash scripts/deploy-to-test-host.sh --dry-run
bash scripts/deploy-to-test-host.sh
cd /Users/john/PycharmProjects/test/test-memind
bash scripts/release-portal-runtime-prod.sh --dry-run
bash scripts/release-portal-runtime-prod.sh
```
说明:
- 这是“仅源码同步”流程,不会包含 goose 相关服务
- 默认会同步三个目录(`--only-memind` / `--only-adm` / `--only-plaza` 可单独操作)
- `--skip-delete` 可避免远端删除未在本次排除列表中的文件
- 同步后仍需按你们现网启动方式重启对应服务
- 103 Portal 生产必须是**无源码 runtime 模式**
- 103 生产禁止 `rsync`
- `bash scripts/release-prod.sh` 已停用,不得再用于 Portal
- 规则文档见仓库根目录的开发 / 测试 / 生产发布规则,以及 [Portal 无源码迁移说明](docs/no-source-portal-migration.md)
## 文档
- [本地开发(test.*.tkmind.cn](docs/local-dev.md)
- [Memind 小白使用手册](docs/memind-beginner-guide.md)
- [标准化开发测试发布约束](ENGINEERING_WORKFLOW_RULES.md)
- [开发环境规则](DEVELOPMENT_RELEASE_RULES.md)
- [测试发布规则](TEST_RELEASE_RULES.md)
- [生产发布规则](PRODUCTION_RELEASE_RULES.md)
- [生产更新发布指南](docs/release-deploy.md)
- [生产 / 测试 / 预览隔离规程](docs/service-isolation-runbook.md)
- [Plaza 入口与发布](docs/plaza-local.md)
- [gadm 入口与发布](docs/gadm-local.md)
- [Plaza 本机部署与 Tunnel](docs/plaza-local.md)