Files
Neo-ZQYY/AGENTS.md
2026-05-02 03:11:39 +08:00

6.1 KiB
Raw Blame History

AGENTS.md

NeoZQYY Monorepo 顶层规则。子模块详细规范见各自 apps/*/AGENTS.mddocs/database/apps/etl/connectors/feiqiu/AGENTS.md

语言(强制)

始终中文对话、解释、代码注释、commit message中文描述 + 英文 Co-Authored-By 签名、PR、审计、文档、错误日志。 保持原文:变量/函数/类名、第三方 API 字段名、CLI 命令、技术术语。 禁止英文段落或英文标题。

CLI / Shell 中文处理

  • Python encoding="utf-8" / PYTHONUTF8=1CSV 给 Excel 用 utf-8-sigPowerShell/Node 不依赖系统 ANSI。
  • 终端中文乱码时,不当作事实;先调编码重跑,或说明"终端编码异常,结果需复核"。
  • Shell 路径含中文/空格/特殊字符必须加引号;复杂中文输出走脚本或结构化 API。

项目概览

NeoZQYY = 台球门店全栈数据平台。多门店隔离(site_id + RLS中文领域语言CNY金额 numeric(2)

目录 用途
apps/etl/connectors/feiqiu/ 飞球 ETLAPI → ODS → DWD → DWS
apps/backend/ FastAPIJWT 双认证 + WebSocket + AI
apps/miniprogram/ 微信小程序 C 端Donut + TDesign
apps/admin-web/ 系统管理后台(开发/运维视角,操作 ETL 库)
apps/tenant-admin/ 租户管理后台(门店管理员视角,操作业务库)
apps/demo-miniprogram/ MOCK 标杆小程序(样式校对,禁改)
apps/mcp-server/ MCP ServerPostgreSQL 只读)
packages/shared/ 跨项目共享包
db/ DDLschemas/+ 迁移 + FDW
tools/ 通用工具
scripts/ops/ 日常运维脚本

技术栈Python 3.10+ uv workspace、React+Vite+AntD、PostgreSQL 四库(etl_feiqiu/test_etl_feiqiu/zqyy_app/test_zqyy_appDSN PG_DSN/APP_DB_DSN)。配置分层 .env < .env.local < env < CLI。

数据库

  • 六层 SchemametaodsdwdcoredwsappRLS 视图)
  • 跨库:zqyy_app 通过 FDW 只读映射 etl_feiqiu.app
  • RLSsite_id + app.current_site_id 会话变量
  • RLS 双 Schema 踩坑DWS/DWD 表的 RLS 视图必须同时建在 dwsapp schema后端走 app.v_*。只建 dws 会让后端查询失败。回滚需逆序 DROP。

飞球数据规范(速查)

  • consume_money 禁止直接计算 → 用 items_sum 拆分字段
  • 取数优先级DWS > DWD > 禁止 ODS
  • 参考优先级DWD-DOC > DWS 权威规范 > BD 手册 > ETL 任务文档 > DDL 注释
  • _archived/ 目录禁止读取或参考
  • 完整规则见 apps/etl/connectors/feiqiu/AGENTS.md

文件归属

类型 位置
模块内文档/测试/脚本 模块内 docs/tests/scripts/
跨模块文档 docs/
Monorepo 守护测试 tests/
日常运维脚本 scripts/ops/
通用工具 tools/(按类型分子目录)
审计记录 docs/audit/changes/<YYYY-MM-DD>__<slug>.md(禁止写子模块)
数据库文档 docs/database/
归档/待删 _DEL/(保持原路径,定期清理)

docs/audit/audit_dashboard.mdscripts/audit/gen_audit_dashboard.py 生成,勿手动编辑。

编码前需求审问(强制)

新建功能/接口、重构、多模块联动、需求模糊时:

  1. 不立即动手,先提问循环(每轮 3-5 个问题)
  2. 必问:用户角色、核心操作、数据写入/展示/来源、错误/成功反馈、认证权限、存储(哪库/新表)、终端适配、边界(并发/幂等/超时)
  3. 输出「需求确认摘要」,用户确认后实施

例外:用户说"直接改/跳过审问"、Bug 有明确复现步骤、纯格式调整、已有 spec

逻辑改动前置调研(强制)

任何逻辑改动ETL/业务规则/API/数据模型/前端交互):

  1. 委托 Explore 子代理调研:目标模块、docs/audit/changes/ 历史、调用方/被调用方、数据流向、影响范围
  2. 输出「改动前上下文摘要」,用户确认后实施

流程:需求审问 → 确认 → 前置调研 → 确认 → 编码

例外:纯格式/注释/文档修改、用户说"直接改/跳过调研"、新建独立文件

改动后验证(强制)

  1. 运行相关测试(单元/集成/lint不能运行需说明原因
  2. 输出 diff 摘要(文件清单 + 每个改动要点)
  3. 列出未覆盖风险点(未测路径、副作用、需人工验证场景)

例外:纯格式/文档/注释、用户说"跳过验证"

数据库 Schema 变更

修改 PostgreSQL schema迁移/DDL/表定义/ORM必须同步 docs/database/变更说明、兼容性影响、回滚策略、≥3 条校验 SQL。

测试环境

  1. load_dotenv 加根 .env;必需变量缺失立即报错,禁止静默回退空串
  2. cwd 与正式一致ETL → apps/etl/connectors/feiqiu/、后端 → apps/backend/
  3. 配置走 AppConfig.load(),不得为测试构造简化配置
  4. 用测试库(TEST_DB_DSN),禁止连正式库
  5. 属性测试分组执行(-k 筛选禁止一次性全跑hypothesis 默认 max_examples=100

例外:用户指定简化环境、纯单元测试用 FakeDB/FakeAPI、--dry-run CLI 验证

脚本规范

  • 复杂操作写 Python 脚本,避免复杂 shell
  • 一次性运维 → scripts/ops/;模块专属 → 模块内 scripts/
  • scripts/ops/ 不在 uv workspace 内,导入 ETL 纯函数用 importlib.util + stub参考 scripts/ops/backfill_finance_area_daily.py

子代理

  • 委托:批量读 ≥3 文件、大范围搜索、不熟悉模块探索、多步 shell
  • 主流程直接处理:单文件、单命令、小范围精确搜索

审计

任何逻辑改动必须可追溯、可验证、可回滚。

完成一轮后用 /audit

  1. python scripts/audit/prescan.py 预扫描(自动识别+分类+合规,零 token
  2. 补充语义上下文(从对话提取每变更原因)
  3. 委托子代理写 docs/audit/changes/
  4. 补齐文档同步
  5. python scripts/audit/gen_audit_dashboard.py 刷新一览表

prescan.py --files 参数git status 含大量历史未提交时,只传本次会话文件列表。