在前后端开发联调前 的提交20260223

This commit is contained in:
Neo
2026-02-23 23:02:20 +08:00
parent 254ccb1e77
commit fafc95e64c
1142 changed files with 10366960 additions and 36957 deletions

View File

@@ -5,58 +5,29 @@ inclusion: always
# 技术栈与构建
## 语言与运行时
- Python 3.10+
- uv workspace 统一依赖管理(根 `pyproject.toml` 声明 3 个 workspace 成员
## 核心依赖
- ETL`psycopg2-binary``requests``python-dateutil``tzdata``python-dotenv``openpyxl`
- 后端:`fastapi``uvicorn[standard]``psycopg2-binary``python-dotenv`
- 管理后台:`React``Vite``Ant Design``apps/admin-web/`,独立 pnpm 管理)
- 共享包:`neozqyy-shared`workspace 内部引用)
- 测试:`pytest``hypothesis`
- Python 3.10+uv workspace`pyproject.toml` 声明 4 个成员etl/connectors/feiqiu、backend、mcp-server、shared
- 管理后台React + Vite + Ant Design`apps/admin-web/`,独立 pnpm
## 数据库
- PostgreSQL远程实例)
- 六层 Schema 架构:`meta`(调度元数据)、`ods`(原始数据)、`dwd`(明细数据)、`core`(跨门店标准化)、`dws`(汇总数据)、`app`RLS 视图层)
- 业务数据库:`zqyy_app`(用户/RBAC/任务/审批),通过 FDW 只读映射 ETL 数据
- DDL 文件位于 `db/etl_feiqiu/schemas/`,迁移脚本位于 `db/etl_feiqiu/migrations/`
- 种子数据位于 `db/etl_feiqiu/seeds/`
## 测试
- ETL 单元测试:`cd apps/etl/connectors/feiqiu && pytest tests/unit`
- ETL 集成测试:`TEST_DB_DSN="..." pytest tests/integration`
- Monorepo 属性测试:`pytest tests/ -v`根目录hypothesis
- 测试工具:`apps/etl/connectors/feiqiu/tests/unit/task_test_utils.py` 提供 FakeDB/FakeAPI
- PostgreSQL 远程实例,四库:`etl_feiqiu` / `test_etl_feiqiu`ETL`zqyy_app` / `test_zqyy_app`(业务
- ETL 六层 Schemameta / ods / dwd / core / dws / app
- DSN`PG_DSN`ETL`APP_DB_DSN`(业务),根 `.env` 定义
## 常用命令
```bash
# 安装依赖
uv sync
# ETL 开发
cd apps/etl/connectors/feiqiu
python -m cli.main --dry-run --tasks DWD_LOAD_FROM_ODS
# 后端开发
cd apps/backend
uvicorn app.main:app --reload
# ETL 单元测试
cd apps/etl/connectors/feiqiu && pytest tests/unit
# 属性测试
cd C:\NeoZQYY && pytest tests/ -v
uv sync # 安装依赖
cd apps/etl/connectors/feiqiu && python -m cli.main --dry-run --tasks DWD_LOAD_FROM_ODS
cd apps/backend && uvicorn app.main:app --reload
cd apps/etl/connectors/feiqiu && pytest tests/unit # ETL 单元测试
cd C:\NeoZQYY && pytest tests/ -v # 属性测试
```
## 配置体系
- 分层叠加:根 `.env` < 应用 `.env.local` < 环境变量 < CLI 参数
- ETL 配置类:`apps/etl/connectors/feiqiu/config/settings.py``AppConfig`
- 敏感值放在 `.env` / `.env.local` 中,禁止提交;`.env.template` 提供模板
## 脚本执行规范
- 需要执行多步操作、文件处理、数据库操作等脚本级任务时,优先写 Python 脚本`.py`)再通过 `python script.py` 执行
- 避免直接使用 PowerShell 编写复杂逻辑,防止转义符、编码、管道等语法陷阱
- 以下情况可以直接用 shell 命令:
- 用户明确指定使用 PowerShell / CMD
- 操作本身是单条简单命令(如 `pytest``uv sync``git status`
- Python 脚本放置遵循"两层分治"原则:一次性运维脚本放 `scripts/ops/`,模块专属脚本放模块内 `scripts/`的合理目录下
- 复杂操作优先写 Python 脚本再执行,避免 PowerShell 复杂逻辑
- 一次性运维脚本放 `scripts/ops/`,模块专属脚本放模块内 `scripts/`
> 核心依赖清单、DDL 基线、种子数据等详细信息见 `tech-full.md`fileMatch读到 pyproject.toml / 配置 / 迁移文件时自动加载,也可 `#tech-full` 手动加载)。