# -*- coding: utf-8 -*-
"""第2章《软件项目启动》HTML 课件生成器（复用 lecture1 模板）。
用法: python3 _build2.py
输出: lecture2/2.1.html ~ 2.28.html + lecture2/index.html（目录）
内容源: 学校PPT《第2章 软件项目启动.pptx》(28页) + 教案第2次课思政点（遵纪守法）
"""
import os, sys, html as _h

ROOT = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, ROOT)

from _build import slide_page, esc, CSS_VER  # 复用模板渲染

# ---------- 内容辅助 ----------
def cover(title, sub, quote):
    return f'''<div style="text-align:center;padding-top:26px;">
      <img src="../assets/ch2/image1.jpeg" alt="封面图" style="max-height:200px;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,.15);">
      <h1 style="color:#1a365d;line-height:1.4;margin:18px 0 8px;">{title}</h1>
      <p style="color:#4a5568;">广东金融学院 · 软件项目管理（课程代码 154431006）</p>
      <p style="color:#a0aec0;">授课教师：周宇文（电话/微信：13580390715）｜ 32 学时 / 2 学分 ｜ 第 2 周（90 分钟）</p>
      <div class="quote-block" style="margin-top:24px;font-style:normal;">{quote}</div>
    </div>'''

def section(title, sub):
    return f'''<div style="text-align:center;padding-top:34px;">
      <h1 style="color:#1a365d;">{title}</h1>
      <p style="color:#4a5568;margin-top:8px;">{sub}</p>
    </div>'''

def ul(items):
    return '<ul>' + ''.join(f'<li>{i}</li>' for i in items) + '</ul>'

def tags(items, color='tag-blue'):
    return ''.join(f'<span class="tag {color}">{t}</span>' for t in items)

SLIDES = [

# ---- 1-4 封面/目录/案例 ----
("封面", "第 2 章 软件项目启动",
 cover("软件项目启动", "第 2 周 · 项目立项 · 项目准备工作 · 干系人 · 章程 · 启动大会",
       "项目启动是项目的“第一粒扣子”——<br>立项是否严谨、章程是否清晰，<br>决定了项目后面 90% 的日子好不好过。")),

("目录", "今天学什么",
 """<div class="grid-2">
  <div class="card-mini"><h3>01 软件项目启动概述</h3><p>启动＝立项＋准备工作＋干系人＋章程＋启动大会，全流程五步。</p></div>
  <div class="card-mini"><h3>02 项目立项</h3><p>建议书 → 可行性研究（初/详）→ 评估与决策——要不要干？</p></div>
  <div class="card-mini"><h3>03 项目准备工作</h3><p>项目经理指派、组织结构选择（职能/项目/矩阵）。</p></div>
  <div class="card-mini"><h3>04 识别干系人</h3><p>谁影响项目、谁被项目影响——内部 5 类 + 外部 5 类。</p></div>
  <div class="card-mini"><h3>05 制定项目章程</h3><p>定义、作用、依据、方法、结果（11 项核心内容 + 假设日志）。</p></div>
  <div class="card-mini"><h3>06 项目启动大会</h3><p>参会人员、会议流程、关键结论、会议纪要。</p></div>
</div>
<div class="info-box">📌 学习目标：能说明项目启动全流程；能写出项目建议书/可行性研究要点；能比较三类组织结构；能识别干系人并制定项目章程。</div>"""),

("案例背景", "案例｜某大型连锁超市智能库存管理系统",
 """<p><b>背景</b>：某大型连锁超市面临<b>库存管理效率低、库存成本上升、商品过期损耗严重</b>等问题。公司决定全面升级库存管理系统，引入<b>智能预测算法</b>和<b>自动化补货机制</b>，实现库存的精准管理和优化。</p>
<p><b>启动过程</b>：项目团队按标准流程编制了《项目建议书》和《可行性分析报告》，论证了系统的经济效益与社会效益；高层领导迅速决策并<b>批准启动项目</b>。</p>
<div class="grid-2">
  <div class="card-mini"><h3>✅ 做得对</h3><p>按流程编制建议书与可行性报告；论证经济与社会效益；高层快速决策。</p></div>
  <div class="card-mini"><h3>⚠️ 埋下隐患</h3><p>启动时<b>未充分考虑技术可行性</b>——智能预测算法准确性、数据集成难度、自动化补货实现方案均缺乏深入调研。</p></div>
</div>
<div class="info-box">💡 本案例将贯穿本章：每一项启动工作没做扎实，都会在后面“还债”。</div>"""),

("案例思考", "案例描述（续）与思考",
 """<p><b>风险暴露</b>：项目经理具备网站开发经验，但项目涉及<b>跨领域技术整合与多部门协作</b>，超出传统网站开发范畴——管理风险未充分识别，启动阶段出现沟通不畅、决策滞后。</p>
<p><b>开发阶段</b>：团队与业务部门沟通偏差，对超市实际运营场景与库存需求理解不一致；智能预测算法、自动化补货的技术方案研究不足，集成测试阶段遇到较多技术难题与性能瓶颈，项目出现延误。</p>
<div class="quiz">
  <button class="quiz-btn" data-action="reveal">查看案例思考题</button>
  <div class="quiz-feedback">
    <p>📝 <b>Q1</b> 项目启动存在哪些具体问题？</p>
    <p>📝 <b>Q2</b> 针对上述问题，如何有效解决？</p>
    <p>💡 提示：从<b>技术可行性论证、干系人识别、沟通规划、风险识别</b>四个角度对照本节知识点作答。</p>
  </div>
</div>"""),

# ---- 5-6 概述 ----
("分区·概述", "01 软件项目启动概述", section("软件项目启动概述", "项目生命周期中的第一步——为成功执行打下基础")),

("启动全流程", "软件项目启动：关键环节全流程",
 """<p>软件项目启动是<b>项目生命周期中的第一步</b>，主要通过一系列活动为项目的成功执行打下基础。五个关键环节：</p>
<ol style="padding-left:22px;line-height:2;">
  <li><b>项目建议书的编写</b>：明确项目的背景、目标和预期成果，为立项提供依据；</li>
  <li><b>可行性研究</b>（初步＋详细）：评估项目的技术、经济、资源可行性，确保项目具备实施条件；</li>
  <li><b>项目评估与决策</b>：基于可行性研究结果全面评估，最终决定是否立项；</li>
  <li><b>立项后基础工作</b>：制定项目章程、指派项目经理、识别干系人——明确目标、范围与资源分配；</li>
  <li><b>启动大会收尾</b>：与团队和干系人就目标、需求、时间安排达成一致，奠定推进基础。</li>
</ol>
<div class="quote-block">一句话：<b>立项决定“干不干”，章程决定“谁来干、怎么干”，启动会决定“大家认不认”。</b></div>"""),

# ---- 7-12 项目立项 ----
("分区·立项", "02 项目立项", section("项目立项", "项目启动前的关键环节——决定项目能否正式进入实施阶段")),

("立项四阶段", "项目立项管理四个阶段",
 """<p>项目立项是项目启动前的关键环节，决定了项目<b>是否能够正式进入实施阶段</b>，为后续的项目章程制定、团队组建、资源分配等环节提供基础。</p>
<div class="grid-4" style="display:grid;grid-template-columns:repeat(4,1fr);gap:10px;">
  <div class="card-mini"><h3>① 立项申请</h3><p>项目建议与立项申请</p></div>
  <div class="card-mini"><h3>② 初步可行性研究</h3><p>初步评估</p></div>
  <div class="card-mini"><h3>③ 详细可行性研究</h3><p>全面论证</p></div>
  <div class="card-mini"><h3>④ 评估与决策</h3><p>立项决策</p></div>
</div>
<div class="info-box">✅ 小型项目可<b>合并</b>初步和详细可行性研究阶段，但<b>详细可行性研究不可或缺</b>。</div>"""),

("项目建议书", "项目建议书（立项申请）",
 """<p>项目建议书是项目建设单位向上级主管部门提交的关键文件，基于国民经济趋势、国家及地方规划、产业政策、市场需求、项目所在地条件及本单位战略等，对拟建项目提出总体设想。</p>
<p><strong>核心内容：</strong></p>
<ul>
  <li><span class="tag tag-blue">背景</span><b>项目背景和必要性</b>：阐述项目为何开展，解决什么问题；</li>
  <li><span class="tag tag-blue">市场</span><b>市场分析与预测</b>：分析市场现状，预测未来趋势；</li>
  <li><span class="tag tag-blue">产出</span><b>预期成果与市场定位</b>：明确项目产出及面向的市场群体；</li>
  <li><span class="tag tag-blue">条件</span><b>实施必要条件</b>：资源、技术、资金等各类资源说明。</li>
</ul>"""),

("可行性内容", "项目可行性研究：五个维度",
 """<p>可行性研究涵盖多维度分析，确保项目全方位可行：</p>
<table>
<tr><th style="width:26%">维度</th><th>要点</th></tr>
<tr><td><b>技术可行性</b></td><td>现有技术能否支持项目目标并在规定时间内完成，如评估当前技术水平下开发特定功能的可能性</td></tr>
<tr><td><b>经济可行性</b></td><td>成本效益核算：项目支出、收益、投资回报期、敏感性分析等</td></tr>
<tr><td><b>社会效益可行性</b></td><td>对组织内部（品牌形象、竞争力）与社会（就业、环保）的影响</td></tr>
<tr><td><b>运行环境可行性</b></td><td>用户管理体制、人员素质、数据资源等运行环境是否适配（如员工操作能力）</td></tr>
<tr><td><b>其他可行性</b></td><td>法律可行性（是否符合法律法规）、政策可行性（是否契合政策导向）</td></tr>
</table>
<div class="quote-block">回顾案例：智能库存系统恰恰<b>败在“技术可行性”未深入论证</b>——算法准确性、数据集成难度、自动补货实现方案。</div>"""),

("可行性阶段", "项目可行性研究：两个阶段与报告结构",
 """<p><strong>两个阶段：</strong></p>
<ul>
  <li><b>① 初步可行性研究</b>：初步评估项目必要性、周期、资源等，判断是否值得投入更多资源深入研究；</li>
  <li><b>② 详细可行性研究</b>：全面深入分析技术方案、市场、投资、风险等，为项目决策提供详实依据。</li>
</ul>
<p><strong>详细可行性研究报告结构（表 2-2）：</strong></p>
<table>
<tr><th style="width:30%">目录项</th><th>主要内容</th></tr>
<tr><td>项目背景</td><td>项目名称、承担单位、主管部门、客户、可行性研究依据等</td></tr>
<tr><td>可行性研究结论</td><td>项目目标、规模、技术方案、进度计划、投资估算、财务评价等</td></tr>
<tr><td>技术背景 / 发展现状</td><td>国家/地区/行业规划、客户需求；国内外技术历史、现状与趋势</td></tr>
<tr><td>市场调查分析</td><td>产品用途、市场调研、开发环境、市场预测等</td></tr>
<tr><td>客户现行系统情况</td><td>客户资源、现行系统功能与需求调查</td></tr>
<tr><td>项目总体目标</td><td>项目目标、技术方案、核心问题分析等</td></tr>
<tr><td>实施进度计划</td><td>阶段划分、进度安排、项目里程碑等</td></tr>
<tr><td>投资估算</td><td>总投资、资金筹措方案、投资使用计划等</td></tr>
<tr><td>项目组人员组成</td><td>组织方式、人员构成、培训计划等</td></tr>
<tr><td>项目风险</td><td>关键技术风险、需求不确定性、其他风险</td></tr>
<tr><td>经济效益 / 社会效益</td><td>经济效益预测；社会效益分析与评价</td></tr>
<tr><td>结论 / 附件</td><td>可行性研究结论、立项建议；相关文件、图表、调查数据</td></tr>
</table>"""),

("评估与决策", "项目评估与决策",
 """<p><strong>1. 项目评估</strong>：由<b>第三方</b>依据国家政策、法规、行业标准等，从国民经济、社会影响、组织业务角度全面评估项目可行性，最终输出《项目评估报告》。</p>
<p><strong>2. 报告内容：</strong></p>
<ul>
  <li><b>项目概况</b>：基本情况＋综合评估结论（是否批准项目或建议贷款）；</li>
  <li><b>详细评估意见</b>：对技术可行性、经济可行性、市场需求等细致分析阐述；</li>
  <li><b>总结与建议</b>：点明重大问题和潜在风险，提出针对性改进措施。</li>
</ul>
<p><strong>3. 决策</strong>：基于评估结果，决定项目是否立项。</p>
<div class="quote-block">⚠️ 思政要点：立项评估必须<b>依法合规、客观公正</b>——第三方评估的独立性与严肃性，正是“科学决策、不拍脑袋”的制度保障。</div>"""),

# ---- 13-17 项目准备工作 ----
("分区·准备工作", "03 项目准备工作", section("项目准备工作", "项目经理指派 · 组织结构选择")),

("项目经理", "项目经理指派：来源 · 能力 · 职责 · 权力",
 """<p><strong>1. 项目经理的来源</strong></p>
<div class="grid-2">
  <div class="card-mini"><h3>内部选拔</h3><p>部门推荐、PMO 指派、高层指定、人才计划选拔<br><b>优势：</b>熟悉组织文化与流程，有内部工作经验</p></div>
  <div class="card-mini"><h3>外部招聘</h3><p>公开招聘、猎头服务、合同聘用、伙伴推荐<br><b>适用：</b>需特定领域经验或高技术要求的项目</p></div>
</div>
<p><strong>2. 项目经理的能力</strong>：① 项目管理技能　② 战略与商务技能　③ 领导力　④ 技术能力</p>
<p><strong>3. 项目经理的职责</strong>：项目规划与目标设定 · 团队建设与管理 · 进度/资源/预算管理 · 沟通与协调 · 风险与质量管理 · 问题解决与决策支持 · 项目交付与收尾</p>
<p><strong>4. 项目经理的权力类型</strong></p>
<ul>
  <li><b>按管理职责分</b>：决策权、组织权、指挥权、人事权、经济权；</li>
  <li><b>按来源作用分</b>：职位权力、奖赏权力、惩罚权力、专家权力、参照权力。</li>
</ul>"""),

("职能型", "组织结构选择 1｜职能型组织结构",
 """<p><b>核心定义</b>：按照专业职能进行划分，各部门负责特定领域业务（财务、人力、市场、技术等）。</p>
<p><b>适用场景</b>：稳定的业务环境和重复性工作的组织。</p>
<div class="grid-2">
  <div class="card-mini"><h3>✅ 主要优点</h3><ul style="padding-left:16px;"><li>人员配置灵活，技术专家可为多个项目提供支持</li><li>部门内专业人员便于交流，促进技术问题解决</li><li>技术连续性好，员工有清晰晋升路径</li></ul></div>
  <div class="card-mini"><h3>⚠️ 主要缺点</h3><ul style="padding-left:16px;"><li>项目支持不足、责任分散，执行力可能下降</li><li>跨部门沟通困难，易忽视项目整体目标</li><li>项目人员积极性较低，缺乏归属感</li></ul></div>
</div>"""),

("项目型", "组织结构选择 2｜项目型组织结构",
 """<p><b>核心定义</b>：以项目为核心，项目经理全权负责项目，拥有调动资源的权力。</p>
<p><b>适用场景</b>：大型工程或复杂研发项目。</p>
<div class="grid-2">
  <div class="card-mini"><h3>✅ 主要优点</h3><ul style="padding-left:16px;"><li>项目经理快速决策，项目组聚焦单一目标</li><li>灵活控制进度、成本和质量</li><li>成员只有一个领导，避免多重领导冲突，沟通顺畅</li></ul></div>
  <div class="card-mini"><h3>⚠️ 主要缺点</h3><ul style="padding-left:16px;"><li>项目组独占资源，项目间资源共享不足</li><li>项目经理与成员依赖性强，跨部门沟通困难</li><li>项目结束后成员缺乏归属感，影响职业发展</li></ul></div>
</div>"""),

("矩阵型", "组织结构选择 3｜矩阵型组织结构",
 """<p><b>核心定义</b>：结合职能型与项目型特点，员工同时隶属职能部门和项目团队，项目经理与职能经理<b>共享管理权</b>，资源调度高效，促进跨部门合作。</p>
<p><b>适用场景</b>：需同时管理多个复杂项目的组织（跨国企业、高科技公司、大型研发机构）。</p>
<div class="grid-2">
  <div class="card-mini"><h3>✅ 主要优点</h3><ul style="padding-left:16px;"><li>充分利用各部门技术、人才和设备</li><li>促进成员学习与知识交流</li><li>提升对客户需求的关注</li></ul></div>
  <div class="card-mini"><h3>⚠️ 主要缺点</h3><ul style="padding-left:16px;"><li>多重领导和复杂汇报关系增加管理难度</li><li>多项目间进度、费用、质量平衡影响效率</li><li>项目与职能部门责权划分不清，可能执行混乱</li></ul></div>
</div>
<div class="quote-block">三种结构无绝对优劣：<b>按项目规模、稳定性、协作需求</b>取舍——中小型用职能/矩阵，大型复杂研发用项目型。</div>"""),

# ---- 18-19 识别干系人 ----
("分区·干系人", "04 识别干系人", section("识别干系人", "所有能影响项目或受项目影响的组织 / 个人")),

("干系人识别", "识别项目干系人：分类与关键角色",
 """<p><b>定义</b>：所有能影响项目或受项目影响的组织/个人，涵盖内部/外部、主动参与/被动关联者。</p>
<table>
<tr><th style="width:18%">类别</th><th style="width:26%">关键角色</th><th>核心职责</th></tr>
<tr><td rowspan="5" style="text-align:center;vertical-align:middle;"><b>内部<br>干系人</b></td><td>1. 发起人</td><td>高层领导（如 CEO），项目发起者</td></tr>
<tr><td>2. 项目经理</td><td>整体管理与推进</td></tr>
<tr><td>3. 团队成员</td><td>直接执行核心任务</td></tr>
<tr><td>4. 职能经理</td><td>资源分配与管理（职能/矩阵型组织）</td></tr>
<tr><td>5. PMO</td><td>提供支持、规范流程</td></tr>
<tr><td rowspan="5" style="text-align:center;vertical-align:middle;"><b>外部<br>干系人</b></td><td>1. 客户</td><td>提出需求、验收成果</td></tr>
<tr><td>2. 最终用户</td><td>使用项目成果</td></tr>
<tr><td>3. 供应商</td><td>提供资源/技术/服务</td></tr>
<tr><td>4. 监管机构</td><td>确保合规</td></tr>
<tr><td>5. 股东</td><td>项目投资方</td></tr>
</table>
<div class="info-box">💡 干系人识别是启动阶段“<b>人</b>”的功课——漏掉一个关键干系人，后面多十倍的沟通成本。</div>"""),

# ---- 20-24 制定项目章程 ----
("分区·章程", "05 制定项目章程", section("制定项目章程", "项目启动阶段最正式的文档——批准即正式启动")),

("章程定义", "项目章程：定义与作用",
 """<p><b>1. 项目章程的定义</b>：项目启动阶段的一份<b>正式文档</b>，全面记录商业需求、项目论证及对顾客需求的理解，明确新产品、服务或成果的交付目标，确保干系人在<b>主要可交付成果、关键里程碑及角色职责</b>上达成共识。该过程通常在项目启动时开展，<b>项目章程一旦被批准，就标志着项目的正式启动</b>。</p>
<p><b>2. 项目章程的主要作用</b></p>
<ul>
  <li>① <b>任命项目经理</b>并明确其权责；</li>
  <li>② 赋予项目<b>合法地位</b>；</li>
  <li>③ 设定项目<b>总体目标</b>；</li>
  <li>④ 明确项目与<b>组织战略目标</b>之间的直接关联。</li>
</ul>
<div class="quote-block">章程是“授权书”也是“责任书”——它把“老板想干的事”变成“项目组必须干的事”。</div>"""),

("章程依据", "制定项目章程的依据",
 """<table>
<tr><th style="width:22%">依据</th><th>内容</th></tr>
<tr><td><b>立项管理文件</b></td><td>含商业需求、成本效益分析等，为决策提供依据（项目经理无权直接修改，可提调整建议）</td></tr>
<tr><td><b>合同</b></td><td>外部客户项目的法律框架，明确目标、范围、交付要求、付款条款等</td></tr>
<tr><td><b>事业环境因素</b></td><td>内部：组织文化、结构、设施、IT 工具、资源可用性、员工能力；外部：市场、法律法规、行业标准、财务环境</td></tr>
<tr><td><b>组织过程资产</b></td><td>标准化政策/流程/程序；监督与报告机制；模板；历史数据与经验教训库等</td></tr>
</table>
<div class="info-box">💡 项目章程是连接项目执行与需求的纽带；应<b>尽早任命项目经理</b>，最好在制定章程时就确认——章程批准后项目经理才获得调配资源的正式权力。</div>"""),

("章程方法", "制定项目章程的方法",
 """<p>制定项目章程常用的方法与工具：</p>
<ul>
  <li><span class="tag tag-blue">1</span><b>专家判断</b>：由具备领域专业知识、经验和技能的个人或小组，基于对项目的深入理解提供决策支持；</li>
  <li><span class="tag tag-blue">2</span><b>头脑风暴</b>：团队协作的创意生成方法，集思广益，短时间内获得大量想法和解决方案；</li>
  <li><span class="tag tag-blue">3</span><b>焦点小组</b>：结构化讨论，由相关背景人员组成，收集关于目标、需求、风险、成功标准的深度意见；</li>
  <li><span class="tag tag-blue">4</span><b>访谈</b>：与干系人或专家一对一沟通，收集高层级需求、假设条件、制约因素、审批标准等关键信息；</li>
  <li><span class="tag tag-blue">5</span><b>人际关系与团队技能</b>：通过冲突管理、引导等确保章程实际可行且各方需求得到考虑。</li>
</ul>"""),

("章程结果", "制定项目章程的结果",
 """<p><strong>1. 项目章程（11 项核心内容）</strong></p>
<ol style="padding-left:22px;line-height:2;">
  <li>项目目的</li><li>可测量的项目目标和成功标准</li><li>高层级需求与描述</li>
  <li>整体项目风险</li><li>总体里程碑进度计划</li><li>预先批准的财务资源</li>
  <li>关键项目干系人名单</li><li>项目审批要求</li><li>项目退出标准</li>
  <li>项目经理及其职责和职权</li><li>发起人或其他批准人员信息</li>
</ol>
<p><strong>2. 假设日志</strong>：记录项目生命周期中的<b>假设条件</b>和<b>制约因素</b>（如预算上限、交付周期限制等）。</p>
<div class="info-box">✅ 写完章程自检：目的清不清？目标能不能量？风险列没列？里程碑有没有？谁批谁管写没写？</div>"""),

# ---- 25-27 项目启动大会 ----
("分区·启动大会", "06 项目启动大会", section("项目启动大会", "标志着项目正式步入实施阶段")),

("启动大会", "项目启动大会：人员 · 流程 · 结论",
 """<p>项目启动会议是项目生命周期中的<b>关键环节</b>，由<b>项目经理主导</b>，确保各方干系人对项目目标、范围、需求、背景及各自职责有清晰认识。</p>
<p><strong>1. 参会人员</strong></p>
<div class="grid-2">
  <div class="card-mini"><h3>内部</h3><p>项目经理、团队成员、公司领导、PMO 代表、变更控制委员会（CCB）成员、相关职能部门负责人</p></div>
  <div class="card-mini"><h3>外部</h3><p>客户代表、供应商代表等关键干系人（名单由项目经理审核）</p></div>
</div>
<p><strong>2. 会议流程</strong></p>
<ol style="padding-left:22px;line-height:2;">
  <li><b>会前筹备</b>：确认汇报材料、议程、人员名单，完成通知与签到；</li>
  <li><b>核心环节</b>：项目经理介绍项目（目标、里程碑、分工、风险等）→ 答疑澄清 → 公司领导动员；</li>
  <li><b>会后输出</b>：生成会议纪要（记录主题、结论、待办等，作为跟踪依据）。</li>
</ol>
<p><strong>3. 关键会议结论</strong></p>
<ul>
  <li>团队对项目基本信息、目标、计划有了全面了解；</li>
  <li>明确了项目风险识别清单及初步应对措施；</li>
  <li>确定了项目总体分工及下阶段工作任务；</li>
  <li>增强了项目团队成员的凝聚力和士气。</li>
</ul>"""),

("启动会纪要", "项目启动大会：待办事项与会议纪要",
 """<p><strong>4. 待办事项</strong></p>
<ul>
  <li>根据会议内容编制《项目启动会议纪要》，确保所有相关责任人收到；</li>
  <li>相关责任人按纪要要求开展各自工作，确保项目顺利推进。</li>
</ul>
<p><strong>表 2-4 项目启动会议纪要模板</strong></p>
<table>
<tr><td style="width:22%"><b>会议名称</b></td><td>项目启动会</td></tr>
<tr><td><b>会议主题 / 时间 / 地点</b></td><td>＿＿＿＿＿</td></tr>
<tr><td><b>记录人 / 审核人</b></td><td>＿＿＿＿＿</td></tr>
<tr><td><b>参会人员</b></td><td>＿＿＿＿＿</td></tr>
<tr><td><b>会议内容</b></td><td>1. 记录会议所讨论的事项　2. 分项罗列具体讨论的问题</td></tr>
<tr><td><b>会议结论</b></td><td>1. 记录会议讨论的结果　2. 针对具体问题得出讨论结论</td></tr>
<tr><td><b>待办事项</b></td><td>1. 记录待解决的问题　2. 或待跟进的事项</td></tr>
</table>"""),

# ---- 28 小结 ----
("本章小结", "本章小结：软件项目启动全景图",
 """<div class="grid-2">
  <div class="card-mini"><h3>01 启动概述</h3><p>建议书 → 可行性研究 → 评估决策 → 章程/经理/干系人 → 启动大会</p></div>
  <div class="card-mini"><h3>02 项目立项</h3><p>四阶段流程；可行性研究五维度；评估由第三方完成</p></div>
  <div class="card-mini"><h3>03 准备工作</h3><p>项目经理来源/能力/职责/权力；职能型 vs 项目型 vs 矩阵型</p></div>
  <div class="card-mini"><h3>04-06 干系人·章程·启动会</h3><p>识别干系人（内 5 + 外 5）；章程 11 项核心内容；启动会三环节</p></div>
</div>
<div class="quote-block">🧭 思政要点：项目立项与招投标必须<b>遵纪守法、程序合规</b>；可行性研究要<b>实事求是、科学严谨</b>——这既是项目管理的要求，也是职业操守的底线。</div>
<div class="info-box">📝 课后思考：回顾“智能库存管理系统”案例——它在立项、干系人、沟通、风险四个环节各踩了什么坑？结合本章知识点提出改进方案。</div>"""),

]

def build():
    total = len(SLIDES)
    folder = os.path.join(ROOT, 'lecture2')
    os.makedirs(folder, exist_ok=True)
    for i, (pt, title, body) in enumerate(SLIDES, start=1):
        prev, nxt = i - 1, i + 1
        pt_prev = SLIDES[prev - 1][0] if prev >= 1 else ''
        pt_next = SLIDES[nxt - 1][0] if nxt <= total else ''
        href_prev = f'2.{prev}.html' if prev >= 1 else ''
        href_next = f'2.{nxt}.html' if nxt <= total else ''
        with open(os.path.join(folder, f'2.{i}.html'), 'w', encoding='utf-8') as f:
            f.write(slide_page(2, i, total, title, body, pt_prev, pt_next, href_prev, href_next,
                               '软件项目管理 · 第 2 次课'))
    groups = [
        ('一、封面 · 目录 · 案例导入', 1, 4),
        ('二、01 软件项目启动概述', 5, 6),
        ('三、02 项目立项', 7, 12),
        ('四、03 项目准备工作', 13, 17),
        ('五、04 识别干系人', 18, 19),
        ('六、05 制定项目章程', 20, 24),
        ('七、06 项目启动大会', 25, 27),
        ('八、本章小结 · 思政要点', 28, 28),
    ]
    items = []
    for name, s, e in groups:
        items.append(f'    <div class="toc-section">{esc(name)} <em>第 {s}-{e} 页</em></div>')
        for i in range(s, e + 1):
            pt, title, _ = SLIDES[i - 1]
            items.append(f'    <a class="toc-item" href="2.{i}.html"><span class="toc-num">2.{i}</span><span class="toc-title">{esc(title)}</span><span class="toc-arrow">→</span></a>')
    with open(os.path.join(folder, 'index.html'), 'w', encoding='utf-8') as f:
        f.write(f'''<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>第2次课 — 目录</title>
<link rel="stylesheet" href="../styles.css?v={CSS_VER}">
<style>
.toc-section{{margin:24px 0 8px;padding:8px 14px;background:linear-gradient(135deg,#1a365d,#2b6cb0);color:#fff;border-radius:8px;font-size:1.05rem;font-weight:700;letter-spacing:.5px;}}
.toc-section:first-of-type{{margin-top:12px;}}
.toc-section em{{font-style:normal;font-weight:400;opacity:.85;font-size:.9rem;margin-left:6px;}}
</style>
</head>
<body>

<div class="logo-bar">
  <img src="../logo.png" alt="Logo">
  <span class="logo-label">软件项目管理 · 第 2 次课</span>
</div>

<div class="breadcrumb">
  <a href="../index.html">← 返回主页</a>
</div>

<div class="toc-page">
  <h2>🕒 第 2 次课（第 2 周）：软件项目启动</h2>
  <div class="toc-subtitle">{total} 张幻灯片 · 点击任意标题直接跳转（键盘 ← → 或滚轮翻页）</div>
  <div class="toc-subtitle">👩‍🏫 授课教师：周宇文 ｜ 联系电话/微信：13580390715</div>

  <div class="toc-progress">
    <span>0/{total}</span>
    <div class="progress-bar"><div class="progress-fill" style="width:0%"></div></div>
  </div>

  <div class="toc-list">

{chr(10).join(items)}

  </div>
</div>
</body>
</html>''')
    print('lecture2 built:', total, 'slides + toc')

if __name__ == '__main__':
    build()
