init: 项目初始提交 - NeoZQYY Monorepo 完整代码

This commit is contained in:
Neo
2026-02-15 14:58:14 +08:00
commit ded6dfb9d8
769 changed files with 182616 additions and 0 deletions

View File

@@ -0,0 +1,215 @@
# 实施计划Monorepo 迁移
## 概述
将现有 ETL 仓库迁移为 Monorepo 单体仓库,分 7 个阶段执行。每个阶段包含具体的代码/文件操作任务,按依赖顺序排列。
## 任务
- [x] 1. Monorepo 骨架搭建
- [x] 1.1 在 `C:\NeoZQYY\` 创建完整目录结构
- 创建所有一级目录:`apps/``gui/``packages/``db/``docs/``infra/``scripts/``samples/``tests/``tmp/``.kiro/`
- 创建 `apps/` 子目录:`etl/pipelines/feiqiu/``backend/``miniprogram/``admin-web/`
- 创建 `db/` 子目录:`etl_feiqiu/schemas/``etl_feiqiu/migrations/``etl_feiqiu/seeds/``zqyy_app/schemas/``zqyy_app/migrations/``zqyy_app/seeds/``fdw/`
- 创建 `docs/` 子目录:`prd/``contracts/openapi/``contracts/schemas/``contracts/data_dictionary/``permission_matrix/``architecture/``database/``h5_ui/``ops/``audit/``roadmap/`
- 创建 `infra/` 子目录:`jump_proxy/``tailscale/``firewall/`
- _Requirements: 1.1, 1.2, 1.3, 1.4, 14.1_
- [x] 1.2 生成所有一级目录的 README.md
- 每个 README 包含作用说明、内部结构描述、Roadmap 段落
- 一级目录列表:`apps/``gui/``packages/``db/``docs/``infra/``scripts/``samples/``tests/`
- `apps/etl/README.md` 的 Roadmap 记录未来 sdk/connectors 拆分计划
- `packages/README.md` 的 Roadmap 记录 etl_sdk、authz、data_contracts 候选
- `db/README.md` 的 Roadmap 记录 FDW 演进计划
- _Requirements: 1.5, 1.6_
- [x] 1.3 编写 README 结构完整性属性测试
- **Property 1: README.md 结构完整性**
- **Validates: Requirements 1.5**
- [x] 1.4 初始化 Git 仓库并生成版本控制配置
-`C:\NeoZQYY\` 执行 `git init`
- 生成 `.gitignore`:排除 `tmp/``__pycache__/``.env``*.pyc``.hypothesis/``.pytest_cache/``logs/``node_modules/`、虚拟环境目录、`infra/` 下的敏感文件
- 生成 `.kiroignore`
- _Requirements: 2.1, 2.2, 2.3, 14.2, 14.3_
- [x] 1.5 配置 pyproject.toml 和 uv workspace
- 生成根 `pyproject.toml`,声明 workspace 成员:`apps/etl/pipelines/feiqiu``apps/backend``packages/shared``gui`
- 为每个 Python 子项目生成独立 `pyproject.toml`
- _Requirements: 3.1, 3.2_
- [x] 1.6 编写 Python 子项目配置完整性属性测试
- **Property 2: Python 子项目配置完整性**
- **Validates: Requirements 3.2**
- [x] 1.7 生成环境配置模板
- 生成根 `.env.template`包含公共配置项模板DB_HOST、DB_PORT、TIMEZONE 等)
- _Requirements: 4.1_
- [x] 2. 检查点 - 骨架验证
- 确保所有目录和文件已创建ask the user if questions arise.
- [x] 3. ETL 项目平移
- [x] 3.1 复制 ETL 业务代码到 Monorepo
-`C:\ZQYY\FQ-ETL``api/``cli/``config/``loaders/``models/``orchestration/``scd/``tasks/``utils/``quality/` 复制到 `apps/etl/pipelines/feiqiu/`
-`tests/` 复制到 `apps/etl/pipelines/feiqiu/tests/`
-`requirements.txt``pytest.ini``run_etl.bat``run_etl.sh` 复制到 `apps/etl/pipelines/feiqiu/`
- _Requirements: 5.1, 5.3_
- [x] 3.2 迁移数据库文件到 db/etl_feiqiu/
-`database/schema_*.sql` 复制到 `db/etl_feiqiu/schemas/`
-`database/migrations/` 复制到 `db/etl_feiqiu/migrations/`
-`database/seed_*.sql` 复制到 `db/etl_feiqiu/seeds/`
-`database/connection.py``database/operations.py``database/base.py` 保留在 ETL 内部(`apps/etl/pipelines/feiqiu/database/`
- _Requirements: 5.2_
- [x] 3.3 迁移 GUI 到顶层
-`C:\ZQYY\FQ-ETL\gui/` 复制到 `C:\NeoZQYY\gui/`
- 生成 `gui/pyproject.toml`,声明 PySide6 依赖
- _Requirements: 5.6_
- [x] 3.4 调整 ETL 的 pyproject.toml 和 pytest.ini
- 更新 `apps/etl/pipelines/feiqiu/pyproject.toml`,从 `requirements.txt` 提取依赖
- 更新 `apps/etl/pipelines/feiqiu/pytest.ini`,设置 `pythonpath = .`
- _Requirements: 5.4, 5.5_
- [x] 3.5 编写文件迁移完整性属性测试
- **Property 5: 文件迁移完整性**
- **Validates: Requirements 5.1, 5.2, 5.3**
- [x] 4. 检查点 - ETL 平移验证
-`apps/etl/pipelines/feiqiu/` 下运行 `pytest tests/unit`,确保所有单元测试通过
- Ensure all tests pass, ask the user if questions arise.
- [x] 5. 小程序前端平移
- [x] 5.1 复制小程序项目到 Monorepo
-`C:\ZQYY\XCX\`(除 Prototype 目录)复制到 `apps/miniprogram/`
-`C:\ZQYY\XCX\Prototype\` 复制到 `docs/h5_ui/`
- 生成 `apps/miniprogram/README.md`
- _Requirements: 6.1, 6.2, 6.3_
- [x] 6. 数据库 Schema 重组
- [x] 6.1 编写 etl_feiqiu 六层 Schema DDL
- 创建 `db/etl_feiqiu/schemas/meta.sql`:从现有 `etl_admin` schema 迁移调度、游标、运行记录表
- 创建 `db/etl_feiqiu/schemas/ods.sql`:从现有 `billiards_ods` 迁移所有表定义schema 名改为 `ods`
- 创建 `db/etl_feiqiu/schemas/dwd.sql`:从现有 `billiards_dwd` 迁移,保留 main+EX 拆分
- 创建 `db/etl_feiqiu/schemas/core.sql`:设计统一维度/事实最小字段集表
- 创建 `db/etl_feiqiu/schemas/dws.sql`:从现有 `billiards_dws` 迁移汇总表
- 创建 `db/etl_feiqiu/schemas/app.sql`:创建面向外部的视图 + RLS 策略(以 `site_id` 隔离)
- _Requirements: 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8_
- [x] 6.2 编写 Schema 表定义迁移完整性属性测试
- **Property 6: Schema 表定义迁移完整性**
- **Validates: Requirements 7.3, 7.6**
- [x] 6.3 编写 Core schema 最小字段集属性测试
- **Property 7: Core schema 最小字段集**
- **Validates: Requirements 7.5**
- [x] 6.4 编写 zqyy_app 数据库 Schema DDL
- 创建 `db/zqyy_app/schemas/init.sql`:用户表、角色表、权限表、用户角色关联表、任务表、审批表
- 所有业务表包含 `site_id` 字段
- _Requirements: 8.1, 8.2, 13.1_
- [x] 6.5 编写 FDW 映射配置
- 创建 `db/fdw/setup_fdw.sql`CREATE SERVER、CREATE USER MAPPING只读角色、IMPORT FOREIGN SCHEMA
- _Requirements: 8.3, 8.4, 8.5_
- [x] 6.6 编写业务表 site_id 存在性属性测试
- **Property 10: 业务表 site_id 字段存在性**
- **Validates: Requirements 13.1**
- [x] 6.7 编写测试数据库创建脚本
- 创建 `db/etl_feiqiu/scripts/create_test_db.sql`:创建 `test_etl_feiqiu`,复用生产 DDL
- 创建 `db/zqyy_app/scripts/create_test_db.sql`:创建 `test_zqyy_app`,复用生产 DDL
- 创建 `db/scripts/migrate_test_data.sql`:从 `LLZQ-test` 迁移测试数据的脚本
- _Requirements: 9.1, 9.2, 9.3_
- [x] 6.8 编写测试数据库结构一致性属性测试
- **Property 8: 测试数据库结构一致性**
- **Validates: Requirements 9.1, 9.2**
- [x] 7. 检查点 - 数据库 Schema 验证
- 确保所有 DDL 文件语法正确ask the user if questions arise.
- [ ] 8. .kiro 迁移与 Steering 更新
- [-] 8.1 复制 .kiro/steering/ 到 Monorepo
-`C:\ZQYY\FQ-ETL\.kiro\steering\` 所有文件复制到 `C:\NeoZQYY\.kiro\steering\`
-`C:\ZQYY\FQ-ETL\.kiro\specs\` 复制到 `C:\NeoZQYY\.kiro\specs\`(包含本 spec
- _Requirements: 10.1_
- [~] 8.2 更新 Steering 文件为 Monorepo 视角
- 更新 `product.md`:从单一 ETL 扩展为 Monorepo 全局视角ETL + 后端 + 小程序 + GUI
- 更新 `tech.md`:新增 FastAPI、uv workspace、Donut+TDesign 技术栈
- 更新 `structure-lite.md`:反映 Monorepo 目录结构和模块边界
- 更新所有 steering 文件中的路径引用,移除旧仓库路径(`FQ-ETL``C:\ZQYY\FQ-ETL`
- _Requirements: 10.2, 10.3_
- [~] 8.3 编写 Steering 文件路径更新属性测试
- **Property 9: Steering 文件路径更新**
- **Validates: Requirements 10.2**
- [ ] 9. FastAPI 后端骨架
- [~] 9.1 创建 FastAPI 项目结构
- 创建 `apps/backend/app/__init__.py``main.py``config.py``database.py`
- 创建 `apps/backend/app/routers/__init__.py`
- 创建 `apps/backend/app/middleware/__init__.py`
- 创建 `apps/backend/app/schemas/__init__.py`
- 创建 `apps/backend/tests/__init__.py`
- `main.py` 中配置 FastAPI 实例,启用 OpenAPI 文档自动生成
- `database.py` 中配置 `zqyy_app` 数据库连接
- _Requirements: 11.1, 11.2, 11.3_
- [~] 9.2 生成 apps/backend/pyproject.toml
- 声明 FastAPI、uvicorn、psycopg2-binary、neozqyy-shared 等依赖
- 配置 uv workspace 源引用 `neozqyy-shared`
- _Requirements: 11.4_
- [~] 9.3 生成 apps/backend/README.md
- 包含作用说明、项目结构、启动方式、Roadmap
- _Requirements: 1.5_
- [ ] 10. 共享包搭建
- [~] 10.1 创建 packages/shared 包结构
- 创建 `packages/shared/src/neozqyy_shared/__init__.py`
- 创建 `packages/shared/src/neozqyy_shared/enums.py`:字段枚举定义(从 ETL models/ 提取通用枚举)
- 创建 `packages/shared/src/neozqyy_shared/money.py`金额精度工具Decimal + ROUND_HALF_UPscale=2
- 创建 `packages/shared/src/neozqyy_shared/datetime_utils.py`:时区转换、日期范围计算
- 创建 `packages/shared/tests/__init__.py`
- _Requirements: 12.1, 12.2_
- [~] 10.2 生成 packages/shared/pyproject.toml
- 声明包名 `neozqyy-shared`最小依赖python-dateutil、tzdata
- _Requirements: 12.3_
- [~] 10.3 编写配置优先级属性测试
- **Property 3: 配置优先级 - .env.local 覆盖**
- **Validates: Requirements 4.3**
- [~] 10.4 编写必需配置缺失检测属性测试
- **Property 4: 必需配置缺失检测**
- **Validates: Requirements 4.4**
- [ ] 11. 检查点 - 全局验证
- 验证 uv workspace 依赖解析:在根目录运行 `uv sync`
- 验证 ETL 单元测试:在 `apps/etl/pipelines/feiqiu/` 下运行 `pytest tests/unit`
- Ensure all tests pass, ask the user if questions arise.
- [ ] 12. RLS 与多门店隔离验证
- [~] 12.1 编写 RLS 按 site_id 隔离属性测试
- **Property 11: RLS 按 site_id 隔离**
- **Validates: Requirements 13.2**
- 需要集成测试环境test_etl_feiqiu 数据库)
- [ ] 13. 最终检查点
- 确保所有文件已创建、所有 README 已编写、所有 DDL 语法正确
- Ensure all tests pass, ask the user if questions arise.
## 备注
- 标记 `*` 的任务为可选测试任务,可跳过以加速 MVP
- 每个任务引用具体需求编号,确保可追溯
- 检查点确保增量验证,避免问题累积
- 属性测试验证通用正确性,单元测试验证具体边界情况
- 文件复制操作需要用户在终端手动执行涉及跨目录操作Kiro 负责生成目标文件内容