gen_plan_v2_original_roles.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. # -*- coding: utf-8 -*-
  2. from pathlib import Path
  3. import openpyxl
  4. from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
  5. out = Path(r"d:/Projects/Ai-DOP/AI-DOP项目总计划_20260328_v2_按原分工.xlsx")
  6. wb = openpyxl.Workbook()
  7. ws1 = wb.active
  8. ws1.title = "项目总计划"
  9. ws2 = wb.create_sheet("每周详细计划")
  10. header_fill = PatternFill("solid", fgColor="1F4E78")
  11. sub_fill = PatternFill("solid", fgColor="D9E1F2")
  12. white_font = Font(color="FFFFFF", bold=True)
  13. bold = Font(bold=True)
  14. center = Alignment(horizontal="center", vertical="center", wrap_text=True)
  15. left = Alignment(horizontal="left", vertical="top", wrap_text=True)
  16. thin = Side(style="thin", color="D9D9D9")
  17. border = Border(left=thin, right=thin, top=thin, bottom=thin)
  18. ws1.append(["阶段", "时间范围", "目标产出", "负责人(与原表一致)", "验收标准", "状态"])
  19. for c in range(1, 7):
  20. ws1.cell(1, c).fill = header_fill
  21. ws1.cell(1, c).font = white_font
  22. ws1.cell(1, c).alignment = center
  23. ws1.cell(1, c).border = border
  24. overall_rows = [
  25. [
  26. "1. 需求与立项",
  27. "2026/03/02 - 2026/03/16",
  28. "需求讨论、业务需求与IT对接、立项/规范",
  29. "@郭峰@卿劢@胡仲海(需求);@卿劢@郭峰(IT对接)",
  30. "需求范围与接口口径确认",
  31. "进行中",
  32. ],
  33. [
  34. "2. 系统分析与设计",
  35. "2026/03/10 - 2026/04/10",
  36. "技术栈选型、源数据接口、架构/数据库、移动端设计",
  37. "@郭峰(技术栈/架构/库/移动);@方英明@卿劢(标准化源数据接口)",
  38. "设计评审通过",
  39. "进行中",
  40. ],
  41. [
  42. "3. 研发(按模块分工)",
  43. "2026/03/19 - 2026/05/29",
  44. "环境&框架;S0/S8/S9;S1-S4;S5-S7;APP",
  45. "见下方「模块分工矩阵」",
  46. "各模块开发与KPI联调完成",
  47. "进行中",
  48. ],
  49. [
  50. "4. 测试与验收",
  51. "2026/06/01 - 2026/06/12",
  52. "SIT、UAT",
  53. "SIT:方英明@郭峰;UAT:@卿劢@郭峰",
  54. "测试问题闭环、UAT条件满足",
  55. "未开始",
  56. ],
  57. ["5. 交付", "2026/06/29 - 2026/06/30", "交付验收", "@郭峰", "交付清单签收", "未开始"],
  58. ]
  59. r = 2
  60. for row in overall_rows:
  61. ws1.append(row)
  62. for c in range(1, 7):
  63. ws1.cell(r, c).alignment = left if c in (3, 4, 5) else center
  64. ws1.cell(r, c).border = border
  65. r += 1
  66. r += 1
  67. ws1.merge_cells(start_row=r, start_column=1, end_row=r, end_column=6)
  68. ws1.cell(r, 1).value = "模块分工矩阵(与《项目计划跟进表》一致)"
  69. ws1.cell(r, 1).fill = sub_fill
  70. ws1.cell(r, 1).font = bold
  71. ws1.cell(r, 1).alignment = left
  72. r += 1
  73. matrix = [
  74. ["工作项", "负责人", "计划周期(原表)", "说明", "", ""],
  75. ["开发环境搭建&系统框架搭建", "@郭峰", "2026/03/19 - 2026/03/20", "", "", ""],
  76. ["AI智能体监控调研&ChatBI调研", "@刘文博", "2026/03/16 - 2026/03/20", "", "", ""],
  77. ["S0/S8/S9模块和KPI开发", "@刘文博", "2026/03/23 - 2026/04/30", "", "", ""],
  78. ["S1-S4模块和KPI开发", "@彭熙玉", "2026/04/01 - 2026/05/29", "4/1起投入", "", ""],
  79. ["S5-S7模块和KPI开发", "@方英明", "2026/05/06 - 2026/05/22", "", "", ""],
  80. ["APP端全功能开发", "郭峰@方英明", "2026/04/13 - 2026/05/29", "", "", ""],
  81. ["系统集成测试 (SIT)", "方英明@郭峰", "2026/06/01 - 2026/06/05", "", "", ""],
  82. ["用户验收测试 (UAT)", "@卿劢@郭峰", "2026/06/08 - 2026/06/12", "", "", ""],
  83. ]
  84. for row in matrix:
  85. ws1.append(row)
  86. for c in range(1, 7):
  87. ws1.cell(r, c).border = border
  88. ws1.cell(r, c).alignment = left
  89. r += 1
  90. r += 1
  91. ws1.merge_cells(start_row=r, start_column=1, end_row=r, end_column=6)
  92. ws1.cell(r, 1).value = "关键里程碑"
  93. ws1.cell(r, 1).fill = sub_fill
  94. ws1.cell(r, 1).font = bold
  95. r += 1
  96. for m in [
  97. ("M1", "2026/04/01", "@彭熙玉 开始 S1-S4 开发(原表计划起)"),
  98. ("M2", "2026/05/29", "系统完成开发(原表节点)"),
  99. ("M3", "2026/06/12", "系统完成测试(原表节点)"),
  100. ("M4", "2026/06/30", "交付验收(原表)"),
  101. ]:
  102. ws1.append([m[0], m[1], m[2], "", "", ""])
  103. for c in range(1, 7):
  104. ws1.cell(r, c).border = border
  105. r += 1
  106. for col, width in {"A": 20, "B": 28, "C": 36, "D": 32, "E": 28, "F": 10}.items():
  107. ws1.column_dimensions[col].width = width
  108. ws2.append(
  109. [
  110. "周次",
  111. "日期范围",
  112. "周目标",
  113. "主要工作项",
  114. "责任分工(原表+小刘周计划)",
  115. "周验收物",
  116. "风险与依赖",
  117. ]
  118. )
  119. for c in range(1, 8):
  120. ws2.cell(1, c).fill = header_fill
  121. ws2.cell(1, c).font = white_font
  122. ws2.cell(1, c).alignment = center
  123. ws2.cell(1, c).border = border
  124. weeks_data = [
  125. (
  126. "W0",
  127. "2026/03/16 - 2026/03/20",
  128. "AI智能体与ChatBI调研、环境",
  129. "S8/S9预研、S0参数梳理、.NET联调环境",
  130. "@刘文博(调研主责);@郭峰(框架与环境)",
  131. "调研产出、环境就绪",
  132. "模型与接口选型",
  133. ),
  134. (
  135. "W1",
  136. "2026/03/23 - 2026/03/28",
  137. "S8 监控能力建设",
  138. "数据接入、规则引擎、AI识别接口",
  139. "@刘文博",
  140. "监控通道、规则后端、AI接口V0.5",
  141. "数据质量",
  142. ),
  143. (
  144. "W2",
  145. "2026/03/29 - 2026/04/04",
  146. "S8 闭环",
  147. "派单、回传、清明前封版",
  148. "@刘文博",
  149. "S8代码、流程图、闭环测试",
  150. "节前窗口",
  151. ),
  152. (
  153. "W3",
  154. "2026/04/05 - 2026/04/11",
  155. "S0 基础构建",
  156. "建模引擎、脚本、验证",
  157. "@刘文博;@彭熙玉自4/1起并行S1-S4准备",
  158. "S0脚本、引擎V0.5",
  159. "彭熙玉4/1起",
  160. ),
  161. (
  162. "W4",
  163. "2026/04/12 - 2026/04/18",
  164. "S0 优化与联调",
  165. "多变量推演、S0对外接口、与S8联动",
  166. "@刘文博",
  167. "S0完工、联调确认",
  168. "模块间契约",
  169. ),
  170. (
  171. "W5",
  172. "2026/04/19 - 2026/04/25",
  173. "S9 数据与ChatBI",
  174. "KPI引擎、九宫格接口、ChatBI解析",
  175. "@刘文博",
  176. "KPI引擎、接口、解析服务",
  177. "性能与SQL安全",
  178. ),
  179. (
  180. "W6",
  181. "2026/04/26 - 2026/04/30",
  182. "S9 总装",
  183. "前端联调、压测、P0/P1收敛",
  184. "@刘文博@郭峰",
  185. "S9集成报告、测试报告",
  186. "小刘表4/30节点",
  187. ),
  188. (
  189. "W7",
  190. "2026/05/04 - 2026/05/10",
  191. "S1-S4 开发推进",
  192. "产销、计划、供应、采购模块与KPI",
  193. "@彭熙玉主责原表S1-S4",
  194. "模块功能清单推进",
  195. "与S8/S9数据依赖",
  196. ),
  197. (
  198. "W8",
  199. "2026/05/11 - 2026/05/17",
  200. "S1-S4 联调",
  201. "与全链路指标联调",
  202. "@彭熙玉;@刘文博支撑S8/S9",
  203. "联调记录",
  204. "接口变更",
  205. ),
  206. (
  207. "W9",
  208. "2026/05/18 - 2026/05/22",
  209. "S5-S7 开发原表窗口",
  210. "仓储、生产、成品与KPI",
  211. "@方英明原表S5-S7",
  212. "S5-S7功能推进",
  213. "现场数据口径",
  214. ),
  215. (
  216. "W10",
  217. "2026/05/25 - 2026/05/29",
  218. "开发封版",
  219. "全员缺陷收敛、准备SIT",
  220. "@郭峰@彭熙玉@方英明@刘文博",
  221. "RC版本",
  222. "范围冻结",
  223. ),
  224. (
  225. "W11",
  226. "2026/06/01 - 2026/06/05",
  227. "SIT",
  228. "系统集成测试",
  229. "方英明@郭峰原表",
  230. "SIT报告",
  231. "缺陷修复速度",
  232. ),
  233. (
  234. "W12",
  235. "2026/06/08 - 2026/06/12",
  236. "UAT",
  237. "用户验收",
  238. "@卿劢@郭峰原表",
  239. "UAT记录",
  240. "变更控制",
  241. ),
  242. (
  243. "W13",
  244. "2026/06/15 - 2026/06/28",
  245. "交付准备",
  246. "部署、培训、清单",
  247. "@郭峰牵头",
  248. "交付包",
  249. "上线窗口",
  250. ),
  251. (
  252. "W14",
  253. "2026/06/29 - 2026/06/30",
  254. "正式交付",
  255. "交付验收",
  256. "@郭峰原表",
  257. "签收",
  258. "移交与运维",
  259. ),
  260. ]
  261. row = 2
  262. for w in weeks_data:
  263. ws2.append(list(w))
  264. for c in range(1, 8):
  265. ws2.cell(row, c).alignment = left if c >= 3 else center
  266. ws2.cell(row, c).border = border
  267. row += 1
  268. for col, width in {"A": 8, "B": 24, "C": 22, "D": 40, "E": 38, "F": 26, "G": 22}.items():
  269. ws2.column_dimensions[col].width = width
  270. wb.save(out)
  271. print(out)