#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn

OUT = "/home/mi/.openclaw/workspace/2026年泰语1培训数据统计图.docx"
IMG = "/home/mi/.openclaw/workspace"

ACCENT = RGBColor(0x0E, 0x74, 0x90)

doc = Document()

# 全局默认字体
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(10.5)
style._element.get_or_add_rPr().get_or_add_rFonts().set(qn('w:eastAsia'), '微软雅黑')

def set_ea(run, ea='微软雅黑'):
    run.font.name = 'Calibri'
    run._element.get_or_add_rPr().get_or_add_rFonts().set(qn('w:eastAsia'), ea)

def title(text):
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    r = p.add_run(text)
    r.font.size = Pt(20)
    r.font.bold = True
    r.font.color.rgb = ACCENT
    set_ea(r)
    return p

def heading(text, size=14):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(14)
    p.paragraph_format.space_after = Pt(6)
    r = p.add_run(text)
    r.font.size = Pt(size)
    r.font.bold = True
    r.font.color.rgb = ACCENT
    set_ea(r)
    return p

def caption(text):
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p.paragraph_format.space_after = Pt(4)
    r = p.add_run(text)
    r.font.size = Pt(9)
    r.font.color.rgb = RGBColor(0x66, 0x66, 0x66)
    set_ea(r)
    return p

def body(text, size=10.5, bold=False):
    p = doc.add_paragraph()
    r = p.add_run(text)
    r.font.size = Pt(size)
    r.font.bold = bold
    set_ea(r)
    return p

def add_chart(img, cap):
    doc.add_picture(f"{IMG}/{img}", width=Inches(6.3))
    doc.paragraphs[-1].alignment = WD_ALIGN_PARAGRAPH.CENTER
    caption(cap)

# ===== 封面标题 =====
title("2026 年泰语 1 培训数据统计分析")
sub = doc.add_paragraph()
sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
r = sub.add_run("培训周期：2026-04-14 至 2026-09-07 ｜ 总学时 50 小时 ｜ 共 40 课时")
r.font.size = Pt(10)
r.font.color.rgb = RGBColor(0x66, 0x66, 0x66)
set_ea(r)

# ===== 一、参训考勤分析 =====
heading("一、各部门出勤率对比（2025 vs 2026）")
add_chart("01_出勤率对比.png", "图 1：五个部门 2026 年实际出勤率较 2025 年全面上升")
body("各部门 2026 年实际出勤率均高于 2025 年。其中采购与合同管理部、生产管理部提升幅度最大，"
     "人力资源部出勤率本已处于高位（95%→98%），其余部门出勤率均有明显改善。")

heading("二、出勤率提升幅度排行")
add_chart("02_出勤率提升幅度.png", "图 2：按提升百分点降序排列")
body("采购与合同管理部（+68%）、生产管理部（+60%）提升最为显著；财务部（+35%）、党群与综合部（+30%）"
     "次之；人力资源部（+3%）因基数高、提升空间有限。")

heading("三、2026 年应出勤 vs 实际出勤")
add_chart("03_应出勤vs实际出勤.png", "图 3：各部门应出勤与实际出勤次数对比")
body("2026 年各部门实际出勤与应出勤差距普遍较小，出勤落实情况良好。")

# ===== 二、满意度分析 =====
heading("四、学员满意度调查")
add_chart("04_满意度分析.png", "图 4：回收问卷 19 份，整体满意度 100%")
body("本期培训整体满意度 100%，授课教师教学态度、授课方式及课程安排满意度均为 100%；"
     "95% 参训员工认为培训收获显著，5% 认为没有收获。")

# ===== 三、培训整体数据 =====
heading("五、培训整体关键数据")
items = [
    "累计实际参训 669 次，课堂平均在线学习人数 17 人",
    "培训期间布置课后作业 22 次，组织课堂小测 3 次",
    "18 名学员提交课后作业，其中 13 名学员课后作业完成率达 90% 及以上",
    "回收学员满意度调查问卷 19 份",
]
for it in items:
    p = doc.add_paragraph(style='List Bullet')
    r = p.add_run(it)
    r.font.size = Pt(10.5)
    set_ea(r)

# ===== 四、原始数据表 =====
heading("附：各部门参训考勤原始数据表")
table_data = [
    ["部门", "2025应出勤(次)", "2026应出勤(次)", "2025实际出勤(次)", "2026实际出勤(次)", "2025出勤率", "2026出勤率", "提升率"],
    ["人力资源部", "78", "120", "74", "118", "95%", "98%", "3%"],
    ["党群与综合部", "156", "215", "73", "165", "47%", "77%", "30%"],
    ["财务部", "156", "200", "71", "162", "46%", "81%", "35%"],
    ["生产管理部(安健环管理部)", "156", "100", "43", "88", "28%", "88%", "60%"],
    ["采购与合同管理部", "104", "160", "18", "136", "17%", "85%", "68%"],
]
tbl = doc.add_table(rows=len(table_data), cols=len(table_data[0]))
tbl.style = 'Light Grid Accent 1'
tbl.alignment = WD_TABLE_ALIGNMENT.CENTER
for i, row in enumerate(table_data):
    for j, val in enumerate(row):
        cell = tbl.cell(i, j)
        cell.text = ""
        p = cell.paragraphs[0]
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        r = p.add_run(val)
        r.font.size = Pt(9.5)
        if i == 0:
            r.font.bold = True
        set_ea(r)

doc.save(OUT)
print("saved:", OUT)
