Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
修正資料庫中的 import_date 欄位
|
|
將所有 1970-01-01 的日期更新為今天
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from database.vendor_manager import VendorDatabaseManager
|
|
from database.vendor_models import VendorStockout
|
|
from datetime import date
|
|
|
|
def fix_import_dates():
|
|
"""修正 import_date 欄位"""
|
|
|
|
db = VendorDatabaseManager()
|
|
session = db.get_session()
|
|
|
|
try:
|
|
# 查詢所有 import_date 為 1970-01-01 的記錄
|
|
bad_date = date(1970, 1, 1)
|
|
records = session.query(VendorStockout).filter(
|
|
VendorStockout.import_date == bad_date
|
|
).all()
|
|
|
|
print("=" * 80)
|
|
print(f"修正 import_date 欄位")
|
|
print("=" * 80)
|
|
|
|
if not records:
|
|
print("\n✅ 沒有需要修正的記錄(所有日期都正確)")
|
|
return
|
|
|
|
print(f"\n找到 {len(records)} 筆需要修正的記錄")
|
|
print(f"將日期從 1970-01-01 更新為今天: {date.today()}")
|
|
print("\n確定要更新嗎?(y/n): ", end='')
|
|
|
|
response = input().strip().lower()
|
|
if response != 'y':
|
|
print("❌ 已取消")
|
|
return
|
|
|
|
# 更新記錄
|
|
today = date.today()
|
|
updated_count = 0
|
|
|
|
for record in records:
|
|
record.import_date = today
|
|
updated_count += 1
|
|
|
|
if updated_count % 10 == 0:
|
|
print(f" 已更新 {updated_count}/{len(records)} 筆...")
|
|
|
|
# 提交變更
|
|
session.commit()
|
|
|
|
print(f"\n✅ 成功更新 {updated_count} 筆記錄")
|
|
print(f" 新日期: {today}")
|
|
|
|
print("\n" + "=" * 80)
|
|
print("修正完成!")
|
|
print("=" * 80)
|
|
|
|
except Exception as e:
|
|
session.rollback()
|
|
print(f"\n❌ 錯誤: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
finally:
|
|
session.close()
|
|
|
|
if __name__ == '__main__':
|
|
fix_import_dates()
|