421e193041177e32149e9d6a395dcf2114835b08
Neo F1-5 反馈: "让沙箱起到其真正的作用. 真正的模拟日期, 仅能看到沙箱设定日期 及之前日期的数据, 并运行 AI 的各个业务." 调研发现 (4 个并行子代理): batch-run 端点 _run_batch 是空壳 stub (只 logger.info, 实际不跑 AI), GUC apply_runtime_session_vars 0 处调用 (dead code), 7 张业务表 6 张有 runtime 复合索引唯独 ai_run_logs 漏建, App2/2a 3 行 _calc_date_range 漏传 ref_date. 本 commit (F1-5a 阶段 A 主体, F1-5b 后续完整 zqyy_app RLS 视图层): 后端核心: - admin_service.py: _run_batch 真实化 (Semaphore(5)+asyncio.gather+ return_exceptions=True+ctx_snapshot 防漂移); estimate 入口抓 RuntimeContext 快照, confirm 取出传给 worker - admin_ai.py: confirm_batch_run lazy 注入 dispatcher - admin_service.retry_trigger_job: INSERT 落 runtime_mode + sandbox_instance_id 列 (用 runtime_insert_columns helper) - runtime_context.py: get_runtime_context 加 bind_to_session 参数, 激活 GUC app.current_business_date / app.current_runtime_mode - run_log_service.create_log: 启用 bind_to_session=True 试点 App2/2a 3 行 ref_date 修复: - app2_finance_prompt.py:817 储值卡余额变化板块 - app2_finance_prompt.py:841 日粒度 series + 异常检测窗口 - app2a_finance_area_prompt.py:466 区域日粒度 series DB: - migrations/20260505__ai_run_logs_runtime_index.sql: 补 (site_id, runtime_mode, sandbox_instance_id, created_at DESC) 复合索引 前端: - AIOperations.tsx: 顶部加 sandbox 模式提示条 (Alert 显示 sandbox_date + sandbox_instance_id + 影响范围 + 切回 live 入口) 未做 (留 F1-5b 完整 zqyy_app RLS 视图层一并): - B1 admin_service 6 处 CURRENT_DATE -> business_date - B2 fdw_queries 异常分支兜底 - GUC 完整传递 (fdw_queries / page_context 等) - 测试 3 套 (.gitignore:71 排除, F2-2 入仓时 commit) - P20 SPEC \xa76/\xa710/\xa711/\xa715 (F1-5b 完整收口后同步更准确) Neo 决策: docs/_overview/wave1-findings/F1-5-impl-decisions.md 详见 docs/audit/changes/2026-05-05__wave1_f1_5a_sandbox_batch_run.md
NeoZQYY Monorepo
台球门店运营助手一体化平台,整合 ETL 数据 Connector、微信小程序后端、小程序前端与管理后台。
项目结构
| 目录 | 说明 | 文档 |
|---|---|---|
apps/etl/connectors/feiqiu/ |
飞球 Connector(API → ODS → DWD → DWS) | docs/ |
apps/backend/ |
FastAPI 后端(13 个路由 · JWT 双认证 · WebSocket) | README · API 参考 |
apps/miniprogram/ |
微信小程序(Donut + TDesign + TypeScript) | README |
apps/admin-web/ |
管理后台(React + Vite + Ant Design) | README |
apps/mcp-server/ |
MCP Server(AI 工具集成,PostgreSQL 只读查询) | README |
packages/shared/ |
共享包(枚举、金额精度、时间工具) | README |
db/etl_feiqiu/ |
ETL 数据库(6 层 Schema:meta/ods/dwd/core/dws/app) | README |
db/zqyy_app/ |
业务数据库(auth 认证 + 任务队列 + 调度) | README |
docs/ |
项目文档中心(架构、数据库、部署、审计) | README |
scripts/ |
运维/工具脚本 | — |
tests/ |
Monorepo 级属性测试 | — |
快速开始
# 安装全部依赖(需要 uv)
uv sync
# 运行 ETL
cd apps/etl/connectors/feiqiu
python -m cli.main --pg-dsn "$PG_DSN" --store-id "$STORE_ID" --api-token "$API_TOKEN"
# 启动后端 API
cd apps/backend
uvicorn app.main:app --reload
# 运行 ETL 单元测试
cd apps/etl/connectors/feiqiu
pytest tests/unit
配置
配置采用分层叠加:根 .env -> 应用 .env.local -> 环境变量 -> CLI 参数。
参见 .env.template 了解可用配置项。
技术栈
- Python 3.10+, uv workspace(4 个成员:etl、backend、mcp-server、shared)
- PostgreSQL 四库:
etl_feiqiu/test_etl_feiqiu(ETL)、zqyy_app/test_zqyy_app(业务) - FastAPI + Uvicorn(后端 API)
- React 19 + Vite 6 + Ant Design 5(管理后台,独立 pnpm)
- 微信小程序原生 + Donut + TDesign + TypeScript(C 端)
- JWT 双认证(管理后台用户名密码 + 小程序微信登录)
- 多门店隔离(
site_id+ RLS)
Description
Languages
Python
79.6%
TypeScript
17.4%
PLpgSQL
1.9%
HTML
0.7%
PowerShell
0.4%