feat: add advisor demo environment bootstrap

This commit is contained in:
Windows
2026-09-12 14:40:53 +08:00
parent 050eedac68
commit 9c6f839a6e
5 changed files with 430 additions and 0 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` 被拒绝)
@@ -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。