#!/usr/bin/env python # -*- coding: utf-8 -*- """ 根据已有的需求 Markdown,生成结构化的产品需求文档(PRD)到需求文档.docx。 """ from pathlib import Path from docx import Document def build_prd(doc: Document): # 标题 doc.add_heading("OA 系统产品需求文档(PRD)", level=0) doc.add_paragraph("版本:v1.0") doc.add_paragraph("说明:依据《需求.md》内容整理的产品需求文档。") # 一、总体需求 doc.add_heading("一、总体需求", level=1) doc.add_heading("1.1 管理要求", level=2) doc.add_paragraph("围绕项目全生命周期管理,要求可视化流程、状态跟踪、审核留痕。") doc.add_heading("1.2 业务流程", level=2) doc.add_paragraph("支持从商机立项→投标→合同→项目启动→成果→回款/请款→报表的端到端流程。") doc.add_paragraph("注:实际可能存在直接启动(不投标/不签合同)的场景,系统需支持项目状态标识。") # 二、功能建设(五大板块) doc.add_heading("二、功能建设", level=1) doc.add_paragraph("需求集中在项目过程、状态,以及产值与回款统计,功能分为五个板块。") # 2.1 商机(立项)管理 doc.add_heading("2.1 商机(立项)管理", level=2) doc.add_paragraph("主流程:立项 → 审核") doc.add_paragraph("立项:商务提交表单,经营管理部及总经理依次审核。") doc.add_paragraph("投标:修改项目状态为“投标”,可上传附件。") doc.add_paragraph("合同:修改项目状态为“已签合同”,可上传合同附件。") doc.add_paragraph("项目查询:按项目编号、名称、服务内容、状态等查询,展示状态与金额。") doc.add_paragraph("规则:项目编号=年份+序号(当年递增);服务内容可选结算审计/概算/清单控制价/工程咨询/跟踪审计/项目管理/工程监理。") doc.add_paragraph("结算类项目需提交初稿、对账、最终成果;其他类型可直接提交最终成果。") # 2.2 项目过程管理 doc.add_heading("2.2 项目过程管理", level=2) doc.add_paragraph("主流程:启动 → 成果 → 进度查询") doc.add_paragraph("项目启动:可关联立项;可多次启动;可多人指派;启动单关联立项数据自动导入。") doc.add_paragraph("启动编号规则:立项编号+项目类型数字+启动序号(例:25-3-2-4)。") doc.add_paragraph("服务内容子项分配:结算审计/工程咨询/跟踪审计/项目管理/工程监理等子项多选。") doc.add_paragraph("成果管理:结算类需初稿/对账/最终成果;多人提交需组长与领导审核;初稿与对账差异大需提醒。") doc.add_paragraph("进度查询:按名称、客户、执业者等条件查询执行中项目。") doc.add_paragraph("计算公式参考:") doc.add_paragraph("工程咨询:鄂价房字[2001]107号 * 折扣率") doc.add_paragraph("工程造价:鄂价工服规[2012]149号 * 折扣率") doc.add_paragraph("工程监理:发改价格[2007]670号 * 专业/复杂度/高程调整 * 折扣率") doc.add_paragraph("工程设计:计价格[2002]10号 * 折扣率") doc.add_paragraph("工程代建:财建[2016]504号 * 折扣率") doc.add_paragraph("招标代理:鄂建文〔2023〕35号 * 折扣率") # 2.3 财务管理 doc.add_heading("2.3 财务管理", level=2) doc.add_paragraph("主流程:开票请款 → 回款") doc.add_paragraph("回款流程:商务选项目(有合同或正式成果),提交开票申请;财务开票并填金额;回款后录入回款金额,状态变为“已回款”。") doc.add_paragraph("请款流程:商务提交请款,GM 审核,出纳放款,状态变为“已付款”。") # 2.4 报表管理 doc.add_heading("2.4 报表管理", level=2) doc.add_paragraph("项目报表:项目明细表(立项到回款全链路),项目汇总表(按状态、负责人汇总)。") doc.add_paragraph("产值报表:产值明细表(按执业者完成进度分解),产值汇总表(执业者维度、时间段统计)。") doc.add_paragraph("产值计算比例参考:结算审计30/30/10/30;工程咨询30/20/50;跟踪审计60/40;项目管理40/60;工程监理60/40。") doc.add_paragraph("财务报表:应收账款汇总/明细(按客户)、应付账款明细/汇总(对应请款)。") # 2.5 系统设置 doc.add_heading("2.5 系统设置", level=2) doc.add_paragraph("组织架构:自定义部门层级。") doc.add_paragraph("账号管理:账号角色、部门负责人/员工,权限可控;默认直属领导审核;执业人员仅看成果相关,财务看发票/请款。") doc.add_paragraph("系统版本:PC 版(资料提交、附件上传、报表查询)、手机版(流程审核、简单报表、提醒通知)。") # 非功能/质量要求(补充) doc.add_heading("三、非功能与质量要求(补充)", level=1) doc.add_paragraph("权限与审核:全流程节点审核留痕;按角色/部门授权;附件留存。") doc.add_paragraph("编号与一致性:项目/启动编号自动生成且唯一;跨单据数据自动带出。") doc.add_paragraph("提醒与通知:审核待办、对账差异提醒、回款/请款节点提醒。") doc.add_paragraph("多端支持:PC + 移动端;移动端关注待办与通知。") doc.add_paragraph("报表性能:支持按条件查询、导出;状态/人员维度汇总。") # 里程碑(简版,可后续细化) doc.add_heading("四、里程碑(示例)", level=1) doc.add_paragraph("M1:需求评审完成") doc.add_paragraph("M2:原型&交互确认") doc.add_paragraph("M3:开发完成(含接口与前端)") doc.add_paragraph("M4:联调与测试通过") doc.add_paragraph("M5:试运行与验收") # 开发与验收要点(简版) doc.add_heading("五、开发与验收要点(示例)", level=1) doc.add_paragraph("1) 编号生成、跨单据数据带出需联调确认。") doc.add_paragraph("2) 审核链可配置(经营管理部→总经理→财务/组长等)。") doc.add_paragraph("3) 产值/费用/回款计算公式需与财务口径对齐。") doc.add_paragraph("4) 报表字段、过滤条件、导出格式需评审确认。") doc.add_paragraph("5) 移动端待办/提醒体验需验证。") def main(): output = Path("需求文档.docx") doc = Document() build_prd(doc) doc.save(output) print(f"已生成: {output.resolve()}") if __name__ == "__main__": main()