#!/usr/bin/env python3
"""
课后时间安排文档模板 - 打印友好版
=============================

特点：
1. 无emoji，使用文字标签
2. 打印效果清晰
3. 方框 ☐ 可打勾
"""

from docx import Document
from docx.shared import Pt, Cm
from docx.enum.text import WD_ALIGN_PARAGRAPH
from datetime import datetime


# Emoji -> 文字标签映射
EMOJI_MAP = {
    '🏠': '[放学]',
    '☕': '[休息]',
    '📖': '[语文]',
    '🔢': '[数学]',
    '📝': '[英语]',
    '📐': '[数学]',
    '🍚': '[晚餐]',
    '🚿': '[洗漱]',
    '😴': '[睡觉]',
    '📚': '[自然拼读]',
    '✏️': '[练字]',
    '🔤': '[英语]',
    '🧮': '[数学]',
    '📱': '[APP]',
    '🎒': '[准备]',
    '📅': '',
    '⏰': '',
    '✅': '',
    '👧': '',
    '👦': '',
    '🌙': '',
}


def remove_emoji(text):
    """将emoji替换为文字标签"""
    result = text
    for emoji, label in EMOJI_MAP.items():
        result = result.replace(emoji, label)
    # 清理多余空格
    while '  ' in result:
        result = result.replace('  ', ' ')
    return result.strip()


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


def create_schedule_docx_print(pinxuan_data, xuanbo_data, output_path):
    """
    生成课后时间安排 Word 文档 - 打印友好版
    
    参数：
        pinxuan_data: 品瑄的数据 (dict)
        xuanbo_data: 宣博的数据 (dict)
        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


if __name__ == '__main__':
    # 测试
    print("打印友好版模板已加载")
