"""
故事模块工具函数
"""

OSS_BASE = "https://qy-rtc.oss-cn-beijing.aliyuncs.com"

DEFAULT_STORIES = [
    {
        "title": "失控的魔法扫帚",
        "content": (
            "魔法学院的期末考试正在进行中，小女巫艾米紧张地握着她的新扫帚「光轮2026」。"
            "考试题目是：平稳飞越学校的钟楼并且不撞到任何一只鸽子。\n\n"
            "「起飞！」艾米念出咒语。可是，扫帚似乎有了自己的想法，它没有飞向钟楼，"
            "而是像火箭一样冲向了食堂的窗户！\n\n"
            "「糟糕！那是校长的草莓蛋糕！」艾米惊呼。就在千钧一发之际，扫帚突然一个急转弯，"
            "稳稳地停在了蛋糕前——原来它只是饿了。\n\n"
            "虽然考试不及格，但艾米发明了全校最快的「外卖配送术」。"
            "从此以后，魔法学院的学生们再也不用担心吃不到热乎乎的披萨了。"
        ),
        "cover_url": f"{OSS_BASE}/stories/defaults/失控的魔法扫帚_cover.png",
        "has_video": True,
        "video_url": f"{OSS_BASE}/stories/defaults/失控的魔法扫帚.mp4",
        "generation_mode": "ai",
        "prompt": "角色=[小女巫]，场景=[魔法学院]，道具=[魔法扫帚]",
    },
]


def ensure_default_stories(user):
    """确保用户书架有默认故事，没有则创建。
    逻辑与 music.utils.ensure_default_tracks 保持一致：
    - 若用户已有默认故事则跳过
    - 先确保默认书架存在，再批量写入
    """
    from .models import Story, StoryShelf

    if Story.objects.filter(user=user, is_default=True).exists():
        return

    # 确保默认书架存在
    shelf, _ = StoryShelf.objects.get_or_create(
        user=user,
        defaults={"name": "我的书架"},
    )

    stories = []
    for item in DEFAULT_STORIES:
        stories.append(Story(
            user=user,
            shelf=shelf,
            title=item["title"],
            content=item["content"],
            cover_url=item["cover_url"],
            has_video=item["has_video"],
            video_url=item["video_url"],
            generation_mode=item["generation_mode"],
            prompt=item["prompt"],
            is_default=True,
        ))
    Story.objects.bulk_create(stories)
