# -*- coding: utf-8 -*-
"""按《广东交通职业技术学院学报》官网论文模板格式重建论文（v2：理论升华版）。"""
import zipfile, re, os

TPL = '/home/zyw/Downloads/dl-hub/36-期刊投稿须知调研/论文模板.docx'
OUTDIR = '/home/zyw/Downloads/dl-hub/36-期刊投稿须知调研'

def esc(t):
    return t.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')

FONTS = {'hei': '黑体', 'song': '宋体', 'fz': '方正书宋_GBK', 'kai': '楷体_GB2312', 'times': 'Times New Roman'}

def rpr(font='song', sz=24, bold=False, sup=False):
    f = FONTS[font]
    if font in ('hei', 'kai'):
        rf = f'<w:rFonts w:ascii="{f}" w:hAnsi="{f}" w:eastAsia="{f}" w:cs="{f}"/>'
    elif font == 'fz':
        rf = f'<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="{f}" w:cs="{f}"/>'
    else:
        rf = f'<w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman" w:eastAsia="{f}" w:cs="Times New Roman"/>'
    b = '<w:b/><w:bCs/>' if bold else ''
    if sup:
        return f'<w:rPr>{rf}{b}<w:vertAlign w:val="superscript"/><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr>'
    return f'<w:rPr>{rf}{b}<w:sz w:val="{sz}"/><w:szCs w:val="{sz}"/></w:rPr>'

def run(text, **kw):
    return f'<w:r>{rpr(**kw)}<w:t xml:space="preserve">{esc(text)}</w:t></w:r>'

CITE = re.compile(r'(\[\d+(?:[-,]\d+)*\])')

def body_runs(text, font='song', sz=24, bold=False):
    out = []
    for p in CITE.split(text):
        if not p:
            continue
        if CITE.fullmatch(p):
            out.append(run(p, font=font, sz=sz, bold=bold, sup=True))
        else:
            out.append(run(p, font=font, sz=sz, bold=bold))
    return ''.join(out)

def para(runs_xml, ppr=''):
    return f'<w:p>{ppr}{runs_xml}</w:p>'

PPR_TITLE  = '<w:pPr><w:spacing w:before="62" w:after="62"/><w:jc w:val="center"/></w:pPr>'
PPR_AUTHOR = '<w:pPr><w:spacing w:before="62" w:after="62"/><w:jc w:val="center"/></w:pPr>'
PPR_AFFIL  = '<w:pPr><w:widowControl/><w:jc w:val="center"/></w:pPr>'
PPR_ABS    = '<w:pPr><w:spacing w:line="300" w:lineRule="auto"/><w:jc w:val="left"/></w:pPr>'
PPR_KW     = '<w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="left"/></w:pPr>'
PPR_CLC    = '<w:pPr><w:spacing w:line="300" w:lineRule="auto"/><w:jc w:val="left"/></w:pPr>'
PPR_EN     = '<w:pPr><w:spacing w:before="62" w:after="62"/><w:ind w:firstLine="562" w:firstLineChars="200"/><w:jc w:val="center"/></w:pPr>'
PPR_ENAUTH = '<w:pPr><w:widowControl/><w:jc w:val="center"/></w:pPr>'
PPR_H      = '<w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="left"/></w:pPr>'
PPR_BODY   = '<w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:ind w:firstLine="420" w:firstLineChars="200"/><w:jc w:val="left"/></w:pPr>'
PPR_TCAP   = '<w:pPr><w:spacing w:before="156" w:beforeLines="50"/><w:jc w:val="center"/></w:pPr>'
PPR_REF    = '<w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="left"/></w:pPr>'
PPR_TAIL   = '<w:pPr><w:spacing w:line="357" w:lineRule="atLeast"/><w:ind w:left="360" w:hanging="360"/><w:jc w:val="left"/></w:pPr>'

def table_xml(rows, widths):
    grid = ''.join(f'<w:gridCol w:w="{w}"/>' for w in widths)
    trs = []
    for ri, row in enumerate(rows):
        tcs = []
        for ci, cell in enumerate(row):
            if ri == 0:
                b = ('<w:tcBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/>'
                     '<w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tcBorders>')
            elif ri == 1:
                b = '<w:tcBorders><w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tcBorders>'
            elif ri == len(rows) - 1:
                b = '<w:tcBorders><w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/></w:tcBorders>'
            else:
                b = ''
            cellppr = ('<w:pPr><w:spacing w:line="360" w:lineRule="auto"/><w:jc w:val="center"/>'
                       '<w:rPr><w:rFonts w:ascii="方正书宋_GBK" w:hAnsi="方正书宋_GBK" w:eastAsia="方正书宋_GBK" w:cs="方正书宋_GBK"/>'
                       '<w:sz w:val="15"/><w:szCs w:val="15"/></w:rPr></w:pPr>')
            cellrpr = ('<w:rPr><w:rFonts w:hint="eastAsia" w:ascii="方正书宋_GBK" w:hAnsi="方正书宋_GBK" '
                       'w:eastAsia="方正书宋_GBK" w:cs="方正书宋_GBK"/><w:sz w:val="15"/><w:szCs w:val="15"/></w:rPr>')
            tcs.append(
                f'<w:tc><w:tcPr><w:tcW w:w="{widths[ci]}" w:type="dxa"/>{b}<w:vAlign w:val="center"/></w:tcPr>'
                f'<w:p>{cellppr}<w:r>{cellrpr}<w:t xml:space="preserve">{esc(cell)}</w:t></w:r></w:p></w:tc>')
        trs.append(f'<w:tr>{"".join(tcs)}</w:tr>')
    tblb = ('<w:tblBorders><w:top w:val="none" w:color="auto" w:sz="0" w:space="0"/>'
            '<w:left w:val="none" w:color="auto" w:sz="0" w:space="0"/>'
            '<w:bottom w:val="none" w:color="auto" w:sz="0" w:space="0"/>'
            '<w:right w:val="none" w:color="auto" w:sz="0" w:space="0"/>'
            '<w:insideH w:val="none" w:color="auto" w:sz="0" w:space="0"/>'
            '<w:insideV w:val="none" w:color="auto" w:sz="0" w:space="0"/></w:tblBorders>')
    cellmar = ('<w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/>'
               '<w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar>')
    return (f'<w:tbl><w:tblPr><w:tblStyle w:val="9"/><w:tblW w:w="0" w:type="auto"/>'
            f'<w:tblInd w:w="0" w:type="dxa"/>{tblb}<w:tblLayout w:type="autofit"/>{cellmar}</w:tblPr>'
            f'<w:tblGrid>{grid}</w:tblGrid>{"".join(trs)}</w:tbl>')

# ================= 论文内容 =================
TITLE = '基于AI助推的高职图书馆阅读推广策略研究'
AUTHOR_FULL = '【作者姓名】（【作者单位全称】图书馆，广东【城市】市【邮编】）'

ABS_CN = ('针对高职图书馆阅读推广中阅读意愿低迷、专业阅读失焦与行为维持困难的三重困境，'
          '引入行为经济学助推理论，提出"AI增强型助推"概念，分析六大助推原则与人工智能技术功能的对应关系，'
          '构建"感知—决策—行动—反馈"四层闭环架构与"情境—认知—动机—行为"作用机理模型，'
          '提出个性化默认推荐、社交证明阅读圈、游戏化激励、情境化提示、反馈优化五大策略'
          '及大语言模型对话式助推升级路径；按阅读参与度与阅读指向划分四类读者并匹配差异化策略组合；'
          '针对信息茧房风险提出基于ε-greedy策略的推荐多样性约束机制，'
          '为高职图书馆智能化阅读推广提供理论框架与伦理治理方案。')

KW_CN = '助推理论；人工智能；高职图书馆；阅读推广；AI增强型助推；大语言模型'
EN_TITLE = 'Research on Reading Promotion Strategies of Higher Vocational College Libraries Based on AI Nudging'
EN_AUTHOR_FULL = '（【English Name of the Institution】, 【City】 【Postcode】, Guangdong, China）'
ABS_EN = ('Targeting the three dilemmas in reading promotion of higher vocational college libraries—'
          'low reading willingness, unfocused professional reading, and difficulty in maintaining '
          'reading behavior—this paper introduces nudge theory from behavioral economics and proposes '
          'the concept of AI-augmented nudging. It analyzes the correspondence between the six nudging '
          'principles and the functions of artificial intelligence technologies, and constructs both a '
          'four-layer closed-loop architecture of "perception–decision–action–feedback" and a four-stage '
          'mechanism model of "situation–cognition–motivation–behavior". Five strategies are proposed, '
          'namely personalized default recommendation, social-proof reading circles, gamified incentives, '
          'contextual prompts, and feedback optimization, together with an upgraded path of conversational '
          'nudging based on large language models. Readers are classified into four types by reading '
          'participation and reading orientation to match differentiated strategy combinations. To prevent '
          'filter bubbles, a recommendation diversity constraint mechanism based on the ε-greedy strategy '
          'is proposed, providing a theoretical framework and ethical governance scheme for intelligent '
          'reading promotion in higher vocational college libraries.')
KW_EN = ('nudge theory; artificial intelligence; higher vocational college library; reading promotion; '
         'AI-augmented nudging; large language model')

BODY = [
    ('h1', '1 引言'),
    ('h2', '1.1 研究背景'),
    ('body', '阅读是高职学生综合素质培养的重要途径。2025年12月国务院令第823号公布《全民阅读促进条例》，'
             '其第三十三条明确提出"高等学校应当将阅读作为重要的教育教学方式，组织学生开展多种形式的阅读活动"[1]，'
             '为高职院校阅读推广提供了政策依据。然而，当前高职图书馆阅读推广普遍面临效果不佳的困境，'
             '传统策略多依赖行政推动和单向宣传，难以从行为决策机制层面解决问题。与此同时，'
             '以ChatGPT为代表的大语言模型（Large Language Model, LLM）的涌现，'
             '使人工智能从"推荐匹配"迈向"理解与生成"，为阅读推广提供了全新的技术范式。'
             '如何将AI技术与行为科学理论有机结合，成为提升阅读推广效能的关键议题。'),
    ('h2', '1.2 研究问题'),
    ('body', '高职图书馆阅读推广面临三重困境：一是阅读意愿低迷，大量学生缺乏主动阅读动力；'
             '二是专业阅读失焦，学生在海量资源中难以聚焦专业文献，大量转向低门槛的休闲读物；'
             '三是行为维持困难，即使启动阅读也难以形成持续习惯。从行为科学视角看，'
             '这三重困境的根源在于阅读行为"高认知门槛—低即时回报—缺乏持续反馈"的结构性矛盾，'
             '其具体成因将在第3章从行为经济学视角予以阐释。本文试图回答：'
             '助推理论如何与AI技术结合以应对上述结构性矛盾？不同阅读类型的读者应匹配何种助推策略？'
             '策略的适用边界与伦理约束如何界定？为此，本文提出"AI增强型助推"概念，'
             '构建其作用机理模型与可检验命题。'),
    ('h2', '1.3 相关研究述评'),
    ('h3', '1.3.1 助推理论与数字化助推研究'),
    ('body', '助推（Nudge）概念由Thaler和Sunstein于2008年系统提出[2]，'
             '指在不限制选择自由的前提下，通过选择架构设计引导人们做出更优决策；'
             'Kahneman的双系统理论为其提供了认知基础[3]。'
             'Weinmann等将助推引入数字化情境，提出"数字化助推"（Digital Nudging）[4]；'
             'Mirsch等提出系统化设计框架[5]；余译青等识别出21种可嵌入人机交互界面的助推工具[6]；'
             'Schemmer等从伦理视角提出"自主性兼容"原则[7]。'
             '相较于传统助推，数字化助推具有可规模化、可个性化和可迭代三个特征，'
             '并在大语言模型时代进一步从"界面元素设计"升级为"智能对话引导"。'),
    ('h3', '1.3.2 AI赋能图书馆服务研究'),
    ('body', '人工智能技术在图书馆领域的应用研究近年来快速增长。'
             '邵波等以南京大学为例系统总结了智慧图书馆建设进程与发展方向[8]；'
             '刘宏伟等探讨了利用人工智能技术提升大学图书馆支撑个性化学习能力的路径[9]；'
             '杨峰则从批判视角分析了生成式人工智能的智能鸿沟问题[10]。在实践层面，'
             '福建省图书馆于2025年4月发布并上线试运行"海丝文化大语言模型"，'
             '以馆藏文献为语料提供海丝文化专题知识问答与AI智能导读服务[11]，'
             '标志着图书馆AI应用从检索推荐向智能对话的范式跃迁。然而，'
             '将大语言模型与行为助推理论系统整合应用于阅读推广的研究仍较为匮乏。'),
    ('h3', '1.3.3 高职学生阅读行为与推广研究'),
    ('body', '中国新闻出版研究院发布的第二十次全国国民阅读调查显示，'
             '我国成年国民数字化阅读方式接触率已达80.1%[12]。高职学生作为数字原住民群体，'
             '其阅读行为呈现碎片化、浅层化和功利化特征。在阅读推广方面，'
             '传统书目推荐、阅读学分制等方式仍占主导但效果有限，'
             '将行为科学理论与AI技术系统整合应用于高职阅读推广的研究尚显不足。'),
    ('h1', '2 理论基础'),
    ('h2', '2.1 助推理论的核心原则'),
    ('body', 'Thaler和Sunstein提出助推理论的核心理念为"自由主义的温和专制主义"：'
             '通过改变"选择架构"（Choice Architecture），在不禁止任何选项、不显著改变经济激励的前提下，'
             '可预测地引导人们做出特定行为，并以"NUDGES"概括六大设计原则[2]：'
             '（1）动机（iNcentives），让选择动机更加显著，激发决策相关的内在需求与外部诱因；'
             '（2）理解权衡（Understand mappings），帮助用户在选项与预期结果之间建立清晰关联；'
             '（3）默认选项（Defaults），将最利于目标实现的选项设为默认值，利用惯性思维简化决策；'
             '（4）给予反馈（Give feedback），提供及时、轻量化的信息反馈；'
             '（5）预判错误（Expect error），预留"容错空间"，允许用户出错并提供扶正方法；'
             '（6）结构优化（Structure complex choices），将复杂的选择体系变得简单。'
             '这些原则为图书馆在不强制干预的前提下引导学生阅读提供了心理学依据。'),
    ('h2', '2.2 数字化助推：从人工架构到算法架构'),
    ('body', '数字化助推构成了连接助推理论核心原则与AI技术功能的关键理论桥梁——'
             '它既继承了助推理论"不限制选择自由"的核心理念，又为AI技术的介入提供了可操作的理论接口。'
             '传统物理场景中的选择架构（如食堂菜品排序、器官捐献默认选项）依赖人工设计，'
             '其规模化和个性化能力有限；AI技术的介入使选择架构从"人工设计"升级为"算法设计"：'
             'AI的数据分析能力对应"感知"环节，能够识别用户行为模式；'
             '推荐算法对应"决策"环节，能够设计个性化选择架构；'
             '交互能力对应"行动"环节，能够实现情境化干预；'
             '学习能力对应"反馈"环节，能够持续优化助推策略。'
             '在大语言模型背景下，AI进一步通过自然语言理解与生成实现"对话式助推"，'
             '使助推过程隐匿于日常交互之中，显著降低用户的心理抗拒感知。'),
    ('h2', '2.3 补充理论视角'),
    ('body', '（1）心理抗拒理论。Brehm提出的心理抗拒理论指出，'
             '当个体感知到自身的选择自由受到威胁时，会产生抗拒动机，倾向于恢复被剥夺的自由[13]。'
             '这对助推策略设计具有重要警示意义：若默认推荐的干预强度过高，'
             '用户可能产生"反向助推"效应，不仅拒绝推荐内容，还可能降低对图书馆系统的整体信任。'
             '因此，助推策略必须遵循"轻推"原则，确保用户的感知选择自由不被侵犯。'),
    ('body', '（2）自我决定理论。Deci和Ryan提出的自我决定理论揭示，'
             '满足自主感、胜任感和归属感三种基本心理需求是促进外部动机内化为内部动机的关键条件[14]。'
             '这为游戏化激励策略提供了设计指引：积分和徽章作为外在激励可启动阅读参与，'
             '但要实现行为持续，需逐步将外在调节内化为认同调节，'
             '让学生在完成专业相关阅读时感受到胜任感和自主选择权，而非单纯按阅读时长赋分。'),
    ('h2', '2.4 AI增强型助推：概念演进与理论定位'),
    ('body', '助推理论正经历从物理场景到智能场景的演进。传统助推依赖人工设计的物理选择架构，'
             '其规模化与个性化能力有限；数字化助推借助界面元素与推荐算法呈现选择架构，'
             '实现了可规模化与可个性化，但其干预内容仍由设计者预先设定，'
             '难以响应读者即时变化的认知与情绪状态。为此，本文提出"AI增强型助推"'
             '（AI-augmented nudging）概念：以大语言模型与自适应算法为技术基础，'
             '使选择架构具备情境感知、语义理解与动态生成能力，'
             '助推从"预设选项的呈现"升级为"因人、因时、因境实时生成干预"。'
             '与数字化助推相比，其理论增量体现在三个方面：干预生成方式由"设计者预设"转向"算法实时生成"；'
             '交互模态由"界面元素"拓展至"自然语言对话"；'
             '作用点由"选择架构"延伸至"认知架构"——不仅改变选项的呈现方式，'
             '还参与读者对阅读价值的认知建构。这一概念使助推理论在人工智能时代获得新的理论生长点，'
             '也为后文的作用机理分析提供了概念基础。'),
    ('h2', '2.5 AI助推阅读行为的作用机理模型'),
    ('body', '整合双系统理论、NUDGES原则、自我决定理论与心理抗拒理论，'
             '本文构建AI助推阅读行为的"情境触发—认知重构—动机内化—行为生成"四阶作用机理链'
             '（简称S-C-M-B机理链）。其一，情境触发：AI基于全息阅读画像识别学生的阅读"微时刻"，'
             '以默认书单、情境提示等低摩擦方式触发注意，解决"何时干预"的问题。'
             '其二，认知重构：存在两条并行通道——系统1通道以锚定、社会证明、默认效应等启发式线索'
             '降低启动成本，系统2通道以对话式解读与权衡映射改善"读什么—有何用"的结果表征；'
             '前者主要作用于行为启动，后者主要作用于专业阅读的持续。'
             '其三，动机内化：依据自我决定理论，助推须同时满足自主感、胜任感与归属感，'
             '使外在调节逐步内化为认同调节，这是行为由"启动"走向"维持"的关键中介。'
             '其四，行为生成：即时反馈与目标梯度效应强化行为的重复，推动阅读习惯形成。'
             '需要强调的是，心理抗拒是贯穿全链的负向调节变量：'
             '任一时点若干预被感知为威胁选择自由，动机内化通道即被阻断，甚至产生反向助推。'
             '因此，"感知选择自由"并非附加的伦理约束，而是机理链得以运行的必要条件。'),
    ('h2', '2.6 理论命题与适用边界'),
    ('body', '由上述机理可推导出四个可检验命题：P1（情境适配命题），'
             '助推干预与读者即时情境的匹配度越高，阅读行为的启动概率越大；'
             'P2（双通道分工命题），系统1启发式线索主要提升行为启动率，'
             '系统2对话式解读主要提升专业阅读持续率；'
             'P3（动机内化命题），只有同时满足自主感、胜任感与归属感的助推，'
             '才能使阅读从外部调节转为认同调节并长期维持；'
             'P4（抗拒边界命题），当干预强度超过读者感知选择自由的阈值时，'
             '助推效应由正转负，且对高抗拒特质读者的负效应更为明显。'
             '本文框架的适用边界有三：一是数据边界，机理链依赖多源行为数据的可得性，'
             '数据稀疏或隐私约束过强时效应衰减；二是伦理边界，'
             '须满足自主性兼容、算法透明与最小必要原则；'
             '三是对象边界，结论面向高职学生阅读情境，向研究型高校或公共图书馆迁移时需重新校准。'
             '与Fogg行为模型（B=MAT）相比，本文进一步刻画了AI如何协同降低"触发—能力—动机"'
             '三要素的实现成本；与COM-B模型相比，本文把"能力—机会—动机"细化为'
             '阅读情境中可操作的认知与动机中介机制，从而在行为设计理论与图书馆服务研究之间'
             '建立了可检验的理论联结。'),
    ('h1', '3 高职阅读推广三重困境的理论阐释'),
    ('h2', '3.1 阅读意愿低迷：即时满足与延迟回报的张力'),
    ('body', '从行为经济学视角看，阅读行为的收益具有显著滞后性——专业知识的积累需要持续投入才能显现效果，'
             '而数字时代的碎片化娱乐内容则能提供即时的感官满足。在缺乏外部干预的情况下，'
             '学生的时间分配自然向即时满足选项倾斜，阅读意愿随之走低。'
             '传统"讲座+书单"式推广只提供了阅读的理由，而未降低阅读的启动成本，'
             '因而难以改变学生的行为选择。'),
    ('h2', '3.2 专业阅读失焦：认知门槛与选择架构失衡'),
    ('body', '高职学生回避专业文献的成因是多维度的：一是认知门槛效应，'
             '专业图书的阅读成本显著高于文学类读物；二是馆藏结构因素，'
             '专业图书更新滞后、复本不足加剧学生外流；三是阅读目的的娱乐化倾向，'
             '缺乏引导时借阅行为自然滑向休闲阅读。其共性在于：'
             '图书馆呈现的是未经架构设计的"海量平面书单"，'
             '学生面对复杂选择时缺乏降低认知负荷的引导锚点，'
             '这正是"结构复杂选择"原则缺位的典型表现。'),
    ('h2', '3.3 行为维持困难：外部动机难以内化'),
    ('body', '即使初始阅读行为得以启动，其维持仍面临双重障碍：'
             '一是即时反馈缺失，专业阅读的成效难以被即时感知，激励链条在行为发生与结果显现之间断裂；'
             '二是动机类型错位，以学分、任务为主要驱动的外部调节若未转化为认同调节，'
             '一旦外部激励撤除，阅读行为即快速回落。依据自我决定理论[14]，'
             '行为维持的关键在于满足自主感、胜任感与归属感，而这恰是传统推广机制的设计盲区。'
             '上述三重困境相互叠加，构成本文策略体系设计的逻辑起点。'),
    ('h1', '4 基于AI助推的阅读推广策略体系'),
    ('h2', '4.1 "感知—决策—行动—反馈"四层闭环架构'),
    ('body', '依据上述作用机理模型，本文构建"数据驱动、情境感知、智能干预"的动态阅读推广生态系统，'
             '由四层闭环架构组成。'),
    ('body', '感知层作为系统的"神经末梢"，依托全域数据中台打破信息孤岛，'
             '实时融合显性行为数据（借阅记录、检索流、馆内轨迹）、'
             '隐性情境数据（课程表、实训进度、技能图谱）及心理偏好数据（社交情感倾向、兴趣标签），'
             '构建动态更新的"全息阅读画像"，深度洞察学生"为何读、何时读、需何书"。'),
    ('body', '决策层作为系统的"智慧大脑"，运用行为经济学原理动态计算最优助推策略：'
             '通过时间序列模型预判潜在需求，利用默认效应优化排序，应用框架效应调整信息呈现方式，'
             '实现从"人找书"到"书找人"的范式转变。'),
    ('body', '行动层作为系统的"执行手脚"，将抽象决策转化为具体的低摩擦干预动作：'
             '嵌入学生高频生活场景，利用微时刻触发、社会规范引导及游戏化路径设计，'
             '消除行动阻力，激发即时阅读行为。'),
    ('body', '反馈层作为系统的"进化引擎"，针对阅读收益滞后性痛点，'
             '建立高频、即时、多元的反馈回路，通过即时成就感确认、动态难度调整及数据回流迭代，'
             '推动阅读行为从"外部助推"向"内部习惯"转化。'),
    ('body', '四层架构形成"情境感知触发需求→智能架构优化决策→低门槛引导行动→即时反馈强化习惯"'
             '的良性螺旋上升闭环，五大具体策略分别锚定于决策、行动与反馈三大关键节点。'),
    ('body', '该架构与三重困境形成针对性映射：感知层识别读者的动机状态，回应"意愿低迷"问题；'
             '决策层依托默认效应与框架效应重构选择架构，回应"专业阅读失焦"问题；'
             '行动层以低摩擦干预触发即时行为，反馈层以即时激励支撑行为维持，'
             '共同回应"行为维持困难"。五大策略分布于决策层（个性化默认推荐）、'
             '行动层（社交证明阅读圈、游戏化激励、情境化提示）与反馈层（反馈优化）。'
             '四层架构是面向全体读者的通用运行框架，读者类型的差异化（见第5章）'
             '通过感知层的类型识别与决策层、行动层的策略配置实现。'),
    ('h2', '4.2 助推原则与AI技术的功能对应'),
    ('body', '将助推原则从物理空间的"人工选择架构设计"迁移至数字环境的"算法选择架构设计"，'
             '需明确每条原则由何种AI技术承载。六大原则与AI技术的对应关系见表1。'),
    ('tcap', '表1　助推原则与AI技术功能对应关系'),
    ('table', ([['助推原则', '行为机制', 'AI技术功能', '策略应用'],
                ['默认选项', '接受预设倾向', '协同过滤与内容推荐算法', '个性化默认推荐'],
                ['理解权衡', '改善选项—结果映射', '阅读水平评估与对标模型', '情境化提示'],
                ['给予反馈', '行为反馈强化', '实时数据追踪与可视化', '反馈优化'],
                ['预判错误', '容错与纠偏', '智能推荐纠错机制', '情境化提示'],
                ['结构优化', '简化复杂选择', '聚类分析与社交网络分析', '社交证明阅读圈'],
                ['动机', '激发内在需求', '智能推送与游戏化引擎', '游戏化激励']],
               [2400, 2000, 3000, 2200])),
    ('body', '其内在逻辑是"原则—技术—机制"的逐层落地：默认选项原则与协同过滤算法的契合，'
             '使"预设"从人工经验升级为数据驱动的个性化书单；'
             '理解权衡原则依托阅读水平评估与对标模型，构建"当前水平—目标水平—推荐路径"的映射；'
             '给予反馈原则结合实时数据追踪与可视化，把阅读的长期收益转化为即时成就；'
             '预判错误原则通过智能纠错提示图书与专业方向的关联度；'
             '结构优化原则以聚类与社交网络分析把数万册藏书简化为有限的阅读圈层；'
             '动机原则由智能推送与游戏化引擎承载，通过外在激励启动参与并沿内化路径转化为内在兴趣。'),
    ('body', '需要说明的是，六大原则是策略体系的一级理论锚点；'
             '社会证明、锚定效应、目标梯度等效应，则是相应原则在阅读场景中发挥作用的具体行为机制。'
             '例如，结构优化原则借助聚类技术划分阅读圈层（技术手段），'
             '圈层内的同伴书单展示则通过社会证明机制产生行为引导（作用机制），'
             '二者共同支撑社交证明阅读圈策略。'),
    ('h2', '4.3 五大助推策略'),
    ('body', '（1）个性化默认推荐策略。基于默认选项原则，利用协同过滤与内容推荐算法为不同专业学生'
             '设置个性化默认书单：学生登录图书馆系统时，首页展示基于其专业背景、借阅历史和同专业热门借阅的推荐列表。'
             '针对以休闲阅读为主的读者，默认展示1~2本与专业相关但叙事性强的交叉读物'
             '（如行业纪实、技术人物传记），以降低认知门槛的"轻推"方式实现专业阅读的渐进式渗透；'
             '对浅层分散型读者，默认书单以同专业高借阅的热门易读书目为主，'
             '先解决"有没有可读"的启动问题。'),
    ('body', '（2）社交证明阅读圈策略。利用聚类算法识别阅读兴趣相似的学生群体，构建"阅读圈"，'
             '在圈内展示同专业、同兴趣同学的阅读动态，利用从众心理激发阅读意愿。'
             '该策略尤适用于阅读活跃但缺乏专业聚焦的读者，'
             '通过展示同专业优秀读者的书单，为其提供专业阅读的引导锚点。'),
    ('body', '（3）游戏化激励策略。设计包含阅读积分、数字徽章和阅读排行榜的游戏化激励系统，'
             '并依据自我决定理论[14]遵循"内化路径"分三阶段推进：'
             '初始阶段以积分和徽章提供外在激励，启动低参与用户的阅读行为；'
             '过渡阶段将积分与专业实践任务挂钩，增强胜任感；'
             '内化阶段通过阅读圈社交互动和反馈可视化，使用户获得自主选择权与社群归属感。'
             '需避免单纯按阅读时长赋分的"打卡式"设计，'
             '以免引发"为积分而阅读"的工具化倾向，导致激励撤销后行为快速回落。'),
    ('body', '（4）情境化提示策略。基于锚定效应与显著性原则，在学生决策的关键节点植入情境化提示：'
             '在新生入馆第一天设定专业阅读目标作为"锚点"；'
             '在学生检索非专业图书时，弹出"你可能还感兴趣的专业读物"提示框；'
             '在学生长时间未借阅时发送个性化提醒。提示设计须遵循"轻推"原则，'
             '避免过度干预引发心理抗拒。'),
    ('body', '（5）反馈优化策略。利用实时数据追踪与可视化技术为每位学生生成个人阅读成长档案，'
             '包含专业阅读进度条、月度阅读报告、与同专业同学的对比分析等。'
             '反馈设计遵循"高频、即时、轻量"三原则：每次借阅后自动更新阅读画像；'
             '完成一本专业读物后即时推送成就确认；反馈信息以卡片形式嵌入图书馆首页，不额外增加认知负担。'
             '对任务驱动型读者，重点展示"距离专业阅读目标还差X本"的进度提示，'
             '利用目标梯度效应激发完成动力；对浅层分散型读者，'
             '则先以低门槛的热门易读书目启动参与，待其形成稳定借阅行为后再逐步引入专业阅读目标提示；'
             '对高参与读者展示正向比较反馈，强化既有习惯。'),
    ('h2', '4.4 对话式助推：大语言模型时代的策略升级'),
    ('body', '在大语言模型快速发展的背景下，上述策略可升级为"对话式助推"。'
             '基于LLM构建智能阅读伴侣系统，具备三种核心能力：'
             '一是通俗化解读，将专业理论转化为与高职生职业场景相关的对话式解读，降低认知门槛；'
             '二是意图感知，通过自然语言交互识别学生的阅读困惑与兴趣偏好，'
             '实现比协同过滤更精准的推荐；'
             '三是渐进式引导，采用苏格拉底式提问引导学生自主发现专业读物价值，避免触发心理抗拒。'
             '例如，当以休闲阅读为主的读者检索小说时，阅读伴侣可回应：'
             '"这本书的作者还写过一本关于你所学专业领域的行业纪实，很多同专业同学都觉得很有启发，'
             '要不要了解一下？"这种对话式助推将推荐嵌入自然交互，'
             '既利用了社会证明原则，又保持了用户的感知选择自由。'),
    ('h1', '5 用户类型与助推策略的匹配'),
    ('h2', '5.1 高职学生阅读类型的理论划分'),
    ('body', '依据心理抗拒理论与自我决定理论，可按"阅读参与度"（频率与持续性）'
             '与"阅读指向"（专业抑或休闲内容）两个维度，对高职学生阅读类型作理论划分：'
             '①专业深耕型——高参与度、专业指向，已将专业阅读内化为自觉行为，困境在于阅读范围偏窄；'
             '②休闲沉浸型——高参与度、休闲指向，阅读活跃但几乎脱离专业内容，'
             '可能对专业文献存在"认知防御"；'
             '③任务驱动型——低参与度、专业指向，阅读以完成学分、任务为目的，'
             '属外部调节动机，激励撤除即中断；④浅层分散型——低参与度、休闲指向，'
             '处于阅读动机的"真空状态"。需说明的是，该类型划分是理论上的理想型，'
             '实际应用中可通过读者行为数据动态识别。'),
    ('h2', '5.2 差异化策略匹配'),
    ('body', '不同类型读者应匹配差异化的助推策略组合，见表2。'),
    ('tcap', '表2　用户类型与助推策略匹配关系'),
    ('table', ([['用户类型', '核心困境', '首选策略', '辅助策略', '行为学依据'],
                ['专业深耕型', '阅读范围窄', '社交证明阅读圈', '情境化提示、反馈优化', '锚定效应：拓展认知边界'],
                ['休闲沉浸型', '专业阅读缺失', '个性化默认推荐', '游戏化激励、情境化提示', '默认选项：轻推降低抗拒'],
                ['任务驱动型', '动机难内化', '游戏化激励', '反馈优化、社交证明阅读圈', '自我决定理论：动机内化'],
                ['浅层分散型', '参与度低', '个性化默认推荐', '游戏化激励、反馈优化', '显著性：外在激励启动参与']],
               [1600, 1400, 2000, 2600, 2600])),
    ('body', '上述匹配需结合心理抗拒理论审慎论证。以休闲沉浸型读者为例，'
             '若直接施加强制性推荐（如锁定专业书单），可能触发心理抗拒[13]，导致"反向助推"。'
             '因此，默认推荐策略对该群体应采取"隐性嵌入"方式：'
             '在文学类推荐中穿插1~2本交叉读物，而非直接推送纯专业文献，'
             '从而在利用默认选项"接受预设倾向"的同时避免选择自由的感知威胁，'
             '符合Schemmer等[7]提出的"自主性兼容"原则。'),
    ('h1', '6 伦理治理：从原则声明到技术约束'),
    ('h2', '6.1 心理抗拒风险的防控'),
    ('body', '助推策略的干预强度须以"感知选择自由不受侵犯"为底线。具体约束包括：'
             '默认推荐始终保持"可一键更换"的开放状态；情境化提示的频次设置上限；'
             '任何干预均不得与学分、评奖等强制性利益直接绑定，防止"助推"异化为"强制"。'),
    ('h2', '6.2 信息茧房的防范：基于ε-greedy策略的多样性约束'),
    ('body', '参考Pariser的"信息茧房"（Filter Bubble）理论[15]，'
             'AI助推面临的核心伦理风险是：个性化推荐可能在提升专业阅读率的同时，'
             '剥夺学生通过自由探索发现其他兴趣的权利。为此，可在推荐算法中引入强化学习中的'
             'ε-greedy探索机制[16]：设定探索率ε（建议ε=0.15~0.20），'
             '即15%~20%的推荐位完全随机填充跨领域书籍，在保证推荐相关性的同时，系统性防范信息茧房。'),
    ('h2', '6.3 算法透明度与知情同意'),
    ('body', '系统应提供"推荐透明度"功能，向用户展示推荐理由和算法逻辑，保障其知情权和选择权；'
             '数据采集须明确边界，遵循最小必要原则，并建立用户知情同意机制与退出通道。'),
    ('h1', '7 结论与展望'),
    ('body', '本文以助推理论为理论锚点、以AI技术为实现手段，'
             '针对高职图书馆阅读推广"高认知门槛—低即时回报—缺乏持续反馈"的结构性矛盾，'
             '完成了四项理论工作：其一，提出"AI增强型助推"概念，'
             '明确其由"设计者预设"转向"算法实时生成"、由"界面元素"拓展至"自然语言对话"、'
             '由"选择架构"延伸至"认知架构"的理论增量；'
             '其二，构建"情境触发—认知重构—动机内化—行为生成"作用机理模型，'
             '刻画了认知双通道与动机内化的中介机制，以及心理抗拒的负向调节作用；'
             '其三，建立"感知—决策—行动—反馈"四层闭环架构与"用户类型—助推策略"匹配关系，'
             '提出五大可操作策略；其四，提出基于ε-greedy策略的推荐多样性约束机制，'
             '使伦理治理从原则声明走向可操作的技术约束。本研究尚属探索性理论建构，'
             'P1—P4命题的实证检验、各策略作用强度及其随时间的衰减特征，'
             '有待通过多校联合的纵向A/B测试加以验证；'
             '基于大语言模型的对话式阅读伴侣原型系统的开发与评估、'
             'AI助推伦理治理框架的细化，是后续研究的重要方向。'),
]

REFS = [
    '[1] 国务院. 全民阅读促进条例（国务院令第823号）[Z]. 2025-12-09.',
    '[2] THALER R H, SUNSTEIN C R. Nudge: improving decisions about health, wealth and happiness[M]. New Haven: Yale University Press, 2008.',
    '[3] KAHNEMAN D. Thinking, fast and slow[M]. New York: Farrar, Straus and Giroux, 2011.',
    '[4] WEINMANN M, SCHNEIDER C, VOM BROCKE J. Digital nudging[J]. Business & Information Systems Engineering, 2016, 58(6): 433-436.',
    '[5] MIRSCH T, LEHRER C, JUNG R. Digital nudging: altering user behavior in digital environments[C]//Proceedings of the 13th International Conference on Wirtschaftsinformatik. Sankt Gallen: University of St. Gallen, 2017: 634-648.',
    '[6] 余译青, 王宇成, 朱庆华. 数字化助推概念解析及研究进展[J]. 中国图书馆学报, 2021, 47(1): 108-122.',
    '[7] SCHEMMER K, KETTNER M, KÜHL N. Digital nudging and autonomy: ethical considerations for designing choice architectures in digital environments[J]. Journal of Business Economics, 2022, 92(8): 1065-1094.',
    '[8] 邵波, 王怡, 王进. 智慧图书馆建设进程与发展方向——以南京大学为例[J]. 图书情报工作, 2023, 67(13): 14-20.',
    '[9] 刘宏伟, 季莹, 高雨, 等. 发挥学术资源优势，利用人工智能技术提升大学图书馆支撑个性化学习的能力[J]. 大学图书馆学报, 2024, 42(1): 39-47.',
    '[10] 杨峰. 生成式人工智能的智能鸿沟生成[J]. 图书馆建设, 2023(4): 20-30.',
    '[11] 福建省图书馆. 福建省图书馆海丝文化大语言模型上线试运行[EB/OL]. (2025-04-25)[2026-09-14]. https://www.fjlib.net/zx/mtjx/202504/t20250425_477974.htm.',
    '[12] 中国新闻出版研究院. 第二十次全国国民阅读调查报告[R]. 北京: 中国新闻出版研究院, 2023.',
    '[13] BREHM J W. A theory of psychological reactance[M]. New York: Academic Press, 1966.',
    '[14] DECI E L, RYAN R M. The "what" and "why" of goal pursuits: human needs and the self-determination of behavior[J]. Psychological Inquiry, 2000, 11(4): 227-268.',
    '[15] PARISER E. The filter bubble: what the Internet is hiding from you[M]. New York: Penguin Press, 2011.',
    '[16] SUTTON R S, BARTO A G. Reinforcement learning: an introduction[M]. 2nd ed. Cambridge: MIT Press, 2018.',
]

TAIL_FULL = [
    '收稿日期：（由编辑部填写）',
    '作者简介：【作者姓名】（19××年×月—），男/女，××省××人，馆员/副研究馆员，硕士，研究方向：图书馆阅读推广、智慧图书馆服务。',
    '基金项目：（如无基金资助请删除此行；如有请填写）项目名称（编号：×××）',
]

def build_doc(blind=False):
    blocks = [('title', TITLE)]
    if not blind:
        blocks.append(('author', AUTHOR_FULL))
    blocks += [('abs', ABS_CN), ('kw', KW_CN), ('clc', None), ('entitle', EN_TITLE)]
    if not blind:
        blocks.append(('enauthor', EN_AUTHOR_FULL))
    blocks += [('abstract', ABS_EN), ('enkw', KW_EN)]
    blocks += BODY
    blocks.append(('refh', None))
    blocks += [('ref', r) for r in REFS]
    if not blind:
        blocks += [('tail', t) for t in TAIL_FULL]

    xml_parts = []
    for kind, payload in blocks:
        if kind == 'title':
            xml_parts.append(para(run(payload, font='hei', sz=36, bold=True), PPR_TITLE))
        elif kind == 'author':
            xml_parts.append(para(run(payload, font='fz', sz=24, bold=True), PPR_AUTHOR))
        elif kind == 'abs':
            xml_parts.append(para(run('摘  要：', font='hei', sz=18, bold=True) + run(payload, font='fz', sz=18), PPR_ABS))
        elif kind == 'kw':
            xml_parts.append(para(run('关键词：', font='hei', sz=18, bold=True) + run(payload, font='song', sz=18), PPR_KW))
        elif kind == 'clc':
            xml_parts.append(para(run('中图分类号：', font='hei', sz=18, bold=True) + run('G252.17', font='hei', sz=18)
                                  + run('　　', font='hei', sz=18) + run('文献标识码：', font='hei', sz=18, bold=True)
                                  + run('A', font='hei', sz=18), PPR_CLC))
        elif kind == 'entitle':
            xml_parts.append(para(run(payload, font='hei', sz=28, bold=True), PPR_EN))
        elif kind == 'enauthor':
            xml_parts.append(para(run('【AUTHOR NAME】', font='song', sz=24) + run(payload, font='times', sz=21), PPR_ENAUTH))
        elif kind == 'abstract':
            xml_parts.append(para(run('Abstract: ', font='hei', sz=18, bold=True) + run(payload, font='times', sz=18), PPR_ABS))
        elif kind == 'enkw':
            xml_parts.append(para(run('Key words: ', font='hei', sz=18, bold=True) + run(payload, font='times', sz=18), PPR_KW))
        elif kind == 'h1':
            xml_parts.append(para(run(payload, font='hei', sz=24, bold=True), PPR_H))
        elif kind == 'h2':
            xml_parts.append(para(run(payload, font='hei', sz=21, bold=True), PPR_H))
        elif kind == 'h3':
            xml_parts.append(para(run(payload, font='kai', sz=21), PPR_H))
        elif kind == 'body':
            xml_parts.append(para(body_runs(payload), PPR_BODY))
        elif kind == 'tcap':
            xml_parts.append(para(run(payload, font='hei', sz=18), PPR_TCAP))
        elif kind == 'table':
            rows, widths = payload
            xml_parts.append(table_xml(rows, widths))
        elif kind == 'refh':
            xml_parts.append(para(run('参考文献：', font='hei', sz=18, bold=True), PPR_REF))
        elif kind == 'ref':
            xml_parts.append(para(run(payload, font='song', sz=21), PPR_REF))
        elif kind == 'tail':
            xml_parts.append(para(run(payload, font='song', sz=21), PPR_TAIL))

    z = zipfile.ZipFile(TPL)
    doc = z.read('word/document.xml').decode('utf-8')
    root_open = re.search(r'<w:document[^>]*>', doc).group(0)
    sectpr = re.search(r'<w:sectPr>.*?</w:sectPr>', doc, re.S).group(0)
    new_doc = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n' + root_open
               + f'<w:body>{"".join(xml_parts)}{sectpr}</w:body>' + '</w:document>')

    out_path = os.path.join(OUTDIR, '基于AI助推的高职图书馆阅读推广策略研究-盲审稿.docx' if blind
                            else '基于AI助推的高职图书馆阅读推广策略研究-正式稿.docx')
    with zipfile.ZipFile(out_path, 'w', zipfile.ZIP_DEFLATED) as zout:
        for item in z.infolist():
            if item.filename == 'word/document.xml':
                zout.writestr(item, new_doc.encode('utf-8'))
            elif item.filename == 'word/media/image1.jpeg':
                continue
            else:
                zout.writestr(item, z.read(item.filename))
    z.close()
    return out_path

han = len(re.findall(r'[\u4e00-\u9fff]', ABS_CN))
print('中文摘要纯汉字数:', han, '(要求≤250)')
print('关键词个数:', len([k for k in KW_CN.split('；') if k.strip()]), '(要求3~6)')
body_text = ''.join(p for k, p in BODY if k in ('body', 'h1', 'h2', 'h3'))
print('正文汉字数(含标题行, 不含表格):', len(re.findall(r'[\u4e00-\u9fff]', body_text)))
tbl_text = ''.join(''.join(''.join(r) for r in rows) for k, (rows, w) in
                   [(k, p) for k, p in BODY if k == 'table'])
print('表格汉字数:', len(re.findall(r'[\u4e00-\u9fff]', tbl_text)))
print('参考文献条数:', len(REFS))
for blind in (False, True):
    p = build_doc(blind)
    print('生成:', os.path.basename(p), os.path.getsize(p), 'bytes')
