chore: 清理临时 debug 端点,保留 psycopg 连接串修复
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Check push changed paths (push) Successful in 8s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m6s
CI/CD Pipeline / Build Staging API Image (push) Successful in 1m31s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E 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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m15s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m56s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 1m57s
CI/CD Pipeline / CI Gate (pull_request) Successful in 2s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m21s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m36s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m2s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 4m3s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 2m37s
AI Code Review / AI Code Review (pull_request) Successful in 7m41s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 1m36s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 2m51s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 3m44s
CI/CD Pipeline / Integration Tests (push) Successful in 18m4s
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
CI/CD Pipeline / Validate - Style (push) Has been cancelled
CI/CD Pipeline / Validate - Security (push) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled

This commit is contained in:
xiaoxia
2026-10-01 21:38:01 +08:00
parent 6ee9ca6a33
commit 83be8a7d35
-90
View File
@@ -144,93 +144,3 @@ async def _check_migrations() -> dict:
return {"status": "unhealthy", "message": f"Migration check failed: {error}"}
@router.get("/debug/viral-columns")
def debug_viral_columns():
"""Temporary debug: inspect viral_video_jobs columns + alembic_version."""
try:
from sqlalchemy import create_engine, text
url = settings.effective_database_url
eng = create_engine(url, connect_args={"connect_timeout": 3})
with eng.connect() as conn:
cols = [r[0] for r in conn.execute(text(
"SELECT column_name FROM information_schema.columns "
"WHERE table_schema='public' AND table_name='viral_video_jobs' "
"ORDER BY ordinal_position"
)).fetchall()]
row = conn.execute(text("SELECT version_num FROM alembic_version")).fetchone()
version = row[0] if row else None
eng.dispose()
return {"columns": cols, "alembic_version": version, "count": len(cols), "db_url": url[:url.find('@')+1] + '***' if '@' in url else url}
except Exception as e:
import traceback
return {"error": f"{type(e).__name__}: {e}", "trace": traceback.format_exc()[-500:]}
@router.get("/debug/alembic")
def debug_alembic():
"""Temporary debug: run alembic current/upgrade --sql from the API process."""
import subprocess
try:
proc = subprocess.run(
["alembic", "current"],
cwd="/app", capture_output=True, text=True, timeout=15,
env={**__import__("os").environ, "PYTHONPATH": "/app:/app/apps/api"}
)
return {
"returncode": proc.returncode,
"stdout": proc.stdout[-2000:],
"stderr": proc.stderr[-2000:],
}
except Exception as e:
import traceback
return {"error": str(e), "trace": traceback.format_exc()[-1000:]}
@router.get("/debug/ls-alembic")
def debug_ls_alembic():
import os
out = {}
for d in ["/app/alembic/versions", "/app/migrations"]:
try:
out[d] = sorted(os.listdir(d)) if os.path.isdir(d) else f"NOT_DIR: {os.path.exists(d)}"
except Exception as e:
out[d] = str(e)
out["cwd"] = os.getcwd()
return out
@router.get("/debug/alembic-heads")
def debug_alembic_heads():
import subprocess
try:
def run(args):
proc = subprocess.run(
args, cwd="/app", capture_output=True, text=True, timeout=20,
env={**__import__("os").environ, "PYTHONPATH": "/app:/app/apps/api"}
)
return {"rc": proc.returncode, "out": proc.stdout[-1500:], "err": proc.stderr[-1500:]}
return {
"current": run(["alembic", "current"]),
"heads": run(["alembic", "heads"]),
"upgrade_sql": run(["alembic", "upgrade", "head", "--sql"]),
}
except Exception as e:
import traceback
return {"error": str(e), "trace": traceback.format_exc()[-1000:]}
@router.get("/debug/alembic-upgrade")
def debug_alembic_upgrade():
"""Actually run alembic upgrade head from API process (debug only)."""
import subprocess, os
try:
proc = subprocess.run(
["alembic", "upgrade", "head"],
cwd="/app", capture_output=True, text=True, timeout=60,
env={**os.environ, "PYTHONPATH": "/app:/app/apps/api"}
)
return {"rc": proc.returncode, "out": proc.stdout[-3000:], "err": proc.stderr[-3000:]}
except Exception as e:
import traceback
return {"error": str(e), "trace": traceback.format_exc()[-1500:]}