Files
Neo-ZQYY/scripts/ops/_archive_phase2.py

94 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
第二轮归档:迁移脚本 + 过时的变更记录文档。
保留seeds、fdw、create_test_db、数据字典类 BD_Manual。
用法cd C:\\NeoZQYY && python scripts/ops/_archive_phase2.py
"""
import shutil
from pathlib import Path
from datetime import date
ROOT = Path(__file__).resolve().parent.parent.parent
ARCHIVE_BASE = ROOT / "db" / "_archived" / f"ddl_baseline_{date.today().isoformat()}"
# ── 1. db/ 下的迁移脚本 ──────────────────────────────────────────────────
MIGRATION_FILES = []
for d in ["db/etl_feiqiu/migrations", "db/zqyy_app/migrations"]:
p = ROOT / d
if p.exists():
for f in sorted(p.glob("*.sql")):
MIGRATION_FILES.append(str(f.relative_to(ROOT)))
# 一次性数据迁移脚本
MIGRATION_FILES.append("db/scripts/migrate_test_data.sql")
# ── 2. docs/database/ 下的迁移变更记录(非数据字典) ─────────────────────
# 迁移变更记录:记录某次 ALTER/DROP/CREATE 操作的 BD_Manual
MIGRATION_DOCS = [
"docs/database/BD_Manual_dim_member_add_birthday.md", # C1 加列
"docs/database/BD_Manual_drop_assistant_abolish_tables.md", # 删表
"docs/database/BD_Manual_dws_assistant_monthly_uk_change.md", # 改约束
"docs/database/BD_Manual_dws_assistant_salary_uk_change.md", # 改约束
"docs/database/BD_Manual_fix_bc_sentinel_dates.md", # 修数据
"docs/database/BD_Manual_fdw_reverse_member_birthday.md", # FDW 变更
"docs/database/BD_Manual_member_birthday_manual.md", # 新建表
"docs/database/etl_feiqiu_schema_migration.md", # 迁移汇总
"docs/database/zqyy_app_admin_web_tables.md", # 新建表
]
# docs 归档到 docs/database/_archived/
DOCS_ARCHIVE = ROOT / "docs" / "database" / "_archived"
def move_file(src_rel, dest_base):
"""移动文件,保留相对路径结构。"""
src = ROOT / src_rel
if not src.exists():
return None
dest = dest_base / src_rel
dest.parent.mkdir(parents=True, exist_ok=True)
shutil.move(str(src), str(dest))
return src_rel
def main():
moved_db = []
moved_docs = []
# 归档迁移 SQL
print("── 归档迁移脚本 → db/_archived/ ──")
for rel in MIGRATION_FILES:
result = move_file(rel, ARCHIVE_BASE)
if result:
moved_db.append(result)
print(f"{result}")
# 归档迁移变更文档
print("\n── 归档迁移变更文档 → docs/database/_archived/ ──")
for rel in MIGRATION_DOCS:
src = ROOT / rel
if not src.exists():
continue
dest = DOCS_ARCHIVE / src.name
DOCS_ARCHIVE.mkdir(parents=True, exist_ok=True)
shutil.move(str(src), str(dest))
moved_docs.append(rel)
print(f"{src.name}")
# 补充 .gitkeep
for d in ["db/etl_feiqiu/migrations", "db/zqyy_app/migrations", "db/scripts"]:
gk = ROOT / d / ".gitkeep"
dp = ROOT / d
if dp.exists() and not gk.exists():
# 检查目录是否只剩 .gitkeep 或为空
remaining = [f for f in dp.iterdir() if f.name != ".gitkeep"]
if not remaining:
gk.touch()
print(f" 📄 补充 {d}/.gitkeep")
print(f"\n✅ 完成:归档 {len(moved_db)} 个迁移 SQL + {len(moved_docs)} 个变更文档")
if __name__ == "__main__":
main()