5.8 KiB
实施计划:助教废除(Abolish)全链路清理
概述
按 ETL 数据流的逆序(DWS → DWD → ODS)清理废除链路,确保每一步都可验证。先清理代码引用,再清理 DDL 和数据库对象,最后更新运维脚本和测试。
任务
-
1. 清理 DWS 层死代码
-
1.1 从
assistant_daily_task.py中删除_extract_trash_records和_build_trash_index方法,从extract()中移除对_extract_trash_records的调用和trash_records变量,从_aggregate_by_assistant_date签名中移除trash_index参数,同步更新所有调用点。保留is_trash判断逻辑不变。- 更新文件头部的 docstring,移除对
dwd_assistant_trash_event的数据来源引用 - Requirements: 3.1, 3.2, 3.3, 3.4
- 更新文件头部的 docstring,移除对
-
1.2 编写属性测试验证废除聚合逻辑正确性
- Property 1: 废除聚合逻辑正确性(is_trash 驱动)
- 生成随机服务记录列表,验证
trashed_seconds/trashed_count与is_trash=1记录的手动计算一致 - Validates: Requirements 3.4, 9.3
-
-
2. 清理 DWD 层映射和验证器
-
2.1 从
dwd_load_task.py的FACT_MAPPINGS中删除dwd.dwd_assistant_trash_event和dwd.dwd_assistant_trash_event_ex条目,从TABLE_MAP中删除对应的 ODS→DWD 映射- Requirements: 2.1, 2.2, 2.3, 2.4
-
2.2 从
dwd_verifier.py中删除dwd_assistant_trash_event和dwd_assistant_trash_event_ex的 ID 映射和时间字段映射配置- Requirements: 4.1, 4.2, 4.3, 4.4
-
-
3. 清理 ODS 层任务定义
-
3.1 从
ods_tasks.py中删除ODS_ASSISTANT_ABOLISH的OdsTaskSpec定义,从默认执行序列中移除该任务代码- Requirements: 1.2, 1.3
-
3.2 从
task_registry.py中删除ODS_ASSISTANT_ABOLISH的注册语句(如果存在独立注册)- Requirements: 1.1
-
-
4. Checkpoint — 确保 ETL 单元测试通过
- 运行
cd apps/etl/connectors/feiqiu && pytest tests/unit,确保所有测试通过,如有问题请询问用户。
- 运行
-
5. 更新属性测试
- 5.1 从
tests/test_property_1_fact_mappings.py中删除dwd.dwd_assistant_trash_event在 A 类表列表中的条目,删除_REQ3_EXPECTED映射期望及其在参数化测试中的引用- Requirements: 7.1, 7.2
- 5.1 从
-
6. 创建数据库迁移脚本
- 6.1 在
db/etl_feiqiu/migrations/下创建迁移脚本2026-02-22__drop_assistant_abolish_tables.sql,包含DROP TABLE IF EXISTS语句删除ods.assistant_cancellation_records、dwd.dwd_assistant_trash_event、dwd.dwd_assistant_trash_event_ex,以及删除相关索引(如idx_ods_assistant_cancellation_records_latest),包含注释说明移除原因- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5
- 6.1 在
-
7. 更新 DDL schema 文件
-
7.1 从
db/etl_feiqiu/schemas/dwd.sql中删除dwd_assistant_trash_event和dwd_assistant_trash_event_ex的 CREATE TABLE 和 COMMENT 语句- Requirements: 6.1, 6.2
-
7.2 从
db/etl_feiqiu/schemas/ods.sql中删除assistant_cancellation_records的 CREATE TABLE 和 COMMENT 语句- Requirements: 6.3
-
7.3 从
db/etl_feiqiu/schemas/schema_dwd_doc.sql中删除dwd_assistant_trash_event和dwd_assistant_trash_event_ex的 CREATE TABLE 和 COMMENT 语句- Requirements: 6.4
-
7.4 从
db/etl_feiqiu/schemas/schema_ODS_doc.sql中删除assistant_cancellation_records的 CREATE TABLE 和 COMMENT 语句- Requirements: 6.5
-
7.5 更新
db/etl_feiqiu/schemas/dws.sql和db/etl_feiqiu/schemas/schema_dws.sql中dws_assistant_daily_detail的注释,将数据来源从dwd_assistant_trash_event改为dwd_assistant_service_log_ex.is_trash- Requirements: 6.6, 6.7
-
-
8. 更新运维脚本
-
8.1 从
scripts/ops/dataflow_analyzer.py中删除ODS_ASSISTANT_ABOLISHspec 条目- Requirements: 8.1
-
8.2 从
scripts/ops/gen_full_dataflow_doc.py中删除ODS_ASSISTANT_ABOLISHspec 条目- Requirements: 8.1
-
8.3 从
scripts/ops/etl_consistency_check.py中删除ODS_ASSISTANT_ABOLISH映射和dwd.dwd_assistant_trash_event映射- Requirements: 8.1, 8.2
-
8.4 从
scripts/ops/blackbox_test_report.py中删除assistant_cancellation_records在 ODS_TABLES 列表中的条目、ODS_ASSISTANT_ABOLISH映射、dwd.dwd_assistant_trash_event映射- Requirements: 8.1, 8.2, 8.3, 8.4
-
8.5 从
scripts/ops/field_audit.py中删除assistant_cancellation_records审计条目- Requirements: 8.3, 8.4
-
8.6 从
scripts/ops/gen_field_review_doc.py中删除assistant_cancellation_records相关的字段定义块- Requirements: 8.3, 8.4
-
8.7 从
scripts/ops/gen_api_field_mapping.py中删除assistant_cancellation_records在 ODS_TABLES 列表中的条目- Requirements: 8.3
-
8.8 从
scripts/ops/export_dwd_field_review.py中删除dwd_assistant_trash_event和dwd_assistant_trash_event_ex条目- Requirements: 8.4
-
8.9 从
scripts/ops/check_ods_latest_indexes.py中删除idx_ods_assistant_cancellation_records_latest索引检查- Requirements: 8.3
-
-
9. 最终 Checkpoint — 确保所有测试通过
- 运行
cd apps/etl/connectors/feiqiu && pytest tests/unit和cd C:\NeoZQYY && pytest tests/ -v - 确认所有测试通过,无回归,如有问题请询问用户。
- Requirements: 7.3, 9.1, 9.2, 9.3
- 运行
备注
- 标记
*的任务为可选,可跳过以加速 MVP - 每个任务引用了具体的需求编号,便于追溯
- Checkpoint 确保增量验证
- 属性测试验证通用正确性属性,单元测试验证具体示例和边界情况
- 本次清理涉及高风险路径(
tasks/、orchestration/、db/),完成后需运行/audit