from pathlib import Path

from docx import Document


SRC = Path("/Users/hedy/Desktop/软著-智慧食堂称重结算系统V1.0/智慧食堂称重结算系统.docx")
OUT = Path("/Users/hedy/Desktop/软著-智慧食堂称重结算系统V1.0/智慧食堂称重结算系统_软件边界修订版.docx")


REPLACEMENTS = {
    "智慧食堂称重结算系统V1.0用于食堂档口和餐饮现场的称重售卖结算。系统围绕消费终端的高频操作，将商品选择、称重读数、单价计算、金额核对、支付确认、订单记录和基础参数配置集中在同一软件中完成，适用于按重量销售菜品、汤品、饮品及其他散装食品的业务场景。":
    "智慧食堂称重结算系统V1.0是一套运行于称重结算终端环境的软件，用于对接现场称重设备、接收称重读数，并完成商品选择、单价计算、金额核对、支付确认、订单记录和基础参数配置。系统适用于按重量销售菜品、汤品、饮品及其他散装食品的业务场景。本说明书描述的软件功能归属于本次申请范围，不涉及称重台、消费终端等硬件设备的生产、销售或权属。",

    "软件主要面向团餐食堂、企事业单位食堂、学校食堂、园区餐厅和档口称重售卖场景，帮助现场人员减少人工计价和重复录入，提高结算效率，并为订单查询、营业统计和设备维护提供可追溯的数据基础。":
    "软件主要面向团餐食堂、企事业单位食堂、学校食堂、园区餐厅和档口称重售卖场景，帮助现场人员基于既有称重设备完成称重计价、订单结算和记录查询，减少人工计价和重复录入，提高结算效率，并为订单查询、营业统计和软件参数维护提供可追溯的数据基础。",

    "首页为消费终端的主入口，提供称重结算、订单管理和系统设置三个核心模块。操作人员可根据现场业务直接进入称重售卖、订单查询或参数维护页面，减少操作路径。页面顶部展示系统名称、网络状态、日期时间等信息，便于确认终端处于正常运行状态。":
    "首页为称重结算软件的主入口，提供称重结算、订单管理和系统设置三个核心模块。操作人员可根据现场业务直接进入称重售卖、订单查询或参数维护页面，减少操作路径。页面顶部展示系统名称、网络状态、日期时间等信息，用于确认软件当前运行环境和业务状态。",

    "称重结算页面用于完成商品或菜品的现场称重计价。操作人员选择商品后，将商品放置在称重台上，系统读取稳定重量，并按照单价自动计算金额。页面显示当前重量、商品明细、单价、售价和合计金额，支持汤底、饮品等选配项参与金额叠加，核对无误后可进入支付或结算操作。":
    "称重结算页面用于完成商品或菜品的现场称重计价。操作人员选择商品后，将商品放置在现场称重区域，软件接收称重设备返回的稳定重量，并按照商品单价自动计算金额。页面显示当前重量、商品明细、单价、售价和合计金额，支持汤底、饮品等选配项参与金额叠加，核对无误后可进入支付或结算操作。",

    "手动金额输入功能用于处理固定金额、临时调整、设备异常或需要人工确认金额的场景。操作人员点击金额输入区域后，系统弹出数字键盘，可录入实际应收金额，并在确认后进入后续支付流程。该功能保证特殊业务也能形成结算记录，避免现场只收款不记账的情况。":
    "手动金额输入功能用于处理固定金额、临时调整、称重数据异常或需要人工确认金额的场景。操作人员点击金额输入区域后，系统弹出数字键盘，可录入实际应收金额，并在确认后进入后续支付流程。该功能保证特殊业务也能形成结算记录，避免现场只收款不记账的情况。",

    "订单管理页面用于查看消费终端生成的订单记录和营业概况。系统展示今日营收、订单数、平均客单价等统计信息，并列出订单编号、消费人、消费时间、订单金额、实付金额、支付方式等明细。管理人员可按日期筛选订单，用于营业期间查询、日终核账和异常订单核对。":
    "订单管理页面用于查看本软件生成的订单记录和营业概况。系统展示今日营收、订单数、平均客单价等统计信息，并列出订单编号、消费人、消费时间、订单金额、实付金额、支付方式等明细。管理人员可按日期筛选订单，用于营业期间查询、日终核账和异常订单核对。",

    "称重设置用于维护称重终端的基础计价参数。页面支持设置商品单价、查看当前皮重，并提供重新去皮和手动清零操作。通过该功能，现场人员可以在开餐前或设备状态变化时完成称量校准，保证重量读取和金额计算符合实际售卖要求。":
    "称重设置用于维护称重结算软件的基础计价和称量参数。页面支持设置商品单价、查看当前皮重，并提供重新去皮和手动清零操作。通过该功能，现场人员可以在开餐前或称重读数状态变化时完成软件侧校准处理，保证重量读取和金额计算符合实际售卖要求。",

    "支付设置用于配置消费终端可使用的支付方式和提示参数。页面支持刷卡支付、刷码支付、人脸支付等方式的启用配置，并可设置支付结果弹框显示时长。通过该功能，系统可根据不同食堂现场的支付环境进行调整，保证结算方式与现场设备、账户体系保持一致。":
    "支付设置用于配置软件可使用的支付方式和提示参数。页面支持刷卡支付、刷码支付、人脸支付等方式的启用配置，并可设置支付结果弹框显示时长。通过该功能，系统可根据不同食堂现场的支付环境进行调整，保证结算方式与现场支付通道和账户体系保持一致。",
}


def replace_paragraph_text(paragraph, new_text):
    runs = paragraph.runs
    if not runs:
        paragraph.add_run(new_text)
        return
    first = runs[0]
    first.text = new_text
    for run in runs[1:]:
        run.text = ""


def main():
    doc = Document(SRC)
    changed = 0
    for paragraph in doc.paragraphs:
        text = paragraph.text.strip()
        if text in REPLACEMENTS:
            replace_paragraph_text(paragraph, REPLACEMENTS[text])
            changed += 1

    if changed != len(REPLACEMENTS):
        missing = sorted(set(REPLACEMENTS) - {p.text.strip() for p in Document(SRC).paragraphs})
        raise RuntimeError(f"Only replaced {changed}/{len(REPLACEMENTS)} paragraphs. Missing: {missing}")

    doc.core_properties.title = "智慧食堂称重结算系统V1.0使用说明书"
    doc.core_properties.subject = "软件著作权登记使用说明材料"
    doc.save(OUT)
    print(OUT)


if __name__ == "__main__":
    main()
