Files
diary-news/backend/alembic/versions/0004_dual_commentary.py

129 lines
3.4 KiB
Python
Raw Normal View History

"""双 provider 评论:加美团评论列 + commentary_engine 标识
- commentary_engine 区分"实际写入的 provider 名称"(angel / meituan / "angel,meituan")
- commentary_meituan{_status,_model,_error,_} 4
Revision ID: 0004
Revises: 0003
Create Date: 2026-06-12
"""
from __future__ import annotations
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
revision: str = "0004"
down_revision: Union[str, None] = "0003"
branch_labels = None
depends_on = None
def upgrade() -> None:
# === articles:加 5 列(4 个 status/model/error + 1 个 content)===
op.add_column(
"articles",
sa.Column("commentary_engine", sa.String(32), nullable=True),
)
op.add_column(
"articles",
sa.Column(
"commentary_meituan",
sa.Text,
nullable=True,
),
)
op.add_column(
"articles",
sa.Column(
"commentary_meituan_status",
sa.String(16),
nullable=False,
server_default="n/a",
),
)
op.add_column(
"articles",
sa.Column(
"commentary_meituan_model",
sa.String(64),
nullable=True,
),
)
op.add_column(
"articles",
sa.Column(
"commentary_meituan_error",
sa.Text,
nullable=True,
),
)
# 旧存量:commentary_status=ok 的文章 → 标记 commentary_engine=angel
op.execute(
"UPDATE articles SET commentary_engine = 'angel' "
"WHERE commentary_status = 'ok' AND commentary_engine IS NULL"
)
# === llm_settings:加 6 列(美团 provider 配置)===
op.add_column(
"llm_settings",
sa.Column("meituan_api_key", sa.Text, nullable=False, server_default=""),
)
op.add_column(
"llm_settings",
sa.Column(
"meituan_base_url",
sa.String(255),
nullable=False,
server_default="https://api.longcat.chat/openai/v1",
),
)
op.add_column(
"llm_settings",
sa.Column(
"meituan_chat_model",
sa.String(64),
nullable=False,
server_default="LongCat-2.0-Preview",
),
)
op.add_column(
"llm_settings",
sa.Column(
"meituan_interval_sec",
sa.Float,
nullable=False,
server_default="2.0",
),
)
op.add_column(
"llm_settings",
sa.Column(
"meituan_enabled",
sa.Boolean,
nullable=False,
server_default=sa.true(),
),
)
op.add_column(
"llm_settings",
sa.Column("meituan_commentary_prompt", sa.Text, nullable=True),
)
def downgrade() -> None:
# 反向顺序很重要(后加的先删)
op.drop_column("llm_settings", "meituan_commentary_prompt")
op.drop_column("llm_settings", "meituan_enabled")
op.drop_column("llm_settings", "meituan_interval_sec")
op.drop_column("llm_settings", "meituan_chat_model")
op.drop_column("llm_settings", "meituan_base_url")
op.drop_column("llm_settings", "meituan_api_key")
op.drop_column("articles", "commentary_meituan_error")
op.drop_column("articles", "commentary_meituan_model")
op.drop_column("articles", "commentary_meituan_status")
op.drop_column("articles", "commentary_meituan")
op.drop_column("articles", "commentary_engine")