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,80 @@
# 需求文档
## 简介
整理和补全飞球 ETL 系统的数据库文档体系(`docs/bd_manual/`包括目录结构规范化、DDL 与数据库实际状态的对比同步、ODS 层表级文档补全、以及 API JSON → ODS 字段映射文档的建立。本特性不涉及代码逻辑变更,仅涉及文档和 DDL 文件的维护。
## 术语表
- **BD_Manual**: 数据库手册目录(`docs/bd_manual/`),存放各层表级文档、变更记录等
- **ODS**: 操作数据存储层Operational Data Store`billiards` schema保留 API 原始数据
- **DWD**: 明细数据层Data Warehouse Detail`billiards_dwd` schema清洗后的维度和事实表
- **DWS**: 数据服务层Data Warehouse Service`billiards_dws` schema汇总宽表和配置表
- **DDL**: 数据定义语言文件(`database/schema_*.sql`),定义表结构
- **表级文档**: 以 Markdown 格式编写的单表说明文件,包含表信息、字段说明、使用示例等
- **字段映射文档**: 记录 API JSON 响应字段到 ODS 表字段的对应关系和转换逻辑
- **SCD2**: 缓慢变化维度类型 2用于 DWD 维度表的历史版本管理
- **ETL_Admin**: ETL 管理 schema`etl_admin`),存放调度、游标、运行记录等元数据
## 需求
### 需求 1规范化 BD_Manual 目录结构
**用户故事:** 作为数据开发人员,我希望 BD_Manual 目录结构统一规范,以便快速定位各层各类型的数据库文档。
#### 验收标准
1. THE BD_Manual SHALL 包含以下顶层子目录:`ODS/``DWD/``DWS/``ETL_Admin/`
2. WHEN 某一数据层目录被访问时THE BD_Manual SHALL 在该层目录下提供 `main/`(表级文档)和 `changes/`(变更记录)两个子目录
3. THE DWD 目录 SHALL 额外保留 `Ex/` 子目录用于存放扩展表文档
4. THE BD_Manual SHALL 在根目录提供一个 `README.md` 索引文件,列出目录结构说明和各层文档清单
5. WHEN ETL_Admin schema 存在表时THE BD_Manual SHALL 在 `ETL_Admin/main/` 下为每张表提供表级文档
### 需求 2DDL 文件与数据库实际状态对比同步
**用户故事:** 作为数据开发人员,我希望 DDL 文件与数据库实际表结构保持一致,以便 DDL 文件可作为可信的 schema 参考。
#### 验收标准
1. WHEN 对比 ODS 层 DDL 文件(`database/schema_ODS_doc.sql`)与数据库 `billiards_ods` schema 实际表结构时THE 对比脚本 SHALL 输出所有差异项(缺失表、多余表、字段差异、类型差异、约束差异)
2. WHEN 对比 DWD 层 DDL 文件(`database/schema_dwd_doc.sql`)与数据库 `billiards_dwd` schema 实际表结构时THE 对比脚本 SHALL 输出所有差异项
3. WHEN 对比 DWS 层 DDL 文件(`database/schema_dws.sql`)与数据库 `billiards_dws` schema 实际表结构时THE 对比脚本 SHALL 输出所有差异项
4. WHEN 对比 ETL_Admin 层 DDL 文件(`database/schema_etl_admin.sql`)与数据库 `etl_admin` schema 实际表结构时THE 对比脚本 SHALL 输出所有差异项
5. WHEN 发现差异时THE DDL 文件 SHALL 以数据库实际状态为准进行修正
6. WHEN DDL 文件被修正后THE 变更记录 SHALL 在对应层的 `changes/` 目录下生成一份差异说明文档
### 需求 3补全 ODS 层表级文档
**用户故事:** 作为数据开发人员,我希望 ODS 层每张表都有完整的表级文档,以便理解原始数据结构和来源。
#### 验收标准
1. THE ODS 表级文档 SHALL 为 `billiards_ods` schema 中的每张 ODS 表生成一份 Markdown 文档,存放于 `docs/bd_manual/ODS/main/`
2. THE ODS 表级文档 SHALL 遵循与 DWD/DWS 表级文档一致的格式,包含:表信息表格、字段说明表格、使用说明(含 SQL 示例)、可回溯性信息
3. WHEN ODS 表的字段含有 COMMENT 注释时THE 表级文档 SHALL 将 COMMENT 中的说明、示例、JSON 字段映射信息提取并填入字段说明
4. THE ODS 表级文档的表信息 SHALL 包含 Schema、表名、主键、数据来源API 端点或文件)、说明
5. THE ODS 表级文档 SHALL 包含 ETL 元数据字段(`content_hash``source_file``source_endpoint``fetched_at``payload`)的统一说明
6. THE ODS 表级文档的文件命名 SHALL 遵循 `BD_manual_{表名}.md` 格式
### 需求 4建立 API JSON → ODS 字段映射文档
**用户故事:** 作为数据开发人员,我希望有一份清晰的 API 响应字段到 ODS 表字段的映射文档,以便理解数据从 API 到 ODS 的转换逻辑。
#### 验收标准
1. THE 映射文档 SHALL 为每个 API 端点与其对应的 ODS 表建立一份映射文件,存放于 `docs/bd_manual/ODS/mappings/`
2. THE 映射文档 SHALL 包含以下信息API 端点路径、对应 ODS 表名、JSON 响应路径(如 `data.tenantMemberInfos`)、每个字段的 JSON 路径到 ODS 列名的映射
3. WHEN 字段存在类型转换或值处理逻辑时THE 映射文档 SHALL 记录转换规则(如时间格式转换、枚举值映射、金额精度处理)
4. THE 映射文档 SHALL 标注 ETL 补充字段(`content_hash``source_file``source_endpoint``fetched_at``payload`)的生成逻辑
5. THE 映射文档 SHALL 参考 `models/parsers.py` 中的解析逻辑和 `docs/api-reference/` 中的端点文档作为信息来源
6. THE 映射文档的文件命名 SHALL 遵循 `mapping_{API端点名}_{ODS表名}.md` 格式
### 需求 5建立 ODS 数据字典
**用户故事:** 作为数据开发人员,我希望有一份 ODS 层的数据字典汇总文档,以便快速查阅所有 ODS 表的概览信息。
#### 验收标准
1. THE ODS 数据字典 SHALL 创建于 `docs/dictionary/ods_tables_dictionary.md`
2. THE ODS 数据字典 SHALL 列出所有 ODS 表的概览信息,包含:表名、中文说明、主键、记录数、数据来源
3. THE ODS 数据字典 SHALL 遵循与现有 DWD/DWS 数据字典一致的格式