fix(vision): 097 migration裸SQL用sa.text()包裹(SQLAlchemy 2.x要求)
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 0s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (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 / Deploy Staging (Watchtower auto-deploy) (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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 53s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m13s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m33s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m58s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m3s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 4m39s
AI Code Review / AI Code Review (pull_request) Successful in 6m51s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 7m59s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 10m10s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m42s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 17m21s
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 / Canary Release to Production (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 / CI Gate (pull_request) Successful in 1s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 33s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 54s

This commit is contained in:
Xiaoxia Agent
2026-10-06 01:03:32 +08:00
parent 8c56694599
commit 2597962528
@@ -11,6 +11,8 @@
统一置为 inactive。
"""
import sqlalchemy as sa
from alembic import op
revision = "097_viral_video_image_analysis_v4"
@@ -30,16 +32,18 @@ def upgrade() -> None:
conn = op.get_bind()
existing = conn.execute(
"SELECT id FROM viral_video_prompt_templates " "WHERE prompt_type = 'image_analysis' AND version = :v",
sa.text("SELECT id FROM viral_video_prompt_templates " "WHERE prompt_type = 'image_analysis' AND version = :v"),
{"v": V4_VERSION},
).fetchone()
if existing is None:
conn.execute(
"INSERT INTO viral_video_prompt_templates "
"(name, prompt_type, version, system_prompt, user_prompt_template, "
"example_output, is_active) "
"VALUES (:name, 'image_analysis', :version, :sys, :user, :example, TRUE)",
sa.text(
"INSERT INTO viral_video_prompt_templates "
"(name, prompt_type, version, system_prompt, user_prompt_template, "
"example_output, is_active) "
"VALUES (:name, 'image_analysis', :version, :sys, :user, :example, TRUE)"
),
{
"name": V4_NAME,
"version": V4_VERSION,
@@ -50,9 +54,11 @@ def upgrade() -> None:
)
else:
conn.execute(
"UPDATE viral_video_prompt_templates SET name = :name, "
"system_prompt = :sys, user_prompt_template = :user, "
"example_output = :example, is_active = TRUE WHERE id = :id",
sa.text(
"UPDATE viral_video_prompt_templates SET name = :name, "
"system_prompt = :sys, user_prompt_template = :user, "
"example_output = :example, is_active = TRUE WHERE id = :id"
),
{
"name": V4_NAME,
"sys": V4_SYSTEM_PROMPT,
@@ -63,8 +69,10 @@ def upgrade() -> None:
)
conn.execute(
"UPDATE viral_video_prompt_templates SET is_active = FALSE "
"WHERE prompt_type = 'image_analysis' AND version <> :v",
sa.text(
"UPDATE viral_video_prompt_templates SET is_active = FALSE "
"WHERE prompt_type = 'image_analysis' AND version <> :v"
),
{"v": V4_VERSION},
)
@@ -72,10 +80,12 @@ def upgrade() -> None:
def downgrade() -> None:
conn = op.get_bind()
conn.execute(
"DELETE FROM viral_video_prompt_templates " "WHERE prompt_type = 'image_analysis' AND version = :v",
sa.text("DELETE FROM viral_video_prompt_templates " "WHERE prompt_type = 'image_analysis' AND version = :v"),
{"v": V4_VERSION},
)
conn.execute(
"UPDATE viral_video_prompt_templates SET is_active = TRUE "
"WHERE prompt_type = 'image_analysis' AND version = 1"
sa.text(
"UPDATE viral_video_prompt_templates SET is_active = TRUE "
"WHERE prompt_type = 'image_analysis' AND version = 1"
)
)