Files
memind/docs/local-dev.md
T

91 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本地开发
> 这是本机本地开发文档,只处理当前工作区里的源码联调,不做任何生产同步。
> `pnpm dev` 不再启动 Plaza;如果需要联动 Plaza,请显式运行 `pnpm dev:all`,或者单独运行 `pnpm dev:plaza` / `pnpm start:plaza`。
> Plaza 专用脚本的源码默认指向同级仓库 `../memind_plaza`;如你的目录不同,请用 `PLAZA_APP_DIR` 覆盖。
> 生产 / 测试 / 预览隔离仍单独看 [生产 / 测试 / 预览隔离规程](./service-isolation-runbook.md)。
`pnpm dev` 启动后,用 **127.0.0.1 + 端口** 访问本仓库自己的服务:
| 服务 | 地址 |
|------|------|
| MindSpace H5 | http://127.0.0.1:5173/?preview=mindspace |
| Ops 审核后台 | http://127.0.0.1:3002/ops/ |
| API / Portal | http://127.0.0.1:8081 |
| memind_adm | http://127.0.0.1:8082 |
| Plaza | http://127.0.0.1:3001/plaza |
```bash
pnpm install
cp .env.example .env
pnpm dev
pnpm open:local-test # 浏览器打开 H5
```
### LaunchAgent 常驻(推荐本机联调)
终端里跑 `pnpm dev` 会在 Cursor / 终端关闭时被 SIGTERM 停掉。若希望登录后自动拉起、掉线自恢复,可安装 LaunchAgent(与 imgproxy / goosed 同类):
```bash
pnpm setup:dev-launchagent
# 卸载
pnpm setup:dev-launchagent:uninstall
```
| 项 | 值 |
|----|-----|
| Label | `cn.tkmind.memind-dev` |
| 进程 | portal (8081) + memind_adm (8082) + Ops (3002) + Vite (5173) |
| 日志 | `~/Library/Logs/memind-dev.log` |
安装后仍可用 `pnpm dev` 做前台调试;两者不要同时占用同一端口。重启服务:
```bash
launchctl kickstart -k gui/$(id -u)/cn.tkmind.memind-dev
```
需要旧式全栈联动时,改用:
```bash
pnpm dev:all
```
## 环境变量
| 变量 | 默认 | 说明 |
|------|------|------|
| `H5_PORT` | 8081 | Portal / API |
| `VITE_PORT` | 5173 | MindSpace 前端 |
| `PLAZA_PORT` | 3001 | Plaza |
| `OPS_PORT` | 3002 | Ops SPA |
| `ADMIN_PORT` | 8082 | memind_adm |
| `H5_PUBLIC_BASE_URL` | http://127.0.0.1:5173 | 公开链接基址 |
| `PLAZA_APP_DIR` | ../memind_plaza | Plaza 专用脚本的源码路径(`pnpm dev:plaza` / `pnpm start:plaza` / `pnpm dev:all` |
Plaza 本地开发说明见 [plaza-local.md](./plaza-local.md)。生产发布、同步与回滚不要在这里处理,统一看 [生产更新发布指南](./release-deploy.md)。
## 公众号 Agent 调试
服务号消息转发到专属 Agent 这条链路默认关闭,只有显式设置下面这些变量后才会启用:
- `H5_WECHAT_MP_ENABLED=1`
- `H5_WECHAT_MP_APP_ID`
- `H5_WECHAT_MP_APP_SECRET`
- `H5_WECHAT_MP_TOKEN`
服务号后台需要把服务器地址指向:
```text
{H5_PUBLIC_BASE_URL}/webhooks/wechat-mp/messages
```
当前版本只支持“明文模式”回调,不支持 `aes` 安全模式解密。要保证 H5 微信 OAuth 和公众号消息使用同一个服务号 `AppID`,这样消息里的 `openid` 才能直接命中已绑定用户。
如果要立即停用这版,不改代码也可以先把:
```bash
H5_WECHAT_MP_ENABLED=0
```
然后重启 `server.mjs`。这相当于运行时止血;如果确认整版不要,再按代码回撤处理。