Files
pixel/backend/alembic/versions/add_cinematic_fields.py
张鹏 f9f4560459 Initial commit: Pixel AI comic/video creation platform
- FastAPI backend with SQLModel, Alembic migrations, AgentScope agents
- Next.js 15 frontend with React 19, Tailwind, Zustand, React Flow
- Multi-provider AI system (DashScope, Kling, MiniMax, Volcengine, OpenAI, etc.)
- All HTTP clients migrated from sync requests to async httpx
- Admin-managed API keys via environment variables
- SSRF vulnerability fixed in ensure_url()
2026-04-29 01:20:12 +08:00

42 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""add cinematic and professional fields to assets and storyboards
Revision ID: add_cinematic_fields
Revises: add_prompt_fields
Create Date: 2026-01-20
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'add_cinematic_fields'
down_revision = 'add_canvas_metadata'
branch_labels = None
depends_on = None
def upgrade() -> None:
# Assets表已经使用extra_data存储这些字段但为了查询效率我们可以选择不添加直接列
# 因为Asset的emotion, environment_type, weather等字段已经通过extra_data JSON存储
# 如果未来需要索引查询,可以添加:
# op.add_column('assets', sa.Column('emotion', sa.String(), nullable=True))
# op.add_column('assets', sa.Column('environment_type', sa.String(), nullable=True))
# op.add_column('assets', sa.Column('weather', sa.String(), nullable=True))
# Add cinematic control fields to storyboards table
op.add_column('storyboards', sa.Column('camera_angle', sa.String(), nullable=True))
op.add_column('storyboards', sa.Column('lens', sa.String(), nullable=True))
op.add_column('storyboards', sa.Column('focus', sa.String(), nullable=True))
op.add_column('storyboards', sa.Column('lighting', sa.String(), nullable=True))
op.add_column('storyboards', sa.Column('color_style', sa.String(), nullable=True))
def downgrade() -> None:
# Remove cinematic fields from storyboards
op.drop_column('storyboards', 'color_style')
op.drop_column('storyboards', 'lighting')
op.drop_column('storyboards', 'focus')
op.drop_column('storyboards', 'lens')
op.drop_column('storyboards', 'camera_angle')