generate_brand_site_docs.py 38 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789
from docx import Document
from docx.shared import Pt
import os


def add_heading(doc: Document, text: str, level: int = 1):
    """统一宋体标题样式。"""
    h = doc.add_heading(text, level=level)
    for run in h.runs:
        run.font.size = Pt(12)
        run.font.name = "宋体"


def add_paragraph(doc: Document, text: str):
    """
    统一 11 号宋体正文段落,同时适度扩充内容但不直接重复原文。
    做法:先写原文,再追加一到两段“如何落实/如何落地”类说明。
    """
    # 原文
    p = doc.add_paragraph(text)
    for run in p.runs:
        run.font.size = Pt(11)
        run.font.name = "宋体"

    # 扩展段 1:落实方式
    ext1 = (
        "在项目实施过程中,需将上述要求进一步细化为可执行的工作项,"
        "明确责任部门、责任人和时间节点,并通过阶段性检查和评审的方式,"
        "跟踪落实情况,保证本条要求真正落地,而不是停留在文件层面。"
    )
    p1 = doc.add_paragraph(ext1)
    for run in p1.runs:
        run.font.size = Pt(11)
        run.font.name = "宋体"

    # 扩展段 2:对项目目标的意义
    ext2 = (
        "从项目管理的视角看,本条内容与项目整体目标之间存在紧密关联,"
        "一方面为后续的设计、开发和测试活动提供了方向指引,"
        "另一方面也为项目验收和运行评估提供了可量化、可检查的依据。"
    )
    p2 = doc.add_paragraph(ext2)
    for run in p2.runs:
        run.font.size = Pt(11)
        run.font.name = "宋体"


def add_diagram_placeholder(doc: Document, title: str, desc: str = ""):
    """在需要上架构图/流程图的地方添加占位说明,便于后续在 Word 中插图。"""
    p = doc.add_paragraph()
    run = p.add_run(f"【{title}】")
    run.bold = True
    run.font.size = Pt(11)
    if desc:
        p = doc.add_paragraph(desc)
        for r in p.runs:
            r.font.size = Pt(11)


def ensure_docs_dir():
    os.makedirs("docs", exist_ok=True)


# 1-钻井液品牌网站-项目开发计划
def generate_dev_plan():
    doc = Document()
    doc.add_heading("钻井液品牌网站-项目开发计划", level=0)
    add_paragraph(doc, "版本:V1.0")
    add_paragraph(doc, "日期:2026-03-04")
    add_paragraph(doc, "编写单位:川庆钻探工程公司(示例)")
    add_paragraph(doc, "项目名称:钻井液品牌网站建设项目")
    doc.add_page_break()

    add_heading(doc, "1 项目概述", level=1)
    add_heading(doc, "1.1 项目背景", level=2)
    add_paragraph(
        doc,
        "随着公司钻井液业务在国内外市场的不断拓展,对外宣传窗口和品牌形象建设的要求日益提高。"
        "现有官网在多语言支持、产品与技术体系展示、生产制造能力呈现等方面已难以满足当前业务发展的需要。"
        "为系统性展示公司钻井液品牌形象和技术优势,需建设统一的“钻井液品牌网站”。",
    )

    add_heading(doc, "1.2 建设目标", level=2)
    add_paragraph(
        doc,
        "本项目拟通过建设钻井液品牌网站,实现以下目标:\n"
        "• 搭建多语言对外宣传平台,面向中、英、俄、西等不同语种客户;\n"
        "• 全面展示公司钻井液产品、体系、技术、实验室/团队、生产制造等核心能力;\n"
        "• 形成规范统一的页面结构和信息架构,便于后续维护与扩展;\n"
        "• 为公司后续数字化营销、客户服务等系统做支撑和预留接口。",
    )

    add_heading(doc, "1.3 项目范围", level=2)
    add_paragraph(
        doc,
        "本项目范围包括:\n"
        "• 前端多语言静态网站的设计与开发;\n"
        "• 统一导航与页脚、产品与技术展示页面、生产制造模块选项卡逻辑实现;\n"
        "• 基本访问统计与运行监控方案设计(如纳入公司统一监控体系);\n"
        "• 部署上线、试运行以及验收阶段的支持工作。\n"
        "本项目暂不包含后台内容管理系统(CMS)和复杂交互业务,如有需要可在后续阶段扩展。",
    )

    add_heading(doc, "1.4 项目里程碑", level=2)
    add_paragraph(
        doc,
        "初步拟定的项目里程碑如下(具体时间根据实际立项日期调整):\n"
        "• M1:项目启动与需求调研完成;\n"
        "• M2:软件需求说明书评审通过;\n"
        "• M3:概要设计与详细设计评审通过;\n"
        "• M4:开发与联调完成,进入系统测试阶段;\n"
        "• M5:测试通过,形成测试报告与上线申请;\n"
        "• M6:系统上线运行,完成项目验收。",
    )

    add_heading(doc, "2 项目组织与职责分工", level=1)
    add_heading(doc, "2.1 项目组织架构", level=2)
    add_paragraph(
        doc,
        "本项目建议成立项目领导小组和项目实施组:\n"
        "• 项目领导小组:由公司分管领导、信息化主管部门领导及业务部门负责人组成,负责决策重大事项;\n"
        "• 项目实施组:由业务代表、产品经理、架构师、开发工程师、测试工程师及运维人员组成,负责具体实施工作。",
    )
    add_diagram_placeholder(
        doc,
        "图 2-1 项目组织结构示意图",
        "建议在此处插入项目组织结构图,包括项目领导小组、项目经理、业务组、技术组、测试组等层级关系。",
    )

    add_heading(doc, "2.2 各角色职责", level=2)
    add_paragraph(
        doc,
        "• 项目负责人:对项目整体目标、范围、进度和质量负责,协调各方资源;\n"
        "• 业务负责人:明确业务需求,确认页面文案和业务逻辑;\n"
        "• 架构师:负责网站总体技术路线、架构设计和关键技术决策;\n"
        "• 开发工程师:实现前端页面和交互逻辑,完成多语言和导航逻辑;\n"
        "• 测试工程师:制定测试计划和测试用例,执行各类测试并出具测试报告;\n"
        "• 运维工程师:负责部署、监控和日常运行维护工作。",
    )

    add_heading(doc, "3 开发计划与进度安排", level=1)
    add_heading(doc, "3.1 阶段划分", level=2)
    add_paragraph(
        doc,
        "项目总体建议划分为以下阶段:\n"
        "• 需求分析阶段:完成需求调研、需求确认和《软件需求说明书》编制;\n"
        "• 设计阶段:完成系统概要设计和详细设计,输出相应设计文档;\n"
        "• 开发与单元测试阶段:按设计完成前端页面开发和单元测试;\n"
        "• 集成与系统测试阶段:完成多语言整体联调和系统级测试;\n"
        "• 部署与试运行阶段:在目标环境中部署系统并进行试运行;\n"
        "• 验收阶段:根据验收标准完成项目验收工作。",
    )

    add_heading(doc, "3.2 进度计划甘特图(示意)", level=2)
    add_paragraph(
        doc,
        "本节可在 Word 中插入具体的项目进度甘特图,此处给出文字说明占位:\n"
        "• 第 1-2 周:需求调研与需求说明书编制;\n"
        "• 第 3-4 周:概要设计与详细设计;\n"
        "• 第 5-8 周:开发与单元测试;\n"
        "• 第 9-10 周:系统测试与问题修复;\n"
        "• 第 11 周:上线准备与部署;\n"
        "• 第 12 周:试运行与项目验收。",
    )

    add_heading(doc, "4 质量保证与配置管理", level=1)
    add_heading(doc, "4.1 质量保证措施", level=2)
    add_paragraph(
        doc,
        "• 严格按照公司软件开发流程执行,关键文档需经过评审;\n"
        "• 采用代码审查机制,保证代码质量与可维护性;\n"
        "• 按照测试大纲执行功能测试、兼容性测试和回归测试;\n"
        "• 对发现的问题进行缺陷跟踪和闭环管理。",
    )

    add_heading(doc, "4.2 配置管理", level=2)
    add_paragraph(
        doc,
        "• 采用统一的代码版本管理工具(如 Git),规范分支策略;\n"
        "• 对关键配置项(如部署路径、语言目录结构)进行文档化说明;\n"
        "• 构建脚本和部署脚本纳入配置管理,避免人工操作差错。",
    )

    add_heading(doc, "5 风险分析与应对措施", level=1)
    add_paragraph(
        doc,
        "• 需求变更风险:通过需求评审和变更控制流程,降低频繁大范围变更带来的影响;\n"
        "• 进度风险:合理安排资源投入,必要时通过加班或增加人手保障关键节点;\n"
        "• 内容准备滞后风险:提前与业务部门沟通,确保多语言文案按期交付;\n"
        "• 技术风险:重点关注多语言链接一致性、选项卡参数逻辑等实现细节,提前进行技术验证。",
    )

    add_heading(doc, "6 项目管理与沟通机制", level=1)
    add_paragraph(
        doc,
        "• 例会机制:项目实施期间,建议每周召开至少一次项目例会,通报进展、梳理问题和风险;\n"
        "• 重大事项汇报:涉及范围、进度、费用等重大调整时,由项目负责人及时向项目领导小组汇报;\n"
        "• 文档管理:所有计划、需求、设计、测试等文档统一纳入项目文档库管理,版本可追溯;\n"
        "• 沟通渠道:建立项目微信群或 Teams 频道,方便跨部门即时沟通,重要结论需在工作记录或会议纪要中沉淀。",
    )

    add_heading(doc, "7 项目验收与成果移交", level=1)
    add_paragraph(
        doc,
        "项目完成后,应依据合同或立项批复中的要求开展正式验收工作:\n"
        "• 由项目领导小组或指定验收小组组织验收会议;\n"
        "• 依据软件需求说明书、设计文档和测试报告进行现场演示和资料审查;\n"
        "• 验收通过后,形成《项目验收报告》并完成项目成果移交,包括源代码、部署脚本、配置说明及所有文档;\n"
        "• 项目移交给运维或后续负责单位,进入日常运行维护阶段。",
    )

    ensure_docs_dir()
    output_path = os.path.join("docs", "钻井液品牌网站-项目开发计划.docx")
    doc.save(output_path)


# 2-钻井液品牌网站-软件需求说明书
def generate_srs():
    doc = Document()
    doc.add_heading("钻井液品牌网站-软件需求说明书", level=0)
    add_paragraph(doc, "版本:V1.0")
    add_paragraph(doc, "日期:2026-03-04")
    add_paragraph(doc, "编写单位:川庆钻探工程公司(示例)")
    doc.add_page_break()

    add_heading(doc, "1 引言", level=1)
    add_heading(doc, "1.1 编写目的", level=2)
    add_paragraph(
        doc,
        "本软件需求说明书用于系统、完整地描述“钻井液品牌网站”的业务需求和功能需求,"
        "为后续的概要设计、详细设计、开发实现、测试验证及验收评审提供统一依据。"
        "本说明书既面向项目技术团队,也面向项目管理和业务领导层。",
    )

    add_heading(doc, "1.2 项目背景", level=2)
    add_paragraph(
        doc,
        "钻井液业务是公司核心业务板块之一,对外宣传和品牌展示需求迫切。"
        "现有官网在内容组织、页面风格、多语言支持、产品与技术体系呈现等方面存在不足,"
        "难以满足领导决策、客户了解和市场拓展的多重诉求。"
        "基于此,公司决定建设统一的钻井液品牌网站,通过多语言形式集中展示公司相关能力。",
    )

    add_heading(doc, "1.3 读者对象", level=2)
    add_paragraph(
        doc,
        "本说明书适用于以下读者:\n"
        "• 领导与管理层:了解系统建设目标和主要功能;\n"
        "• 业务部门人员:核对业务需求的完整性与准确性;\n"
        "• 架构师和开发工程师:依据本说明书进行系统设计和实现;\n"
        "• 测试工程师:依据需求编写测试用例和测试场景;\n"
        "• 运维人员:理解系统运行特性和部署要求。",
    )

    add_heading(doc, "1.4 名词定义与缩写", level=2)
    add_paragraph(
        doc,
        "• 钻井液品牌网站:指本项目中建设的多语言对外展示网站;\n"
        "• 多语言版本:Chinese、English、Russian、Spain 四个语种的网站页面集合;\n"
        "• 前台:面向外部访客的网页界面部分;\n"
        "• 体系:在钻井液领域形成的技术方案与产品组合;\n"
        "• 生产制造模块:突出生产基地、车间、质量检验实验室和仓库能力的展示模块。",
    )

    add_heading(doc, "1.5 参考资料", level=2)
    add_paragraph(
        doc,
        "• 公司现有官网及宣传手册;\n"
        "• 公司信息化建设相关管理制度和标准规范;\n"
        "• 与钻井液业务部门的调研记录和访谈纪要;\n"
        "• 行业内同类企业官网的调研结果(如友商网站)。",
    )

    add_heading(doc, "2 系统总体描述", level=1)
    add_heading(doc, "2.1 系统目标", level=2)
    add_paragraph(
        doc,
        "系统目标可概括为“一个平台、四种语言、统一形象、稳定可靠”四个方面:\n"
        "• 一个平台:建设统一的钻井液品牌对外展示平台;\n"
        "• 四种语言:提供中、英、俄、西四种语言版本;\n"
        "• 统一形象:保持公司品牌视觉形象一致,强化品牌辨识度;\n"
        "• 稳定可靠:系统运行稳定,易于维护与扩展。",
    )

    add_heading(doc, "2.2 用户角色与使用场景", level=2)
    add_paragraph(
        doc,
        "• 外部访客:包括国内外油公司客户、合作伙伴及潜在客户,主要通过浏览器访问网站,了解公司能力;\n"
        "• 内部员工:在与客户交流时,用于演示公司产品与技术体系;\n"
        "• 运维人员:负责网站的部署、监控以及静态内容更新。",
    )

    add_heading(doc, "2.3 业务功能范围", level=2)
    add_paragraph(
        doc,
        "本系统业务功能范围包括但不限于:\n"
        "• 首页门户展示;\n"
        "• 关于我们板块;\n"
        "• 钻井液产品展示及产品类型详情;\n"
        "• 钻井液体系展示及体系详情;\n"
        "• 钻井液技术展示及技术详情;\n"
        "• 实验室与服务团队介绍;\n"
        "• 生产制造板块(含选项卡及图文展示);\n"
        "• 联系我们及联系方式展示;\n"
        "• 统一的导航和页脚链接逻辑。",
    )

    add_diagram_placeholder(
        doc,
        "图 2-1 网站业务功能结构图",
        "建议在此处插入网站功能模块结构图,展示首页、产品、体系、技术、实验室/团队、生产制造、联系我们等模块关系。",
    )

    add_heading(doc, "3 功能性需求", level=1)
    add_heading(doc, "3.1 多语言与导航需求", level=2)
    add_paragraph(
        doc,
        "• 系统需提供中、英、俄、西四种语言版本,顶部提供语言切换按钮;\n"
        "• 各语言版本的导航结构保持一致,导航名称采用对应语言文案;\n"
        "• 切换语言时,优先保持业务上下文的一致性(如从英文产品详情跳转到相同产品的西语详情页);\n"
        "• 导航点击后,页面应在同窗口打开对应模块。",
    )

    add_heading(doc, "3.2 产品展示需求", level=2)
    add_paragraph(
        doc,
        "• 按产品小类划分展示产品列表,支持点击进入产品类型页面;\n"
        "• 产品类型页面通过 URL 参数 data 和 title 标识具体分类;\n"
        "• 产品详情页需展示产品名称、所属系列、主要参数、适用工况、优势说明等内容;\n"
        "• 页脚中所有产品相关链接需准确指向对应产品类型页面。",
    )

    add_heading(doc, "3.3 体系展示需求", level=2)
    add_paragraph(
        doc,
        "• 展示钻井液体系清单,包含名称、适用场景简要说明;\n"
        "• 详情页需说明体系组成、性能指标、典型应用等重要信息;\n"
        "• 不同语言版本的体系详情页在内容逻辑上保持一致,由业务部门提供翻译文本。",
    )

    add_heading(doc, "3.4 技术展示需求", level=2)
    add_paragraph(
        doc,
        "• 展示代表性技术列表,如 LONGLARTEC、HIPRESATEC 等;\n"
        "• 技术详情页应突出技术原理、关键性能、应用案例等信息;\n"
        "• 页脚技术栏目中的链接应与技术详情页面一一对应。",
    )

    add_heading(doc, "3.5 实验室与团队展示需求", level=2)
    add_paragraph(
        doc,
        "• 实验室相关页面需展示实验条件、设备情况、测试能力等;\n"
        "• 服务团队相关页面需强调服务经验、项目覆盖区域和服务模式;\n"
        "• 允许通过图片轮播等方式展示实验场景和服务团队风采。",
    )

    add_heading(doc, "3.6 生产制造模块需求", level=2)
    add_paragraph(
        doc,
        "• 生产制造模块采用选项卡形式展示多个子板块,包括生产基地、车间、质量检验实验室和仓库等;\n"
        "• 支持通过 URL 参数 tab 定位到特定选项卡,例如 manu.html?tab=2 直接进入“车间”页签;\n"
        "• 页脚中“生产制造/Fabricación”等栏目链接带有相应 tab 参数,方便从其他页面直接跳转;\n"
        "• 各子页面需通过文字和图片结合的方式,全面展示生产能力和质量管理体系。",
    )

    add_heading(doc, "3.7 联系我们需求", level=2)
    add_paragraph(
        doc,
        "• 至少展示公司总部的地址、电话、传真、邮箱等信息;\n"
        "• 可选展示境外机构联系方式,如中东分公司等;\n"
        "• 文案应在不同语言版本中准确翻译,并定期由业务部门核对更新。",
    )

    add_heading(doc, "4 非功能性需求", level=1)
    add_paragraph(
        doc,
        "非功能性需求主要包括性能、可用性、安全性、可维护性和易用性等方面,"
        "用于保证网站长期稳定、安全、高效地运行。",
    )

    add_heading(doc, "4.1 性能需求", level=2)
    add_paragraph(
        doc,
        "• 普通访问条件下,首页和主要内容页面加载时间不超过 3 秒;\n"
        "• 支持至少数百并发用户同时访问而无明显性能下降;\n"
        "• 图片资源应做压缩和缓存配置,避免过大文件影响加载速度。",
    )

    add_heading(doc, "4.2 可用性与可靠性", level=2)
    add_paragraph(
        doc,
        "• 年度可用性目标不低于 99%\n"
        "• 建议配置基础监控,对关键 URL 进行可用性监测,并在出现异常时告警;\n"
        "• 部署环境需具备容错能力,如通过服务器冗余或负载均衡提高可靠性(如有条件)。",
    )

    add_heading(doc, "4.3 安全性", level=2)
    add_paragraph(
        doc,
        "• 网站仅用于信息展示,不涉及用户登录和敏感数据收集,安全风险较低;\n"
        "• 部署时须开启基础安全配置,防止目录遍历、脚本注入等常见攻击;\n"
        "• 建议采用 HTTPS 协议,为对外访问提供加密保护。",
    )

    add_heading(doc, "4.4 可维护性", level=2)
    add_paragraph(
        doc,
        "• 代码结构清晰,目录规范,方便后续维护人员快速理解;\n"
        "• 公共组件(如页脚、导航、语言切换等)应抽取为统一模块,避免重复实现;\n"
        "• 对重要业务逻辑(如 URL 参数解析、选项卡切换逻辑)应有简要注释说明。",
    )

    add_heading(doc, "5 验收标准", level=1)
    add_paragraph(
        doc,
        "• 功能验收:本说明书列出的功能点全部实现且测试通过;\n"
        "• 外观与文案验收:页面布局、配色、图片以及多语言文案经业务部门及领导审阅确认;\n"
        "• 非功能验收:性能、可用性和安全性满足公司相关标准或本说明书要求;\n"
        "• 文档验收:开发计划、需求、设计、测试等文档齐全并归档。",
    )

    add_heading(doc, "6 附录:页面清单与链接规范", level=1)
    add_paragraph(
        doc,
        "本附录用于整理关键页面及其链接规范,便于领导和运维人员整体把握网站结构。"
        "正式文档中可根据实际最终页面进行补充和调整:\n"
        "• 首页:/{lang}/index.html;\n"
        "• 关于我们:/{lang}/about/about.html;\n"
        "• 产品列表:/{lang}/product/product.html;\n"
        "• 产品类型详情:/{lang}/product/product_type.html?data=xx&title=yy;\n"
        "• 体系列表及详情:/{lang}/system/system.html 与 system_detail.html?data=xx;\n"
        "• 技术列表及详情:/{lang}/technology/technology.html 与 technology_detail.html?data=xx;\n"
        "• 实验室与团队:/{lang}/team_lab 下各类页面;\n"
        "• 生产制造:/{lang}/manu/manu.html?tab=n;\n"
        "• 联系我们:/{lang}/contact/contact.html。",
    )

    ensure_docs_dir()
    output_path = os.path.join("docs", "钻井液品牌网站-软件需求说明书.docx")
    doc.save(output_path)


# 3-钻井液品牌网站-系统概要设计说明书
def generate_high_level_design():
    doc = Document()
    doc.add_heading("钻井液品牌网站-系统概要设计说明书", level=0)
    add_paragraph(doc, "版本:V1.0")
    add_paragraph(doc, "日期:2026-03-04")
    add_paragraph(doc, "编写:架构与设计小组")
    doc.add_page_break()

    add_heading(doc, "1 概述", level=1)
    add_heading(doc, "1.1 编写目的", level=2)
    add_paragraph(
        doc,
        "本概要设计说明书在软件需求说明书的基础上,从系统架构与模块划分的角度描述钻井液品牌网站的整体技术方案,"
        "为详细设计和开发实现提供指导依据。",
    )

    add_heading(doc, "1.2 适用范围", level=2)
    add_paragraph(
        doc,
        "本说明书主要适用于:\n"
        "• 系统架构师和开发人员,理解整体设计思路和模块划分;\n"
        "• 测试和运维人员,了解系统结构与关键组件;\n"
        "• 项目管理和领导层,从宏观层面把握系统技术实现路径。",
    )

    add_heading(doc, "2 总体架构设计", level=1)
    add_paragraph(
        doc,
        "钻井液品牌网站采用前后端简化架构,前端为多语言静态页面,后端由 Web 服务器或反向代理提供静态资源访问服务。"
        "如后续接入日志分析、监控平台等,可在本架构基础上扩展。",
    )
    add_diagram_placeholder(
        doc,
        "图 2-1 系统总体架构图",
        "建议绘制“浏览器-反向代理/Web 服务器-静态资源目录-监控/日志系统”的整体架构图。",
    )

    add_heading(doc, "2.1 部署架构", level=2)
    add_paragraph(
        doc,
        "• 前端静态资源部署于公司内部或云上 Web 服务器;\n"
        "• 通过 Nginx 等反向代理对外提供统一访问入口;\n"
        "• 可接入公司统一监控与日志平台,实现访问统计与异常监控;\n"
        "• 采用 HTTPS 对外开放,提高安全性。",
    )

    add_heading(doc, "2.2 模块划分", level=2)
    add_paragraph(
        doc,
        "从功能维度划分,系统主要模块包括:\n"
        "• 公共模块:头部导航、页脚、多语言切换、公共样式等;\n"
        "• 首页模块:多语言首页内容与轮播展示;\n"
        "• 产品模块:产品列表与产品类型详情页;\n"
        "• 体系模块:体系列表与详情页;\n"
        "• 技术模块:技术列表与详情页;\n"
        "• 实验室与团队模块:实验室介绍、团队介绍等;\n"
        "• 生产制造模块:选项卡页面及子页面包含的图文内容;\n"
        "• 联系我们模块:联系方式展示页面。",
    )

    add_diagram_placeholder(
        doc,
        "图 2-2 功能模块划分示意图",
        "建议绘制模块方框图,各模块之间通过箭头表示导航关系和复用关系。",
    )

    add_heading(doc, "3 前端总体设计", level=1)
    add_heading(doc, "3.1 页面结构设计", level=2)
    add_paragraph(
        doc,
        "页面结构采用统一的布局框架:顶部导航区 + 主内容区 + 页脚区。"
        "导航和页脚通过公共样式与组件统一控制,主内容区根据不同模块进行布局。",
    )

    add_heading(doc, "3.2 路由与目录设计", level=2)
    add_paragraph(
        doc,
        "• 按语种划分顶层目录:/Chinese、/English、/Russian、/Spain;\n"
        "• 各语种下按业务模块划分子目录,如 /product、/system、/technology、/team_lab、/manu、/contact 等;\n"
        "• 详情页通过 URL 参数 data 等区分不同实体;\n"
        "• 生产制造模块通过 URL 参数 tab 控制选项卡显示。",
    )

    add_heading(doc, "3.3 公共样式与组件设计", level=2)
    add_paragraph(
        doc,
        "• 统一定义基础样式文件(如 index.css、公共 footer.css 等);\n"
        "• 通过 JavaScript 封装语言切换、导航下划线动画、选项卡切换等公共逻辑;\n"
        "• 鼓励对头部导航和页脚采用 include 或模板方式统一维护。",
    )

    add_heading(doc, "4 安全与性能设计概述", level=1)
    add_heading(doc, "4.1 安全设计概述", level=2)
    add_paragraph(
        doc,
        "• 对外提供 HTTPS 访问,防止中间人攻击;\n"
        "• Web 服务器限制目录浏览与脚本执行,避免目录遍历和任意文件访问;\n"
        "• 对引用的第三方脚本和样式进行审查,避免引入不必要的外部依赖。",
    )

    add_heading(doc, "4.2 性能设计概述", level=2)
    add_paragraph(
        doc,
        "• 采用浏览器缓存策略,对 CSS、JS、图片等资源设置合理缓存期限;\n"
        "• 对图片进行压缩与尺寸控制,避免超大图片影响首屏加载;\n"
        "• 对共用脚本进行合并与压缩,减少网络请求次数。",
    )

    add_heading(doc, "3 模块间关系与依赖", level=1)
    add_paragraph(
        doc,
        "从技术实现角度看,各业务模块之间既相互独立又存在一定复用关系:\n"
        "• 公共模块为其他模块提供统一的导航、页脚、样式和脚本支持;\n"
        "• 产品、体系和技术模块在页面结构和参数规则上具有相似性,可共享部分脚本逻辑;\n"
        "• 实验室与团队、生产制造模块大量复用图片资源与版式布局;\n"
        "• 联系我们模块在所有语言版本中共用统一的数据源和展示模板。",
    )

    ensure_docs_dir()
    output_path = os.path.join("docs", "钻井液品牌网站-系统概要设计说明书.docx")
    doc.save(output_path)


# 4-钻井液品牌网站-详细设计说明书
def generate_detail_design():
    doc = Document()
    doc.add_heading("钻井液品牌网站-详细设计说明书", level=0)
    add_paragraph(doc, "版本:V1.0")
    add_paragraph(doc, "日期:2026-03-04")
    add_paragraph(doc, "编写:开发与前端设计小组")
    doc.add_page_break()

    add_heading(doc, "1 概述", level=1)
    add_heading(doc, "1.1 文档目的", level=2)
    add_paragraph(
        doc,
        "本详细设计说明书在概要设计基础上,对各模块的页面结构、脚本逻辑、参数规则等进行更细粒度的说明,"
        "以指导开发人员具体实现,并为测试与维护人员提供技术参考。",
    )

    add_heading(doc, "2 公共部分详细设计", level=1)
    add_heading(doc, "2.1 头部导航组件", level=2)
    add_paragraph(
        doc,
        "• 导航结构:包含 logo 区、主导航菜单和语言切换区;\n"
        "• 菜单项:不同语言版本的文案与路径设置对应;\n"
        "• 交互逻辑:当前页面对应菜单项添加高亮样式(如 red_bold),下划线动画使用 jQuery 计算位置;\n"
        "• 语言切换:点击相应语言时,根据当前路径跳转到对应语言下的等效页面(如有映射规则)。",
    )

    add_heading(doc, "2.2 页脚组件", level=2)
    add_paragraph(
        doc,
        "• 页脚分为多个板块:产品、体系、技术、实验室/团队、生产制造、联系我们;\n"
        "• 每个板块包含若干链接,链接 URL 为绝对路径,指向当前语种下的对应页面;\n"
        "• 页脚中生产制造相关链接须带上 tab 参数,用于定位到生产制造页面对应选项卡。",
    )

    add_heading(doc, "2.3 公共脚本模块", level=2)
    add_paragraph(
        doc,
        "• include.js:用于处理页面中 <include> 标签,将子页面内容嵌入主页面;\n"
        "• public.js:封装语言切换、导航下划线移动等公共逻辑;\n"
        "• 各页面业务脚本(如 system_detail.js、technology.js)负责本页面特定交互效果。",
    )

    add_heading(doc, "3 各业务模块详细设计", level=1)
    add_heading(doc, "3.1 产品模块详细设计", level=2)
    add_paragraph(
        doc,
        "• 文件结构:/pages/{lang}/product/product.html 及 product_type.html 等;\n"
        "• 参数约定:通过 URL 参数 data 与 title 确定产品类型;\n"
        "• 页面元素:列表区、详情区、图片展示区等;\n"
        "• 页脚链接:指向 product_type.html 对应 data 值,确保导航统一。",
    )

    add_heading(doc, "3.2 体系与技术模块详细设计", level=2)
    add_paragraph(
        doc,
        "• 体系和技术模块的文件与参数结构类似产品模块;\n"
        "• 体系详情页和技术详情页需在页面中特定位置渲染标题、简介和详细说明;\n"
        "• 通过脚本从 URL 中解析 data 参数,用于控制页面内容呈现(如有需要)。",
    )

    add_heading(doc, "3.3 实验室与团队模块详细设计", level=2)
    add_paragraph(
        doc,
        "• 采用多个页面配合轮播或图文展示组件呈现实验室和团队信息;\n"
        "• 页脚中 R&D 中心、实验室、服务团队等链接与对应页面关联;\n"
        "• 如采用 Swiper 等轮播库,需要在页面底部引入其 CSS 和 JS 资源,并初始化相应实例。",
    )

    add_heading(doc, "3.4 生产制造模块详细设计", level=2)
    add_paragraph(
        doc,
        "• 核心页面:/pages/{lang}/manu/manu.html;\n"
        "• 选项卡结构:通过 div.tab 和 div.tab-content 组织四个子模块;\n"
        "• 切换函数 openTab:负责隐藏/显示 tab-content,并处理 active 样式切换;\n"
        "• URL 参数解析:页面加载完成后从 window.location.search 中解析 tab 参数,"
        "根据映射关系调用相应 .tab 元素的 click 事件,实现默认选中不同选项卡;\n"
        "• 页脚链接:在 Chinese/English/Russian/Spain 四个语种的 manu 页脚中,将生产制造相关链接改为带 tab 参数的形式。",
    )
    add_diagram_placeholder(
        doc,
        "图 3-1 生产制造模块页面结构示意图",
        "建议插入选项卡结构示意图,展示 tab 区和内容区的层次关系。",
    )

    add_heading(doc, "4 流程与时序说明", level=1)
    add_paragraph(
        doc,
        "本章节可补充页面加载流程、语言切换流程等简单时序说明,必要时可在 Word 中插入时序图,"
        "此处以文字形式给出:\n"
        "1)用户访问 manu.html 页面;\n"
        "2)页面完成基础渲染后,执行公共脚本;\n"
        "3)脚本解析 URL 中的 tab 参数;\n"
        "4)根据 tab 参数触发对应选项卡点击事件;\n"
        "5)渲染对应子页面内容。",
    )

    add_heading(doc, "5 代码与资源组织建议", level=1)
    add_paragraph(
        doc,
        "为方便后续维护,建议在实现时遵循以下组织方式:\n"
        "• 将不同语种公共样式抽取为同一套 CSS,只在极少数语种差异处单独覆盖;\n"
        "• 将通用脚本(如 include.js、public.js)放置在统一目录下,避免多处拷贝;\n"
        "• 对图片资源按模块进行归类存放,例如 home、product、system、technology、team_lab、manu 等子目录;\n"
        "• 在代码注释中清晰标注每个页面的用途、入口路径和与其它页面的跳转关系。",
    )

    ensure_docs_dir()
    output_path = os.path.join("docs", "钻井液品牌网站-详细设计说明书.docx")
    doc.save(output_path)


# 5-钻井液品牌网站-测试大纲
def generate_test_plan():
    doc = Document()
    doc.add_heading("钻井液品牌网站-测试大纲", level=0)
    add_paragraph(doc, "版本:V1.0")
    add_paragraph(doc, "日期:2026-03-04")
    add_paragraph(doc, "编写:测试与质量保障小组")
    doc.add_page_break()

    add_heading(doc, "1 引言", level=1)
    add_heading(doc, "1.1 编写目的", level=2)
    add_paragraph(
        doc,
        "本测试大纲用于指导钻井液品牌网站的测试工作,明确测试范围、测试方法、测试环境、质量标准等,"
        "为形成具体测试用例和测试报告奠定基础。",
    )

    add_heading(doc, "1.2 测试目标", level=2)
    add_paragraph(
        doc,
        "• 验证网站功能实现是否符合软件需求说明书要求;\n"
        "• 确保多语言页面在主流浏览器中的展示效果一致、链接正确;\n"
        "• 确保生产制造模块选项卡及 URL 参数逻辑正确;\n"
        "• 发现并推动修复潜在缺陷,提升系统稳定性和用户体验。",
    )

    add_heading(doc, "2 测试范围与测试项", level=1)
    add_heading(doc, "2.1 功能测试范围", level=2)
    add_paragraph(
        doc,
        "• 导航与页脚:包括顶部导航和页脚所有链接的正确性;\n"
        "• 多语言切换:四种语言版本切换的可用性和正确性;\n"
        "• 产品模块:产品列表与产品类型详情页;\n"
        "• 体系模块:体系列表与详情页;\n"
        "• 技术模块:技术列表与详情页;\n"
        "• 实验室与团队模块:各子页面内容展示;\n"
        "• 生产制造模块:选项卡和 URL 参数控制逻辑;\n"
        "• 联系我们:联系方式展示正确性。",
    )

    add_heading(doc, "2.2 非功能测试范围", level=2)
    add_paragraph(
        doc,
        "• 兼容性测试:在主流浏览器和不同分辨率下的展示效果;\n"
        "• 性能简单测试:页面加载时间和并发访问基本表现;\n"
        "• 安全性测试(基础):检查是否存在明显的安全风险,如目录遍历等。",
    )

    add_heading(doc, "3 测试策略与方法", level=1)
    add_paragraph(
        doc,
        "• 功能测试采用黑盒测试方法,以需求为依据设计测试用例;\n"
        "• 回归测试在修复缺陷后执行,确保不引入新的问题;\n"
        "• 兼容性测试通过人工与自动化工具结合进行;\n"
        "• 测试结果通过缺陷管理工具或缺陷列表进行跟踪和关闭。",
    )

    add_heading(doc, "4 测试环境与工具", level=1)
    add_paragraph(
        doc,
        "• 测试环境建议与生产环境配置尽量接近,包括操作系统、Web 服务器软件版本等;\n"
        "• 测试浏览器包括 Chrome、Edge、Firefox、Safari 等;\n"
        "• 可使用浏览器开发者工具、网络抓包工具等辅助分析问题;\n"
        "• 如有条件,可使用简单的性能测试工具(如 JMeter)进行页面访问压力测试。",
    )

    add_heading(doc, "5 测试用例设计原则", level=1)
    add_paragraph(
        doc,
        "• 覆盖核心业务路径,如从首页进入各模块并返回首页;\n"
        "• 覆盖所有导航与页脚链接的点击场景;\n"
        "• 覆盖多语言切换后的关键页面内容检查;\n"
        "• 覆盖生产制造模块中使用不同 tab 参数的访问场景;\n"
        "• 对重要页面至少设计一条异常场景用例(如错误 URL 参数)。",
    )

    add_heading(doc, "6 测试进度与人员安排", level=1)
    add_paragraph(
        doc,
        "• 测试阶段开始前完成测试大纲和测试用例评审;\n"
        "• 根据开发进度安排多轮测试迭代;\n"
        "• 明确测试负责人和测试执行人员,确保测试资源充足;\n"
        "• 测试阶段结束后出具测试总结报告,为项目验收提供依据。",
    )

    add_heading(doc, "7 测试成果与缺陷管理", level=1)
    add_paragraph(
        doc,
        "• 测试成果包括测试用例、测试记录、缺陷列表和测试报告等文档;\n"
        "• 缺陷管理可采用电子表格或缺陷管理系统记录,至少包含编号、标题、严重级别、状态、发现版本、修复版本等字段;\n"
        "• 在项目验收前,所有高优先级和中优先级缺陷需得到关闭或明确豁免说明;\n"
        "• 测试阶段经验教训应形成简要总结,供后续类似项目参考。",
    )

    ensure_docs_dir()
    output_path = os.path.join("docs", "钻井液品牌网站-测试大纲.docx")
    doc.save(output_path)


def main():
    generate_dev_plan()
    generate_srs()
    generate_high_level_design()
    generate_detail_design()
    generate_test_plan()
    print("All brand site Word documents generated under docs/.")


if __name__ == "__main__":
    main()