fix(ci): check_migration_safety.py black格式化修复
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 15s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 38s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m34s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 16s

This commit is contained in:
2026-07-13 16:29:53 +08:00
parent 5c73db4ef0
commit 83b2940f7c
+8 -24
View File
@@ -145,9 +145,7 @@ def check_not_null_without_default(file_path: Path, upgrade_content: str) -> Lis
continue
# 检查是否有默认值(server_default 或 default
has_default = bool(
re.search(r"server_default\s*=", call) or re.search(r"\bdefault\s*=", call)
)
has_default = bool(re.search(r"server_default\s*=", call) or re.search(r"\bdefault\s*=", call))
if not has_default:
# 提取表名和列名
@@ -160,14 +158,10 @@ def check_not_null_without_default(file_path: Path, upgrade_content: str) -> Lis
table = table_col_match.group(1)
col = table_col_match.group(2)
issues.append(
f"{file_path.name}: 新增 NOT NULL 约束无默认值 "
f"(表: {table}, 列: {col}- 旧数据为空时迁移失败"
f"{file_path.name}: 新增 NOT NULL 约束无默认值 " f"(表: {table}, 列: {col}- 旧数据为空时迁移失败"
)
else:
issues.append(
f"{file_path.name}: 新增 NOT NULL 约束无默认值 "
"- 旧数据为空时迁移失败"
)
issues.append(f"{file_path.name}: 新增 NOT NULL 约束无默认值 " "- 旧数据为空时迁移失败")
return issues
@@ -210,9 +204,7 @@ def check_large_table_alter(file_path: Path, upgrade_content: str) -> List[str]:
)
# 检测大表上的 drop_column
drop_col_pattern = (
r"op\.drop_column\(\s*['\"]([^'\"]+)['\"]\s*,\s*['\"]([^'\"]+)['\"]"
)
drop_col_pattern = r"op\.drop_column\(\s*['\"]([^'\"]+)['\"]\s*,\s*['\"]([^'\"]+)['\"]"
for match in re.finditer(drop_col_pattern, upgrade_content):
table = match.group(1)
col = match.group(2)
@@ -245,9 +237,7 @@ def get_new_migrations_via_diff(diff_target: str) -> List[Path]:
text=True,
check=True,
)
files = [
line.strip() for line in result.stdout.strip().split("\n") if line.strip()
]
files = [line.strip() for line in result.stdout.strip().split("\n") if line.strip()]
return [REPO_ROOT / f for f in files]
except subprocess.CalledProcessError as e:
print(f"⚠️ git diff 失败({diff_target}):{e.stderr.strip()}")
@@ -255,9 +245,7 @@ def get_new_migrations_via_diff(diff_target: str) -> List[Path]:
return sorted(ALEMBIC_VERSIONS_DIR.glob("*.py"))
def find_new_migrations(
since_revision: str | None = None, diff_against: str | None = None
) -> List[Path]:
def find_new_migrations(since_revision: str | None = None, diff_against: str | None = None) -> List[Path]:
"""
找出需要检查的迁移文件。
优先级:diff_against > since_revision > 全部
@@ -320,9 +308,7 @@ def analyze_migration(file_path: Path) -> Tuple[List[str], List[str], List[str]]
def main() -> int:
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
)
parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument(
"--since",
default=os.getenv("MIGRATION_SINCE_REVISION"),
@@ -388,9 +374,7 @@ def main() -> int:
print()
print("=" * 60)
print(
f"检查结果:{len(all_safe)} 项安全 / {len(all_medium)} 项中风险 / {len(all_high)} 项高风险"
)
print(f"检查结果:{len(all_safe)} 项安全 / {len(all_medium)} 项中风险 / {len(all_high)} 项高风险")
print()
if all_high: