Merge remote-tracking branch 'origin/qyqy_develop' into nl-merge-colleague

This commit is contained in:
2026-09-12 14:48:45 +08:00
12 changed files with 549 additions and 34 deletions
+16
View File
@@ -275,6 +275,22 @@ Redis 不可用时实测按设计降级放行;生产装配模式因本机 Milv
- [x] 记录灰度期间错误、延迟和降级次数。(本次 Redis 降级 4 次请求,延迟基线已记录)
- [x] 确认没有产生真实交易委托。(模拟订单、成交记录均为 0)
### 阶段二十三演示环境迁移准备(2026-09-12,工具完成,目标机待执行)
已新增受控初始化编排脚本 `tools/bootstrap_advisor_demo.py`:默认只预览,只有同时传入
`--apply --confirm-demo-database` 才会对配置的目标库写入。脚本只允许使用全新、可销毁的
演示库,明确禁止复制或直接升级存在结构漂移的旧 `jr_agent`。它串联当前迁移、RBAC、
投顾角色、演示账号、合规基线、演示测评/归属、权威产品证据、行情同步和结构审计。
已新增 `tools/publish_advisor_demo_config.py`,在目标环境通过配置发布状态机继承既有配置项,
并发布 advisor 六个意图的工具白名单,避免代码已部署但工具因缺少 `config_release` 而失败关闭。
产品适当性与合同 CSV 仍必须来自真实披露文件,脚本不伪造来源 URL 或文件摘要。
- [x] 准备演示库初始化编排脚本和最小化写入保护。
- [x] 准备投顾 Agent 工具白名单发布脚本。
- [x] 准备演示环境迁移说明和专项单元测试。(`3 passed`、Ruff 通过)
- [ ] 在另一台演示电脑的新建演示库实际执行初始化、启动服务并完成 HTTP 验收。
## 一、迁移准备
- [ ] 确认远程仓库可访问。(当前失败:连接 `47.106.207.27:3000` 被拒绝)
@@ -57,15 +57,18 @@ Agent 不能把截断结果表述成覆盖全部数据,也不能据此给出
以下内容属于环境准备或数据初始化,不是代码缺陷:
1. 执行 `python tools/grant_risk_permissions.py`,确认风控角色具备:
1. 先执行 `python tools/seed_test_rbac.py`,再执行
`python tools/grant_risk_permissions.py`,确认风控角色具备:
- `risk:alert:read`
- `risk:alert:write`
- `risk:alert:scan`
- `risk:report:mail`
2. 执行 `python tools/publish_risk_agent_config.py`,确认奶龙风控智能助手的工具白名单和意图配置已发布。
3. 按主项目发布的迁移流程执行 Alembic 升级,确认 `trigger_rule_codes` 多值索引已生效。
4. 演示前准备足够的客户、交易、资金、持仓、登录和预警数据。
5. 使用前确认日报邮件开关、SMTP 配置和收件人范围符合演示要求。
2. 执行 `python tools/set_user_password.py --user 9002 --password 666666`,
为风控演示账号设置密码;登录使用 `risk_t / 666666`。
3. 执行 `python tools/publish_risk_agent_config.py`,确认奶龙风控智能助手的工具白名单和意图配置已发布。
4. 按主项目发布的迁移流程执行 Alembic 升级,确认 `trigger_rule_codes` 多值索引已生效。
5. 演示前准备足够的客户、交易、资金、持仓、登录和预警数据。
6. 使用前确认日报邮件开关、SMTP 配置和收件人范围符合演示要求。
## 当前保留限制
@@ -0,0 +1,65 @@
# 投顾演示环境初始化包
本包用于在另一台演示电脑上建立独立、可销毁的投顾演示环境。它不复制旧 `jr_agent`
数据库,也不导出真实客户数据。旧库存在历史表和约束漂移,只能保留为历史参考。
## 必备输入
- 新建的空 MySQL 演示库,以及指向该库的 `MYSQL_DSN`。
- 新生成的 JWT 开发密钥:`python tools/generate_jwt_keys.py --out-dir config/jwt/dev`。
- 已安装的项目依赖:`python -m pip install -r requirements.txt`。
- 已审核的产品适当性披露 CSV 与基金合同 CSV。它们必须包含真实 HTTPS 来源和文件 SHA-256;
不得伪造来源字段。
可选依赖:Redis 用于限流缓存,Milvus 用于知识/语义检索,Neo4j 用于图谱增强,模型端点用于
模型路由。它们缺失时,投顾结构化分析会按既有降级策略运行;演示完整 Agent 对话前应配置模型端点。
## 执行顺序
先预览,不写库:
```powershell
python tools/bootstrap_advisor_demo.py `
--suitability-csv D:\demo-data\suitability.csv `
--contracts-csv D:\demo-data\contracts.csv
```
确认 `.env` 中的 `MYSQL_DSN` 是新建演示库后,再执行:
```powershell
python tools/bootstrap_advisor_demo.py `
--apply --confirm-demo-database `
--suitability-csv D:\demo-data\suitability.csv `
--contracts-csv D:\demo-data\contracts.csv
```
该命令依次完成迁移、演示账号与角色、投顾权限、合规基线、客户测评和归属、产品目录、
权威产品证据、资产分类、历史行情和质量快照、投顾工具白名单发布及数据库审计。
公共行情源不可访问时可加 `--skip-market-sync`,但推荐和动态配置会继续失败关闭,不能将该
状态当作完整投顾演示通过。
## 演示账号
初始化脚本会创建仅用于演示的客户 `cust_t`、管理员 `admin_t` 和投顾 `advisor_t`。账号密码
仅存在于目标演示数据库;脚本的显示输出会掩盖密码参数。演示结束后应销毁整个演示库,而不是
将这些账号带入其他环境。
## 验收
执行完成后,启动 API 和 Worker,再运行:
```powershell
python tools/acceptance_check.py
python tools/seed_advisor_demo.py
```
并在浏览器使用登录测试台或 Swagger 验证问卷、投资目标、持仓分析、配置、推荐审核发布和
越权拦截。灰度开关使用:
```text
ADVISOR_ROLLOUT_ENABLED=true
ADVISOR_ROLLOUT_CUSTOMER_IDS=9001
```
修改灰度变量后必须重启 API 和 Worker。