Files
qipai/docs/configuration.md

115 lines
6.6 KiB
Markdown
Raw Permalink 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.
# 配置总表
> 当前总纲:V5.4.md
> 最后更新:2026-06-22
> 维护规则:任何配置路径、账号、密码、域名、端口或加载顺序变化,必须与 `README.md`、`V5.4.md` 和实际配置在同一提交中更新。
## 当前已知凭据
| 环境 | 服务 | 地址 | 账号 | 密码 | 状态 |
|---|---|---|---|---|---|
| WSL | EMQX Dashboard | `http://127.0.0.1:18083` | `admin` | `admin123` | 已安装并运行;仅按 Dashboard 账号认定 |
| WSL | MySQL | `127.0.0.1:3306` | `root` | `root123` | 已确认;开发、测试与迁移预演 |
| Windows | Gitea SSH | `ssh://git@git.txyundm.cn:2222/panda/qipai.git` | SSH Key | 免密 | 已配置 |
| Ubuntu 生产 | MQTT | `101.42.38.246:1883` | 待配置 | 待配置 | 未登记正式凭据 |
| Ubuntu 生产 | MySQL | `127.0.0.1:3306` | `root` | `Da@Shuai!6y8c..XT` | 已确认;正式生产数据库 |
## MySQL 固定配置
### WSL 开发/测试
```dotenv
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root123
MYSQL_DATABASE=<以项目实际数据库名为准>
```
有效配置位置按实际仓库结构选择一处,并在 `docs/repository-map.md` 中确认:
- `D:\qipai\backend\.env.development`
- `D:\qipai\backend\.env.test`
- `D:\qipai\config\dev\mysql.local.env`
### Ubuntu 正式生产
```dotenv
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD='Da@Shuai!6y8c..XT'
MYSQL_DATABASE=<以项目实际数据库名为准>
```
- 主运行配置:`/etc/qipai/qipai.secrets`,权限 `600`
- 菜单脚本、健康检查、迁移和备份:`/etc/qipai/mysql-client.cnf`,权限 `600`
- 禁止使用 `mysql -uroot -p明文密码`,禁止在日志中输出密码。
- 密码包含 `@``!` 和连续句点,脚本应使用分离变量或 `--defaults-extra-file`
- 确需 `DATABASE_URL` 时,密码应编码为 `Da%40Shuai%216y8c..XT`;数据库名仍以实际配置为准。
- WSL 与生产必须隔离;Windows/WSL 不得直接对生产数据库执行迁移。
## 环境检测要求
`setup.sh`、Windows/WSL 环境检查和 Ubuntu 菜单式诊断必须分别输出:
- `MYSQL_SERVICE`:服务与端口;
- `MYSQL_AUTH`:使用登记账号密码执行 `SELECT 1`
- `MYSQL_SCHEMA`:目标数据库、字符集和时区;
- `MYSQL_MIGRATION`:迁移表和当前版本;
- `MYSQL_BACKUP`:备份目录可写、最近备份和校验结果。
检测结果只能使用 `PASS/WARN/FAIL`,不得回显密码。只有五项全部通过,数据库环境才可标记 `DONE`
## MQTT 后端连接
- 生产变量:`QIPAI_MQTT_URL``QIPAI_MQTT_CLIENT_ID``QIPAI_MQTT_USERNAME``QIPAI_MQTT_PASSWORD`
- 调优变量:`QIPAI_MQTT_RECONNECT_MS=3000``QIPAI_MQTT_CONNECT_TIMEOUT_MS=10000``QIPAI_MQTT_MAX_MESSAGE_BYTES=65536`
- 生产账号固定建议为 `qipai_backend_prod`;真实密码只写 `/etc/qipai/qipai.secrets`,不得进入 Git、日志或错误响应。
- 用户名和密码必须同时配置;生产环境缺任一项时后端拒绝启动。
- 后端使用 MQTT 3.1`protocolVersion: 3`)和 QoS 1,订阅 `/devicesend/+``/devicewill/+`,发布 `/deviceaccept/{DeviceID}`
- `/app-api/ready``/admin-api/ready` 返回 `mqttConfigured``mqttConnected``mqttSubscriptionsReady`,只有真实连接并恢复订阅后后两项才为真。
## 微信支付 v3
- 运行变量:`QIPAI_WECHAT_PAY_CREDENTIALS`
- 值为 JSON 对象,键与 `qipai_payment_configs.credential_ref` 对应;例如数据库保存 `env:WX_STORE` 时,JSON 可使用 `env:WX_STORE``WX_STORE` 作为键。
- 每项包含 `appId``merchantId``serialNo``privateKeyPem`、32 字节 `apiV3Key` 和按平台证书序列号索引的 `platformCertificates`
- 真实值只写入 `/etc/qipai/qipai.secrets` 或本地 Git 忽略配置,权限 `600`;商户私钥、APIv3 Key 和平台证书正文不得进入 Git、日志或前端包。
- 支付配置 `settings` 可登记 `description``paymentNotifyUrl``refundNotifyUrl`;未登记时固定回调地址为 `https://api.txyundm.cn/app-api/pay/wechat/notify``https://api.txyundm.cn/app-api/pay/wechat/refund-notify`
- 当前仓库未登记真实微信支付凭据;真实预支付、退款、通知和账单下载联调仍为外部阻塞。
- `profitShareReceivers` 可在每个微信凭据项中按 `receiver:*` 引用登记真实分账接收方账号;数据库仅保存该引用、SHA-256 和脱敏值。
- `QIPAI_PROFIT_SHARE_MOCK_ENABLED=true` 仅允许非生产测试环境启用;生产环境始终强制关闭。
- 收款账户只有 `authorizationStatus=AUTHORIZED` 时才能开启分账;接收方也必须单独标记授权。
## 团购与第三方平台
- 运行变量:`QIPAI_THIRD_PARTY_CREDENTIALS`
- 值为 JSON 对象,键与 `qipai_third_party_configs.credential_ref` 对应;每项可包含 `webhookSecret``apiToken`
- 数据库配置支持 `MANUAL``MOCK``API` 三种模式;生产接入真实平台时必须使用 `API`,测试环境可使用 `MOCK`
- `credential_ref` 只允许 `env:` 引用;真实 Token 和回调密钥只写入 `/etc/qipai/qipai.secrets` 或 Git 忽略的本地配置。
- 直订回调当前统一使用 `X-Third-Party-Signature` HMAC-SHA256 入口;取得真实平台授权后由专用适配器按厂商协议替换,不得降低验签要求。
- 券码只保存 SHA-256 和脱敏显示值,不得写入日志、回调摘要或后台列表。
## 配置加载优先级
1. `/etc/qipai/qipai.secrets`
2. `/etc/qipai/qipai.conf`
3. 进程显式环境变量
4. Windows/WSL 本地 `.local.env``.env.*`
5. `.env.example`、部署模板与 README
6. 代码默认值
## 文件位置
完整位置表见根目录 `README.md` 的“配置文件位置”章节,以及 `V5.4.md` 的“0.6 README、配置文件与明文凭据同步规则”。
## 变更记录
- 2026-06-16:建立 V5.1 配置总表;登记 WSL EMQX Dashboard `admin/admin123`;固定 Windows、WSL 和 Ubuntu 配置路径。
- 2026-06-18:总纲升级为 V5.3;增加持续开发执行游标与固定模块推进规则。
- 2026-06-18:总纲升级为 V5.4;登记 WSL MySQL `root/root123` 与生产 MySQL `root/Da@Shuai!6y8c..XT`,增加 `/etc/qipai/mysql-client.cnf`、特殊字符处理和真实登录检测规则。
- 2026-06-22M05-B 增加 `QIPAI_WECHAT_PAY_CREDENTIALS` 凭据映射、微信支付/退款回调地址和私钥证书隔离规则。
- 2026-06-22M05-C 增加 `QIPAI_THIRD_PARTY_CREDENTIALS`、人工/Mock/API 模式、回调 HMAC 和券码哈希规则。
- 2026-06-22M05-D 增加门店收款账户、`profitShareReceivers` 环境映射、分账授权状态和非生产 Mock 门禁。