#!/usr/bin/env python3
from pathlib import Path
from shutil import copy2

from openpyxl import load_workbook
from openpyxl.comments import Comment
from openpyxl.styles import Alignment


SOURCE = Path(
    "/Users/jack/Library/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/"
    "A74DF84611CC2ED79C4C206E40B5D80E/Caches/Files/2026-08/"
    "e1d91f73709f8ccdb7d6e72775488be8/"
    "数科事业部2026年8月份项目策略及预算汇报20260724朱煜.xlsx"
)
OUTPUT = SOURCE.with_name("数科事业部2026年8月份项目策略及预算汇报-月报汇报版.xlsx")
DURABLE_OUTPUT = Path(
    "/Users/jack/同步空间/cpt/05_经营管理与会议/005_日常管理/"
    "周例会（事业部层面）/2026年/数科事业部2026年8月份项目策略及预算汇报-月报汇报版.xlsx"
)
SOURCE_NOTE = "来源：数字技术中心&交付实施部8月月报-正式产品线版.docx，2026-08-24"


def main():
    wb = load_workbook(SOURCE)
    ws = wb["数科项目"]

    ws["A45"] = "六、数字技术中心&交付实施部补充"
    ws["A46"] = "8月完成情况"
    ws["C46"] = (
        "1、产品：5+2产品体系收口，明确基础交易结算、餐厅运营协同、410/450/460称重及AI菜品识别产品线；"
        "金斯瑞完成前厅软硬件全场景验证。\n"
        "2、项目：机场、赛迪累计有效订单104.19万笔、活跃交易用户1.17万人；学校侧验证滨州、人大附中、保康三中。\n"
        "3、标准：北京三区公开清单涉及191所/校区，26类硬件中25类共同出现，15项重点设备中13项具备应标基础。"
    )

    ws["A47"] = "问题及偏差"
    ws["C47"] = (
        "1、交付产能未稳定：5名交付人员每人2个项目、月度10个项目的目标，尚缺标准产品包支撑。\n"
        "2、产品与开发未一一对应：产品定义、软件版本、硬件BOM、部署、测试、手册和验收资料未统一。\n"
        "3、硬件与安全节点需前置：设备检测、厂家授权及等保扫描、整改、复测时间必须提前锁定。"
    )

    ws["A48"] = "9月重点计划"
    ws["C48"] = (
        "1、产品：政企版、学校版营养功能上线；形成政企版、学校版两套对外PPT。\n"
        "2、项目：运行/售后4个（机场、赛迪、国信、金斯瑞）+交付6个（江西206、四方达、国康、城市副中心、滨州、重庆环卫），共10个；"
        "15天完成部署测试，再完成1周运行观察，合同定制单独统计。\n"
        "3、规范：10个项目统一SKU/版本、硬件BOM、部署接口、测试验收和售后移交；纳入等保范围的项目完成安全基线、扫描整改和复测计划。"
    )

    for cell in (ws["C46"], ws["C47"], ws["C48"]):
        cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)
        cell.comment = Comment(SOURCE_NOTE, "Codex")

    ws.row_dimensions[46].height = 75
    ws.row_dimensions[47].height = 72
    ws.row_dimensions[48].height = 96
    for key in ("M", "XFA", "XFB"):
        if key in ws.column_dimensions:
            del ws.column_dimensions[key]
    for row in range(3, 11):
        ws._cells.pop((row, 16381), None)
    wb.calculation.fullCalcOnLoad = True
    wb.calculation.forceFullCalc = True
    wb.calculation.calcMode = "auto"
    wb.save(OUTPUT)
    DURABLE_OUTPUT.parent.mkdir(parents=True, exist_ok=True)
    copy2(OUTPUT, DURABLE_OUTPUT)
    print(DURABLE_OUTPUT)


if __name__ == "__main__":
    main()
