#!/usr/bin/env python3
"""生成 U24-L2 承段剧本 Excel"""

import openpyxl
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side

wb = openpyxl.Workbook()
ws = wb.active
ws.title = "U24-L2_承"

# Column headers
headers = ["类型", "剧情描述", "角色名", "编剧台词"]
header_font = Font(bold=True, size=11)
header_fill = PatternFill(start_color="D9E1F2", end_color="D9E1F2", fill_type="solid")
thin_border = Border(
    left=Side(style="thin"),
    right=Side(style="thin"),
    top=Side(style="thin"),
    bottom=Side(style="thin"),
)

for col, h in enumerate(headers, 1):
    cell = ws.cell(row=1, column=col, value=h)
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = Alignment(horizontal="center", vertical="center")
    cell.border = thin_border

# Column widths
ws.column_dimensions["A"].width = 12
ws.column_dimensions["B"].width = 55
ws.column_dimensions["C"].width = 16
ws.column_dimensions["D"].width = 50

# --- 剧本数据 ---
# Format: [类型, 剧情描述, 角色名, 编剧台词]
# ⚠️ 对话互动：仅第一行标"中互动"，User回应行类型留空

rows = [
    # #0: Tom的脏乱厨房
    ["TL", "【全屏插入图】Tom家厨房——空罐子、旧报纸、扳手散落台面，灶台积了厚厚一层灰，墙角挂着蜘蛛网。", "", ""],
    ["", "Mama Green走在最前面，推开门后愣住。", "Mama Green", "This is Tom's **kitchen**?"],
    ["", "【emoji】Mama Green流汗", "Mama Green", "It's **really** messy!"],
    ["", "Sue跟进来，拎起台面上的一只旧袜子，嫌弃地甩到一边。", "", ""],
    ["", "", "Sue", "Not in the **kitchen**!"],
    ["", "【emoji】Sue生气", "Sue", "Let's clean it!"],
    ["中互动", "【插入图】脏乱厨房台面，散布各种杂物。请User点击所有不属于 **kitchen** 的东西，把它们清理出去。\n（可点击项：扳手、旧报纸、空罐子、旧袜子、工具箱）", "", ""],

    # #0b: 过期食材
    ["TL", "User清理完杂物，台面终于空了出来。Mama Green拉开储物柜。", "", ""],
    ["", "柜子里滚出发霉面包、干瘪胡萝卜，还有几个长绿毛的土豆。", "", ""],
    ["", "【emoji】Mama Green冒汗", "Mama Green", "So **many** food..."],
    ["", "", "Mama Green", "But they can't eat any more."],
    ["", "Mama Green在柜子深处翻找，终于摸出番茄、鸡蛋、面粉和一块牛肉。", "", ""],
    ["", "", "Mama Green", "OK. We can work with this."],
    ["", "Jay和Lin晃进厨房。Jay东张西望，鼻子里哼了一声。", "", ""],

    # #1: 厨房焕新 + There are many... 首入
    ["TL", "【场景】Tom的厨房（清理后，整洁但老旧）\n【角色】User、Mama Green、Sue、Jay、Lin", "", ""],
    ["", "Mama Green把可用食材整齐摆在台面上，满意地拍了拍手。", "", ""],
    ["", "", "Mama Green", "Welcome to the **kitchen**!"],
    ["", "", "Mama Green", "**There are many** things here."],
    ["", "Sue兴奋地凑近，逐一指认台面上的食材。", "", ""],
    ["", "【emoji】Sue星星", "Sue", "Eggs, tomatoes, and carrots!"],

    # #2: 食材探索
    ["中互动", "【插入图】台面上摆着鸡蛋、番茄、胡萝卜三种食材，每样都有一堆。请User依次点击每种食材并说出发现。", "", ""],
    ["中互动", "点击鸡蛋", "User", "**There are many** eggs!"],
    ["中互动", "点击番茄", "User", "**There are many** tomatoes!"],
    ["中互动", "点击胡萝卜", "User", "**There are many** carrots!"],

    # #3: 番茄筛选（kid #1）
    ["TL", "Sue从番茄堆里拎出两个——一个拳头大，一个樱桃小。", "", ""],
    ["", "【emoji】Sue星星", "Sue", "Look!"],
    ["", "", "Sue", "This tomato is big."],
    ["", "Sue把小的那个捧在手心里。", "", ""],
    ["", "", "Sue", "And this one is just a **kid**!"],
    ["", "", "Sue", "The **kid** tomatoes are sweeter."],
    ["", "Sue把两个番茄举到User面前，眨眨眼。", "", ""],
    ["中互动", "", "Sue", "Which one?"],
    ["", "", "User", "The **kid** one!"],

    # #4: 厨房安全警告
    ["TL", "Sue满意地点头，把小番茄放进盆里。Mama Green走到灶台前。", "", ""],
    ["", "【镜头】灶台火焰特写——火苗噌地蹿起来。", "", ""],
    ["", "Mama Green从刀架上抽出一把厨刀，利落地切起番茄。", "", ""],
    ["", "【镜头】刀在砧板上快速切动的特写。", "", ""],
    ["", "", "Mama Green", "Sharp **knives**. Hot fire."],
    ["", "Mama Green抬头看着User和Sue，语气温和但认真。", "", ""],
    ["", "", "Mama Green", "We are careful in the **kitchen**."],
    ["", "Jay靠在门框上，双手抱胸。", "", ""],
    ["", "【emoji】Jay烦躁", "", ""],

    # #5: Jay鸡蛋杂技出糗（really 输出）
    ["TL", "Jay拿起一颗鸡蛋在手里掂了掂，对Lin挑眉。", "", ""],
    ["", "", "Jay", "Watch and learn."],
    ["", "Jay把鸡蛋往空中一抛——想转个圈再接住。", "", ""],
    ["", "鸡蛋从他指尖滑过——啪！正中Lin的额头。", "", ""],
    ["", "蛋液顺着Lin的脸缓缓流下。", "", ""],
    ["", "【emoji】Lin惊讶", "Lin", "...Jay."],
    ["", "【emoji】Jay流汗", "Jay", "It was an egg accident!"],
    ["", "", "Lin", "An egg... accident?"],
    ["", "两人开始幼稚地互相推搡，Lin抓起面粉袋要往Jay头上倒。", "", ""],
    ["", "【emoji】Lin生气", "", ""],
    ["", "Sue和User在一旁看热闹。", "", ""],
    ["", "【emoji】Sue大笑", "", ""],
    ["中互动", "", "Sue", "They are **really** funny!"],
    ["", "", "User", "They are **really** funny!"],

    # #6: Green吐槽 + kid #2
    ["TL", "Mama Green抬起头看着还在拌嘴的两人，叹了口气，眼里却带着笑意。", "", ""],
    ["", "", "Mama Green", "You two are **really** like **kids**."],
    ["", "【emoji】Jay生气", "Jay", "I'm not a **kid**!"],
    ["", "Mama Green笑着拍拍Jay的头，端起面粉盆往门外走去。", "", ""],
    ["", "", "Mama Green", "Mm-hmm. Stay here, **kids**."],
    ["", "Mama Green出去揉面。Jay气鼓鼓地站在原地。", "", ""],
    ["", "Sue望着Jay的背影，嘴角上扬，转头对User眨眨眼。", "", ""],
    ["中互动", "", "Sue", "So...?"],
    ["", "", "User", "Jay is the **kid**!"],

    # #7: Lin赌气煎牛排（fire呼应 + 转段伏笔）
    ["TL", "Lin把围裙往腰上一系，赌气走向灶台。", "", ""],
    ["", "【emoji】Lin生气", "Lin", "Steak is hard work."],
    ["", "", "Lin", "A **kid** can't do it."],
    ["", "Lin往锅里倒了油，火苗舔着锅底。", "", ""],
    ["", "", "Lin", "Fire and oil!"],
    ["", "", "Lin", "**Kid**, stay away!"],
    ["", "Lin把牛排往锅里一扔——滋啦！油花四溅。", "", ""],
    ["", "【emoji】Lin发抖（大）", "", ""],
    ["", "Lin吓得往后一跳，Jay在旁边哈哈大笑。", "", ""],
    ["", "【emoji】Jay大笑", "Jay", "Ha! The fire scared you!"],
    ["", "Jay笑得太得意，手肘碰翻了盐罐。", "", ""],
    ["", "【emoji】Jay流汗", "Jay", "Oops."],

    # #8: 承段收尾
    ["TL", "【音效】狂风拍打窗户，沙尘暴声陡然变大。", "", ""],
    ["", "Jay和Lin同时转头看向窗外。", "", ""],
    ["", "锅里的油越烧越热，滋滋作响，冒起一缕细烟。", "", ""],
    ["", "【镜头】油锅特写——油面开始冒泡、微微颤动。", "", ""],
]

# 写入数据
wrap = Alignment(wrap_text=True, vertical="top")
for i, row_data in enumerate(rows):
    for j, val in enumerate(row_data):
        cell = ws.cell(row=i + 2, column=j + 1, value=val)
        cell.alignment = wrap
        cell.border = thin_border
        if j == 0 and val:  # 类型列居中
            cell.alignment = Alignment(horizontal="center", vertical="top")
            if val == "中互动":
                cell.font = Font(bold=True, color="0070C0")
            elif val == "TL":
                cell.font = Font(bold=True, color="404040")

# 统计行
stat_row = len(rows) + 3
ws.cell(row=stat_row, column=1, value="统计").font = Font(bold=True, size=12)
ws.cell(row=stat_row + 1, column=1, value="总行数").font = Font(bold=True)
ws.cell(row=stat_row + 1, column=2, value=len(rows))
ws.cell(row=stat_row + 2, column=1, value="TL 行数").font = Font(bold=True)
ws.cell(row=stat_row + 2, column=2, value=sum(1 for r in rows if r[0] == "TL"))
ws.cell(row=stat_row + 3, column=1, value="中互动 个数").font = Font(bold=True)
ws.cell(row=stat_row + 3, column=2, value=sum(1 for r in rows if r[0] == "中互动"))

ws.cell(row=stat_row + 5, column=1, value="知识点输入/输出").font = Font(bold=True, size=12)
kps = [
    ["kitchen", "输入×7 (Tom's kitchen? / Not in the kitchen! / 图片互动 / Welcome to the kitchen! / We are careful in the kitchen)", "图片互动输出×1"],
    ["kid(s)", "输入×7 (just a kid / kid tomatoes / like kids / not a kid / Stay here kids / A kid can't do it / Kid stay away)", "中互动输出×2 (The kid one! / Jay is the kid!)"],
    ["many", "输入×2 (So many food / There are many things)", "转段主力输出"],
    ["really", "输入×3 (really messy / really like kids)", "中互动输出×1 (They are really funny!)"],
    ["There are many...", "输入×1 (Mama Green)", "中互动输出×3 (eggs / tomatoes / carrots)"],
    ["It's really...", "回归×1 (It's really messy)", "起段已砸实，承段不强制"],
]
for i, kp in enumerate(kps):
    for j, val in enumerate(kp):
        ws.cell(row=stat_row + 6 + i, column=j + 1, value=val)

out_path = "/root/.openclaw/workspace-xiaobian/output/U24-L2_承_剧本.xlsx"
wb.save(out_path)
print(f"✅ Saved: {out_path}")
print(f"   Total rows: {len(rows)}")
print(f"   TL rows: {sum(1 for r in rows if r[0] == 'TL')}")
print(f"   中互动: {sum(1 for r in rows if r[0] == '中互动')}")
