1
This commit is contained in:
107
scripts/ops/reorganize_bd_manuals.py
Normal file
107
scripts/ops/reorganize_bd_manuals.py
Normal file
@@ -0,0 +1,107 @@
|
||||
"""
|
||||
一次性脚本:将 docs/database/ 下的 ETL 专属 BD_Manual 文件迁移到
|
||||
apps/etl/connectors/feiqiu/docs/database/ 对应子目录,
|
||||
将迁移变更记录归档到 docs/database/_archived/。
|
||||
"""
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent.parent
|
||||
SRC = ROOT / "docs" / "database"
|
||||
ETL_DB = ROOT / "apps" / "etl" / "connectors" / "feiqiu" / "docs" / "database"
|
||||
ARCHIVED = SRC / "_archived"
|
||||
|
||||
# 新建 cross_layer 目录(ODS→DWD 跨层映射文档)
|
||||
CROSS_LAYER = ETL_DB / "cross_layer"
|
||||
CROSS_LAYER.mkdir(exist_ok=True)
|
||||
|
||||
# ── A. ODS→DWD 跨层映射 → ETL cross_layer/ ──
|
||||
cross_layer_files = [
|
||||
"BD_Manual_assistant_accounts_master.md",
|
||||
"BD_Manual_assistant_service_records.md",
|
||||
"BD_Manual_goods_stock_movements.md",
|
||||
"BD_Manual_goods_stock_summary.md",
|
||||
"BD_Manual_member_balance_changes.md",
|
||||
"BD_Manual_recharge_settlements.md",
|
||||
"BD_Manual_site_tables_master.md",
|
||||
"BD_Manual_store_goods_master.md",
|
||||
"BD_Manual_store_goods_sales_records.md",
|
||||
"BD_Manual_tenant_goods_master.md",
|
||||
"BD_Manual_group_buy_package_details.md",
|
||||
"BD_Manual_goods_stock_warning_info.md", # ODS→DWD 加列变更
|
||||
]
|
||||
|
||||
# ── B. DWD/DWS 层文档 → ETL 对应子目录 ──
|
||||
dwd_files = [
|
||||
"BD_Manual_dim_groupbuy_package_ex_detail_fields.md",
|
||||
]
|
||||
dws_files = [
|
||||
"BD_Manual_dws_goods_stock_summary.md",
|
||||
"BD_Manual_dws_project_tags.md",
|
||||
"BD_Manual_dws_assistant_order_contribution.md",
|
||||
"BD_Manual_dws_member_spending_power_index.md",
|
||||
]
|
||||
|
||||
# ── C. 迁移变更记录 → _archived/ ──
|
||||
archive_files = [
|
||||
"BD_Manual_20260301_cleanup_and_fixes.md",
|
||||
"BD_Manual_biz_date_function_and_mv_rebuild.md",
|
||||
"BD_Manual_fix_dim_staff_ex_rankname.md",
|
||||
"BD_Manual_fix_dws_assistant_daily_table_area.md",
|
||||
"BD_Manual_tenant_id_int_to_bigint.md",
|
||||
]
|
||||
|
||||
moved = []
|
||||
archived = []
|
||||
skipped = []
|
||||
|
||||
def move_file(src_path: Path, dst_path: Path, label: str):
|
||||
if not src_path.exists():
|
||||
skipped.append(f"[跳过] {src_path.name} — 文件不存在")
|
||||
return
|
||||
dst_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.move(str(src_path), str(dst_path))
|
||||
return True
|
||||
|
||||
# A: cross_layer
|
||||
for f in cross_layer_files:
|
||||
src = SRC / f
|
||||
dst = CROSS_LAYER / f
|
||||
if move_file(src, dst, "cross_layer"):
|
||||
moved.append(f" {f} → cross_layer/")
|
||||
|
||||
# B: DWD
|
||||
for f in dwd_files:
|
||||
src = SRC / f
|
||||
dst = ETL_DB / "DWD" / "changes" / f
|
||||
if move_file(src, dst, "DWD/changes"):
|
||||
moved.append(f" {f} → DWD/changes/")
|
||||
|
||||
for f in dws_files:
|
||||
src = SRC / f
|
||||
dst = ETL_DB / "DWS" / "changes" / f
|
||||
if move_file(src, dst, "DWS/changes"):
|
||||
moved.append(f" {f} → DWS/changes/")
|
||||
|
||||
# C: archive
|
||||
for f in archive_files:
|
||||
src = SRC / f
|
||||
dst = ARCHIVED / f
|
||||
if move_file(src, dst, "_archived"):
|
||||
archived.append(f" {f}")
|
||||
|
||||
print("=== BD_Manual 文档整理完成 ===\n")
|
||||
print(f"迁移到 ETL 模块 ({len(moved)} 个):")
|
||||
for m in moved:
|
||||
print(m)
|
||||
print(f"\n归档到 _archived/ ({len(archived)} 个):")
|
||||
for a in archived:
|
||||
print(a)
|
||||
if skipped:
|
||||
print(f"\n跳过 ({len(skipped)} 个):")
|
||||
for s in skipped:
|
||||
print(s)
|
||||
print(f"\n保留在 docs/database/ 的文件:")
|
||||
remaining = [p.name for p in SRC.glob("BD_Manual_*.md") if p.is_file()]
|
||||
for r in sorted(remaining):
|
||||
print(f" {r}")
|
||||
Reference in New Issue
Block a user