2026-06-01 09:25:26 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
from sqlalchemy import text
|
|
|
|
|
|
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
|
|
|
|
|
|
|
|
|
from app.db.session import SessionLocal
|
|
|
|
|
from scripts.init_demo_db import init_database
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main() -> None:
|
|
|
|
|
"""新表迁移:创建并补齐 case_base、traditional_case、teaching_case、case_exam_item、training_* 和 training_record。"""
|
|
|
|
|
init_database()
|
|
|
|
|
with SessionLocal() as db:
|
|
|
|
|
_apply_table_comments(db)
|
|
|
|
|
db.commit()
|
|
|
|
|
print("new schema migration completed")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _apply_table_comments(db) -> None:
|
|
|
|
|
"""表注释补齐:为当前业务表写入中文说明,便于数据库工具查看。"""
|
|
|
|
|
comments = {
|
|
|
|
|
"case_base": "病例主表",
|
|
|
|
|
"traditional_case": "传统病例扩展表",
|
|
|
|
|
"teaching_case": "教学互动病例扩展表",
|
|
|
|
|
"scoring_rule": "评分规则表",
|
|
|
|
|
"case_exam_item": "病例检查检验项目表",
|
|
|
|
|
"training_session": "训练会话表",
|
|
|
|
|
"training_order": "训练检查申请表",
|
|
|
|
|
"training_submission": "训练诊断治疗提交表",
|
|
|
|
|
"training_record": "训练记录表",
|
2026-06-03 15:51:46 +08:00
|
|
|
"training_score_detail": "评分明细表",
|
|
|
|
|
"department": "科室表",
|
|
|
|
|
"user": "用户表",
|
2026-06-01 09:25:26 +08:00
|
|
|
}
|
|
|
|
|
dialect = db.bind.dialect.name if db.bind else ""
|
|
|
|
|
if dialect != "mysql":
|
|
|
|
|
return
|
|
|
|
|
for table_name, comment in comments.items():
|
|
|
|
|
safe_comment = comment.replace("'", "''")
|
|
|
|
|
db.execute(text(f"ALTER TABLE `{table_name}` COMMENT='{safe_comment}'"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|