# -*- coding: utf-8 -*-
"""把「定点补读」恢复的教材原文回填进对应页的 .txt（导出的唯一数据来源）。

补三处（均为逐页 OCR 在断页／跨页处丢行）：
  书页 22（图008）：① "参照权力"释义的后半句（原 OCR 断在"(5) 参照权力："）
                     ② 图 2-1 职能型组织结构 的结构标签
  书页 30（图016）：③ 会议记录表的表头字段（原表跨 30–31 页印刷，31 页只留"续表"）
  书页 31（图017）：把"续表"里的通用表头"列1/列2"换成教材真实字段列，并补出 7 个字段行

回填内容一律带【定点补读】标记，便于与逐页 OCR 原文区分；原文件先备份 .bak。
"""
import glob
import os
import shutil
import sys

BOOK = ('/home/zyw/Downloads/dl-hub/23-拍照OCR取字/data/books/'
        '软件项目管理与实践_第2章_软件项目启动_第15-32页')

MARK_TAIL = '''
──────────（以下为【定点补读】结果，非逐页 OCR 原文；来源：教材原图定向重读）──────────
(5) 参照权力：源于项目经理的个人魅力和人际关系，团队成员因为对其的尊重和认同而跟随其指引。

【图 2-1　职能型组织结构】（原图结构标签，OCR 曾丢行）
总经理 → 市场部经理 / 财务部经理 / 研发部经理 → 员工；另有"项目经理""项目协调"两个角色横向介入。
'''

MARK_30 = '''
──────────（以下为【定点补读】结果，非逐页 OCR 原文；来源：教材原图定向重读）──────────
本页末为项目启动会议记录表（该表跨书页 30–31 印刷），教材原表表头字段为：
会议名称｜会议主题｜会议时间｜会议地点｜记录人｜审核人｜参会人员
（逐页 OCR 只抓到 31 页的"续表"三行，表头在 30 页，此处于 31 页续表中补出。）
'''

OLD17 = '| 列1 | 列2 |\n| --- | --- |\n'
NEW17 = ('| 项目 | 内容 |\n| --- | --- |\n'
         '| 会议名称 | （原表留空，会议现场填写；【定点补读】恢复的教材表头字段） |\n'
         '| 会议主题 | （原表留空） |\n'
         '| 会议时间 | （原表留空） |\n'
         '| 会议地点 | （原表留空） |\n'
         '| 记录人 | （原表留空） |\n'
         '| 审核人 | （原表留空） |\n'
         '| 参会人员 | （原表留空；教材名单：项目经理、项目团队成员、公司领导、PMO 代表、CCB 成员、相关职能部门负责人、其他相关干系人，名单由项目经理审核确认） |\n')


def one(pat, fn):
    hits = glob.glob(os.path.join(BOOK, pat))
    if not hits:
        print('  ⚠ 找不到 %s' % pat)
        return None
    p = hits[0]
    fn(p)
    print('  ✓ %s' % os.path.basename(p))
    return p


def backup(p):
    b = p + '.bak-fixread'
    if not os.path.exists(b):
        shutil.copy2(p, b)


def pad8(p):
    t = open(p, encoding='utf-8').read()
    if '定点补读' in t:
        print('    （已含补读内容，跳过）')
        return
    backup(p)
    open(p, 'w', encoding='utf-8').write(t.rstrip() + '\n' + MARK_TAIL)


def pad16(p):
    t = open(p, encoding='utf-8').read()
    if '定点补读' in t:
        print('    （已含补读内容，跳过）')
        return
    backup(p)
    open(p, 'w', encoding='utf-8').write(t.rstrip() + '\n' + MARK_30)


def pad17(p):
    t = open(p, encoding='utf-8').read()
    if OLD17 not in t:
        print('    （已修表头或格式已变，跳过）' if '项目 | 内容' in t else '    ⚠ 未找到通用表头')
        return
    backup(p)
    open(p, 'w', encoding='utf-8').write(t.replace(OLD17, NEW17, 1))


if __name__ == '__main__':
    print('回填教材页 OCR 文本：')
    one('第008页_*.txt', pad8)
    one('第016页_*.txt', pad16)
    one('第017页_*.txt', pad17)
