[V10.328] 強化 PChome 比價診斷與狀態分流
All checks were successful
CD Pipeline / deploy (push) Successful in 1m7s
All checks were successful
CD Pipeline / deploy (push) Successful in 1m7s
This commit is contained in:
@@ -71,5 +71,40 @@ def repair_database_schema():
|
||||
for col_name, ddl in promo_columns:
|
||||
_ensure_column(engine, text, 'promo_products', col_name, ddl)
|
||||
|
||||
# V10.328: PChome/MOMO 比價診斷欄位。正式價差與待審嘗試都需可回溯
|
||||
# URL、圖片、庫存與 matcher 結構化原因,避免「待比對」無法被人工處理。
|
||||
json_type = 'JSONB' if DATABASE_TYPE == 'postgresql' else 'TEXT'
|
||||
competitor_price_columns = [
|
||||
('competitor_product_url', "ALTER TABLE competitor_prices ADD COLUMN competitor_product_url TEXT"),
|
||||
('competitor_image_url', "ALTER TABLE competitor_prices ADD COLUMN competitor_image_url TEXT"),
|
||||
('competitor_stock', "ALTER TABLE competitor_prices ADD COLUMN competitor_stock INTEGER"),
|
||||
('match_diagnostic_json', f"ALTER TABLE competitor_prices ADD COLUMN match_diagnostic_json {json_type}"),
|
||||
('comparison_mode', "ALTER TABLE competitor_prices ADD COLUMN comparison_mode VARCHAR(40)"),
|
||||
('hard_veto', "ALTER TABLE competitor_prices ADD COLUMN hard_veto BOOLEAN"),
|
||||
('diagnostic_codes', f"ALTER TABLE competitor_prices ADD COLUMN diagnostic_codes {json_type}"),
|
||||
]
|
||||
competitor_history_columns = [
|
||||
('competitor_product_url', "ALTER TABLE competitor_price_history ADD COLUMN competitor_product_url TEXT"),
|
||||
('competitor_image_url', "ALTER TABLE competitor_price_history ADD COLUMN competitor_image_url TEXT"),
|
||||
('competitor_stock', "ALTER TABLE competitor_price_history ADD COLUMN competitor_stock INTEGER"),
|
||||
('match_diagnostic_json', f"ALTER TABLE competitor_price_history ADD COLUMN match_diagnostic_json {json_type}"),
|
||||
('comparison_mode', "ALTER TABLE competitor_price_history ADD COLUMN comparison_mode VARCHAR(40)"),
|
||||
('hard_veto', "ALTER TABLE competitor_price_history ADD COLUMN hard_veto BOOLEAN"),
|
||||
('diagnostic_codes', f"ALTER TABLE competitor_price_history ADD COLUMN diagnostic_codes {json_type}"),
|
||||
]
|
||||
competitor_attempt_columns = [
|
||||
('competitor_product_url', "ALTER TABLE competitor_match_attempts ADD COLUMN competitor_product_url TEXT"),
|
||||
('competitor_image_url', "ALTER TABLE competitor_match_attempts ADD COLUMN competitor_image_url TEXT"),
|
||||
('competitor_stock', "ALTER TABLE competitor_match_attempts ADD COLUMN competitor_stock INTEGER"),
|
||||
('match_diagnostic_json', f"ALTER TABLE competitor_match_attempts ADD COLUMN match_diagnostic_json {json_type}"),
|
||||
('comparison_mode', "ALTER TABLE competitor_match_attempts ADD COLUMN comparison_mode VARCHAR(40)"),
|
||||
('hard_veto', "ALTER TABLE competitor_match_attempts ADD COLUMN hard_veto BOOLEAN"),
|
||||
('diagnostic_codes', f"ALTER TABLE competitor_match_attempts ADD COLUMN diagnostic_codes {json_type}"),
|
||||
]
|
||||
for table_columns in (competitor_price_columns, competitor_history_columns, competitor_attempt_columns):
|
||||
for col_name, ddl in table_columns:
|
||||
table_name = ddl.split()[2]
|
||||
_ensure_column(engine, text, table_name, col_name, ddl)
|
||||
|
||||
except Exception as e:
|
||||
_log.error(f"[Database] [Schema] ❌ 資料庫修復失敗 | Error: {e}")
|
||||
|
||||
Reference in New Issue
Block a user