177 lines
8.2 KiB
Python
177 lines
8.2 KiB
Python
"""初始化SQLite预置数据
|
|
|
|
Revision ID: a1b2c3d4e5f6
|
|
Revises: fbeb1038c728
|
|
Create Date: 2025-12-27 08:56:00.000000
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
from sqlalchemy import table, column, String, Integer, Text
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = 'a1b2c3d4e5f6'
|
|
down_revision: Union[str, None] = 'fbeb1038c728'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
"""插入预置数据"""
|
|
|
|
# ==================== 1. 插入关系类型数据 ====================
|
|
relationship_types_table = table(
|
|
'relationship_types',
|
|
column('name', String),
|
|
column('category', String),
|
|
column('reverse_name', String),
|
|
column('intimacy_range', String),
|
|
column('icon', String),
|
|
column('description', Text),
|
|
)
|
|
|
|
relationship_types_data = [
|
|
# 家庭关系
|
|
{"name": "父亲", "category": "family", "reverse_name": "子女", "intimacy_range": "high", "icon": "👨", "description": "父子/父女关系"},
|
|
{"name": "母亲", "category": "family", "reverse_name": "子女", "intimacy_range": "high", "icon": "👩", "description": "母子/母女关系"},
|
|
{"name": "兄弟", "category": "family", "reverse_name": "兄弟", "intimacy_range": "high", "icon": "👬", "description": "兄弟关系"},
|
|
{"name": "姐妹", "category": "family", "reverse_name": "姐妹", "intimacy_range": "high", "icon": "👭", "description": "姐妹关系"},
|
|
{"name": "子女", "category": "family", "reverse_name": "父母", "intimacy_range": "high", "icon": "👶", "description": "子女关系"},
|
|
{"name": "配偶", "category": "family", "reverse_name": "配偶", "intimacy_range": "high", "icon": "💑", "description": "夫妻关系"},
|
|
{"name": "恋人", "category": "family", "reverse_name": "恋人", "intimacy_range": "high", "icon": "💕", "description": "恋爱关系"},
|
|
|
|
# 社交关系
|
|
{"name": "师父", "category": "social", "reverse_name": "徒弟", "intimacy_range": "high", "icon": "🎓", "description": "师徒关系(师父视角)"},
|
|
{"name": "徒弟", "category": "social", "reverse_name": "师父", "intimacy_range": "high", "icon": "📚", "description": "师徒关系(徒弟视角)"},
|
|
{"name": "朋友", "category": "social", "reverse_name": "朋友", "intimacy_range": "medium", "icon": "🤝", "description": "朋友关系"},
|
|
{"name": "同学", "category": "social", "reverse_name": "同学", "intimacy_range": "medium", "icon": "🎒", "description": "同学关系"},
|
|
{"name": "邻居", "category": "social", "reverse_name": "邻居", "intimacy_range": "low", "icon": "🏘️", "description": "邻居关系"},
|
|
{"name": "知己", "category": "social", "reverse_name": "知己", "intimacy_range": "high", "icon": "💙", "description": "知心好友"},
|
|
|
|
# 职业关系
|
|
{"name": "上司", "category": "professional", "reverse_name": "下属", "intimacy_range": "low", "icon": "👔", "description": "上下级关系(上司视角)"},
|
|
{"name": "下属", "category": "professional", "reverse_name": "上司", "intimacy_range": "low", "icon": "💼", "description": "上下级关系(下属视角)"},
|
|
{"name": "同事", "category": "professional", "reverse_name": "同事", "intimacy_range": "medium", "icon": "🤵", "description": "同事关系"},
|
|
{"name": "合作伙伴", "category": "professional", "reverse_name": "合作伙伴", "intimacy_range": "medium", "icon": "🤜🤛", "description": "合作关系"},
|
|
|
|
# 敌对关系
|
|
{"name": "敌人", "category": "hostile", "reverse_name": "敌人", "intimacy_range": "low", "icon": "⚔️", "description": "敌对关系"},
|
|
{"name": "仇人", "category": "hostile", "reverse_name": "仇人", "intimacy_range": "low", "icon": "💢", "description": "仇恨关系"},
|
|
{"name": "竞争对手", "category": "hostile", "reverse_name": "竞争对手", "intimacy_range": "low", "icon": "🎯", "description": "竞争关系"},
|
|
{"name": "宿敌", "category": "hostile", "reverse_name": "宿敌", "intimacy_range": "low", "icon": "⚡", "description": "宿命之敌"},
|
|
]
|
|
|
|
op.bulk_insert(relationship_types_table, relationship_types_data)
|
|
print(f"✅ SQLite: 已插入 {len(relationship_types_data)} 条关系类型数据")
|
|
|
|
|
|
# ==================== 2. 插入全局写作风格预设 ====================
|
|
writing_styles_table = table(
|
|
'writing_styles',
|
|
column('user_id', String),
|
|
column('name', String),
|
|
column('style_type', String),
|
|
column('preset_id', String),
|
|
column('description', Text),
|
|
column('prompt_content', Text),
|
|
column('order_index', Integer),
|
|
)
|
|
|
|
writing_styles_data = [
|
|
{
|
|
"user_id": None, # NULL 表示全局预设
|
|
"name": "自然流畅",
|
|
"style_type": "preset",
|
|
"preset_id": "natural",
|
|
"description": "自然流畅的叙事风格,适合现代都市、现实题材",
|
|
"prompt_content": """写作风格要求:
|
|
1. 语言简洁明快,贴近现代口语
|
|
2. 多用短句,节奏流畅
|
|
3. 注重情感细节的自然流露
|
|
4. 避免过度修饰和复杂句式""",
|
|
"order_index": 1
|
|
},
|
|
{
|
|
"user_id": None,
|
|
"name": "古典优雅",
|
|
"style_type": "preset",
|
|
"preset_id": "classical",
|
|
"description": "古典文雅的写作风格,适合古装、仙侠题材",
|
|
"prompt_content": """写作风格要求:
|
|
1. 使用文言、半文言或典雅的白话
|
|
2. 适当运用古典诗词意象
|
|
3. 注重意境营造和韵味
|
|
4. 对话和描写保持古典美感""",
|
|
"order_index": 2
|
|
},
|
|
{
|
|
"user_id": None,
|
|
"name": "现代简约",
|
|
"style_type": "preset",
|
|
"preset_id": "modern",
|
|
"description": "现代简约风格,适合轻小说、网文快节奏叙事",
|
|
"prompt_content": """写作风格要求:
|
|
1. 语言直白简练,信息密度高
|
|
2. 多用对话推进情节
|
|
3. 避免冗长描写,突出关键动作
|
|
4. 节奏明快,适合快速阅读""",
|
|
"order_index": 3
|
|
},
|
|
{
|
|
"user_id": None,
|
|
"name": "文艺细腻",
|
|
"style_type": "preset",
|
|
"preset_id": "literary",
|
|
"description": "文艺细腻风格,注重心理描写和氛围营造",
|
|
"prompt_content": """写作风格要求:
|
|
1. 注重心理活动和情感细节
|
|
2. 善用环境描写烘托氛围
|
|
3. 语言优美,富有文学性
|
|
4. 适当使用比喻、象征等修辞手法""",
|
|
"order_index": 4
|
|
},
|
|
{
|
|
"user_id": None,
|
|
"name": "紧张悬疑",
|
|
"style_type": "preset",
|
|
"preset_id": "suspense",
|
|
"description": "紧张悬疑风格,适合推理、惊悚题材",
|
|
"prompt_content": """写作风格要求:
|
|
1. 营造紧张压迫的氛围
|
|
2. 多用短句加快节奏
|
|
3. 善于设置悬念和伏笔
|
|
4. 注重细节描写,为推理埋下线索""",
|
|
"order_index": 5
|
|
},
|
|
{
|
|
"user_id": None,
|
|
"name": "幽默诙谐",
|
|
"style_type": "preset",
|
|
"preset_id": "humorous",
|
|
"description": "幽默诙谐风格,适合轻松搞笑题材",
|
|
"prompt_content": """写作风格要求:
|
|
1. 语言活泼风趣,善用俏皮话
|
|
2. 注重对话的喜剧效果
|
|
3. 适当夸张和反转制造笑点
|
|
4. 保持轻松愉快的基调""",
|
|
"order_index": 6
|
|
},
|
|
]
|
|
|
|
op.bulk_insert(writing_styles_table, writing_styles_data)
|
|
print(f"✅ SQLite: 已插入 {len(writing_styles_data)} 条全局写作风格预设")
|
|
|
|
|
|
def downgrade() -> None:
|
|
"""删除预置数据"""
|
|
|
|
# 删除写作风格预设(只删除全局预设)
|
|
op.execute("DELETE FROM writing_styles WHERE user_id IS NULL")
|
|
print("✅ SQLite: 已删除全局写作风格预设")
|
|
|
|
# 删除关系类型
|
|
op.execute("DELETE FROM relationship_types")
|
|
print("✅ SQLite: 已删除关系类型数据") |