#!/usr/bin/env python3
"""
课后时间安排文档模板
===================

使用规则（已固化到 MEMORY.md）：
1. 使用方框 ☐ 替代有序序号
2. 每条任务添加合适的 emoji
3. 两个孩子每人一页，使用分页符分开

Emoji 参考：
🏠 放学回家 | ☕ 休息 | 📖 语文 | 🔢 数学 | 📝 英语
🍚 晚餐 | 🚿 洗漱 | 😴 睡觉 | 📚 自然拼读 | ✏️ 练字
📅 日期 | ⏰ 时间安排 | ✅ 今日完成 | 👧 女生 | 👦 男生
"""

from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from datetime import datetime


def add_checkbox_paragraph(doc, text):
    """添加带方框的段落，方便打勾"""
    p = doc.add_paragraph()
    p.add_run('☐ ' + text)
    return p


def create_schedule_docx(pinxuan_data, xuanbo_data, output_path):
    """
    生成课后时间安排 Word 文档
    
    参数：
        pinxuan_data: 品瑄的数据 (dict)
            - date: 日期字符串
            - sleep_target: 睡眠时间
            - schedule: 时间安排列表
            - tasks_today: 今日完成任务列表
            - tasks_weekend: 周末补做任务列表（可选）
        
        xuanbo_data: 宣博的数据 (dict)
            - date: 日期字符串
            - sleep_target: 睡眠时间
            - schedule: 时间安排列表
            - tasks_today: 今日完成任务列表
        
        output_path: 输出文件路径
    
    返回：
        输出文件路径
    """
    doc = Document()
    
    # 设置页边距
    for section in doc.sections:
        section.top_margin = Cm(2)
        section.bottom_margin = Cm(2)
        section.left_margin = Cm(2.5)
        section.right_margin = Cm(2.5)
    
    # ========== 品瑄的页面 ==========
    title = doc.add_heading('👧 品瑄的课后时间安排', 0)
    title.alignment = WD_ALIGN_PARAGRAPH.CENTER
    
    p = doc.add_paragraph()
    p.add_run('📅 日期：').bold = True
    p.add_run(f'{pinxuan_data["date"]}\n')
    p.add_run('🌙 睡眠目标：').bold = True
    p.add_run(pinxuan_data['sleep_target'])
    
    doc.add_paragraph()
    
    # 时间安排
    p = doc.add_paragraph()
    p.add_run('⏰ 时间安排').bold = True
    
    for task in pinxuan_data['schedule']:
        add_checkbox_paragraph(doc, task)
    
    doc.add_paragraph()
    
    # 今日完成
    p = doc.add_paragraph()
    p.add_run('✅ 今日完成').bold = True
    
    for task in pinxuan_data['tasks_today']:
        add_checkbox_paragraph(doc, task)
    
    # 周末补做（如果有）
    if pinxuan_data.get('tasks_weekend'):
        doc.add_paragraph()
        p = doc.add_paragraph()
        p.add_run('📅 周末补做').bold = True
        
        for task in pinxuan_data['tasks_weekend']:
            add_checkbox_paragraph(doc, task)
    
    # ========== 分页符 ==========
    doc.add_page_break()
    
    # ========== 宣博的页面 ==========
    title = doc.add_heading('👦 宣博的课后时间安排', 0)
    title.alignment = WD_ALIGN_PARAGRAPH.CENTER
    
    p = doc.add_paragraph()
    p.add_run('📅 日期：').bold = True
    p.add_run(f'{xuanbo_data["date"]}\n')
    p.add_run('🌙 睡眠目标：').bold = True
    p.add_run(xuanbo_data['sleep_target'])
    
    doc.add_paragraph()
    
    # 时间安排
    p = doc.add_paragraph()
    p.add_run('⏰ 时间安排').bold = True
    
    for task in xuanbo_data['schedule']:
        add_checkbox_paragraph(doc, task)
    
    doc.add_paragraph()
    
    # 今日完成
    p = doc.add_paragraph()
    p.add_run('✅ 今日完成').bold = True
    
    for task in xuanbo_data['tasks_today']:
        add_checkbox_paragraph(doc, task)
    
    # 保存
    doc.save(output_path)
    return output_path


# ========== 示例数据（供参考） ==========

EXAMPLE_PINXUAN = {
    'date': '2026年3月12日（周四）',
    'sleep_target': '22:00',
    'schedule': [
        '17:30 🏠 放学回家',
        '17:30-18:00 ☕ 休息（30分钟）',
        '18:00-18:20 📖 语文五三天天练（20分钟）',
        '18:20-18:40 🍚 晚餐（20分钟）',
        '18:40-20:40 🔢 数学小班（线上，120分钟）',
        '20:40-21:00 📝 英语五三天天练（20分钟）',
        '21:00-21:20 📐 数学五三天天练（20分钟）',
        '21:20-21:40 📚 自然拼读课后题（20分钟）',
        '21:40-21:50 🚿 洗漱',
        '22:00 😴 睡觉',
    ],
    'tasks_today': [
        '语文五三天天练（20分钟）',
        '数学五三天天练（20分钟）',
        '英语五三天天练（20分钟）',
        '自然拼读课后题（20分钟）',
    ],
    'tasks_weekend': [
        '语文人教点读',
        '语文练字帖',
        '英语人教点读',
        '数学每日一练',
    ],
}

EXAMPLE_XUANBO = {
    'date': '2026年3月12日（周四）',
    'sleep_target': '21:30',
    'schedule': [
        '17:30 🏠 放学回家',
        '17:30-18:00 ☕ 休息（30分钟）',
        '18:00-18:10 📖 语文人教点读（10分钟）',
        '18:10-18:25 ✏️ 语文练字帖（15分钟）',
        '18:25-18:40 🔤 英语人教点读（15分钟）',
        '18:40-19:00 🧮 学而思每日一签（20分钟）',
        '19:00-19:20 🍚 晚餐（20分钟）',
        '19:20-19:40 ☕ 休息（20分钟）',
        '19:40-20:00 📚 自然拼读课后题（20分钟）',
        '20:00-20:30 🎒 准备上课',
        '20:30-21:00 🌍 KB2英语（线上，30分钟）',
        '21:00-21:20 🚿 洗漱',
        '21:30 😴 睡觉',
    ],
    'tasks_today': [
        '语文人教点读（10分钟）',
        '语文练字帖（15分钟）',
        '英语人教点读（15分钟）',
        '学而思每日一签（20分钟）',
        '自然拼读课后题（20分钟）',
    ],
}


if __name__ == '__main__':
    # 测试生成
    output = '/root/.openclaw/workspace/space/共享资源/templates/test_schedule.docx'
    create_schedule_docx(EXAMPLE_PINXUAN, EXAMPLE_XUANBO, output)
    print(f'测试文档已保存到: {output}')
