Optimized the root .gitignore to exclude virtual environments, node modules, and temp folders to ensure clean and lightweight version tracking. Co-authored-by: Cursor <cursoragent@cursor.com>
199 lines
10 KiB
Python
199 lines
10 KiB
Python
#!/usr/bin/env python3
|
||
"""生成 2026年5月26日 ONEOS 试运行问题报告 Word 文档"""
|
||
|
||
from pathlib import Path
|
||
|
||
from docx import Document
|
||
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
|
||
from docx.oxml.ns import qn
|
||
from docx.shared import Cm, Pt, RGBColor
|
||
from docx.enum.table import WD_TABLE_ALIGNMENT
|
||
|
||
OUT = Path("/Users/sylvawong/Desktop/ONEOS试运行问题报告_20260526.docx")
|
||
OUT_PROJ = Path("/Users/sylvawong/Desktop/CURSOR/ONE-OS/docs/ONEOS试运行问题报告_20260526.docx")
|
||
|
||
FONT_CN = "PingFang SC"
|
||
FONT_CN_FB = "Microsoft YaHei"
|
||
ACCENT = RGBColor(0, 82, 155)
|
||
GRAY = RGBColor(80, 80, 80)
|
||
|
||
|
||
def set_run_font(run, size=11, bold=False, color=None):
|
||
run.font.size = Pt(size)
|
||
run.font.bold = bold
|
||
run.font.name = FONT_CN
|
||
run._element.rPr.rFonts.set(qn("w:eastAsia"), FONT_CN_FB)
|
||
if color:
|
||
run.font.color.rgb = color
|
||
|
||
|
||
def add_para(doc, text, size=11, bold=False, align=None, space_after=6, color=None):
|
||
p = doc.add_paragraph()
|
||
if align is not None:
|
||
p.alignment = align
|
||
p.paragraph_format.space_after = Pt(space_after)
|
||
p.paragraph_format.line_spacing_rule = WD_LINE_SPACING.MULTIPLE
|
||
p.paragraph_format.line_spacing = 1.35
|
||
run = p.add_run(text)
|
||
set_run_font(run, size=size, bold=bold, color=color)
|
||
return p
|
||
|
||
|
||
def add_heading(doc, text, level=1):
|
||
h = doc.add_heading(level=level)
|
||
h.clear()
|
||
run = h.add_run(text)
|
||
sizes = {1: 16, 2: 14, 3: 12}
|
||
set_run_font(run, size=sizes.get(level, 12), bold=True, color=ACCENT)
|
||
h.paragraph_format.space_before = Pt(14 if level == 1 else 10)
|
||
h.paragraph_format.space_after = Pt(8)
|
||
return h
|
||
|
||
|
||
def add_bullet(doc, text, level=0):
|
||
p = doc.add_paragraph(style="List Bullet")
|
||
p.clear()
|
||
p.paragraph_format.left_indent = Cm(0.75 + level * 0.5)
|
||
p.paragraph_format.space_after = Pt(4)
|
||
p.paragraph_format.line_spacing = 1.35
|
||
run = p.add_run(text)
|
||
set_run_font(run, size=11)
|
||
|
||
|
||
def set_cell_text(cell, text, bold=False, size=10):
|
||
cell.text = ""
|
||
p = cell.paragraphs[0]
|
||
run = p.add_run(str(text))
|
||
set_run_font(run, size=size, bold=bold)
|
||
|
||
|
||
def add_issue_table(doc, rows):
|
||
headers = ["序号", "模块", "问题描述", "影响", "处理状态", "备注/后续"]
|
||
table = doc.add_table(rows=1 + len(rows), cols=len(headers))
|
||
table.style = "Table Grid"
|
||
table.alignment = WD_TABLE_ALIGNMENT.CENTER
|
||
for i, h in enumerate(headers):
|
||
set_cell_text(table.rows[0].cells[i], h, bold=True, size=10)
|
||
for ri, row in enumerate(rows, start=1):
|
||
for ci, val in enumerate(row):
|
||
set_cell_text(table.rows[ri].cells[ci], val, size=9)
|
||
doc.add_paragraph()
|
||
|
||
|
||
def build():
|
||
doc = Document()
|
||
sec = doc.sections[0]
|
||
sec.top_margin = Cm(2.5)
|
||
sec.bottom_margin = Cm(2.5)
|
||
sec.left_margin = Cm(2.8)
|
||
sec.right_margin = Cm(2.8)
|
||
|
||
title = doc.add_paragraph()
|
||
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
||
r = title.add_run("ONEOS 系统试运行问题报告")
|
||
set_run_font(r, size=20, bold=True, color=ACCENT)
|
||
title.paragraph_format.space_after = Pt(6)
|
||
|
||
sub = doc.add_paragraph()
|
||
sub.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
||
r2 = sub.add_run("报告日期:2026年5月26日 试运行阶段:业务全面迁移后首日验证")
|
||
set_run_font(r2, size=11, color=GRAY)
|
||
sub.paragraph_format.space_after = Pt(18)
|
||
|
||
add_heading(doc, "一、试运行概述", 1)
|
||
add_para(
|
||
doc,
|
||
"本次为 ONEOS 业务全面迁移上线后的首日试运行,重点验证租赁业务主流程(合同发起→提车应收款→交车→还车→还车应结款)"
|
||
"及客服组车辆管理、交车管理等支撑能力。整体主流程可跑通,但迁移数据质量、照片上传机制、"
|
||
"权限配置及部分业务规则仍存在需跟进的问题。",
|
||
)
|
||
add_para(doc, "总体结论:", bold=True, space_after=4)
|
||
add_bullet(doc, "租赁业务主链路:基本跑通,存在局部阻塞与体验类问题。")
|
||
add_bullet(doc, "权限与路由:财务出纳 404 问题已临时解决,需规范默认工作台权限配置。")
|
||
add_bullet(doc, "照片环节:交车/还车均存在上传未即时保存导致照片丢失风险,已提优化需求。")
|
||
add_bullet(doc, "迁移数据:车辆状态、停车场、交车数量、还车应结款费用明细等存在批量准确性风险。")
|
||
|
||
add_heading(doc, "二、租赁业务试运行情况", 1)
|
||
|
||
add_heading(doc, "2.1 流程验证结论", 2)
|
||
flow_rows = [
|
||
("1", "租赁合同发起", "流程正常,可顺利完成发起。", "无", "通过", "—"),
|
||
("2", "提车应收款", "整体可走通;个别合同无法生成应收款。", "中", "部分异常", "4 辆车合同需排查"),
|
||
("3", "交车", "主流程可走通。", "低", "通过(有小问题)", "照片上传见 2.3"),
|
||
("4", "还车", "主流程可走通。", "中", "通过(有小问题)", "照片及迁移展示见 2.3"),
|
||
("5", "还车应结款", "流程可走通,数据与展示异常较多。", "高", "待处理", "见 2.4"),
|
||
]
|
||
add_issue_table(doc, flow_rows)
|
||
|
||
add_heading(doc, "2.2 提车应收款", 2)
|
||
add_bullet(doc, "问题:出现一个包含 4 辆车的合同无法正常生成提车应收款。")
|
||
add_bullet(doc, "问题:财务出纳账号登录后出现 404。原因为财务出纳未配置工作台权限,登录默认路由指向工作台导致。")
|
||
add_bullet(doc, "处理:已通过分配权限临时解决;建议统一梳理财务类角色默认路由与菜单权限模板。")
|
||
|
||
add_heading(doc, "2.3 交车 / 还车", 2)
|
||
add_bullet(doc, "共性问题(交车、还车):拍摄照片环节存在「上传后未即时保存」问题;异常返回后已拍照片全部丢失。")
|
||
add_bullet(doc, "处理:已提交产品优化需求,建议增加分张即时落库/断点续传能力。")
|
||
add_bullet(doc, "还车专项:照片页「交车照片(迁移数据)」部位匹配不一致(如左后方显示为右前方),需开发修复映射关系。")
|
||
|
||
add_heading(doc, "2.4 还车应结款", 2)
|
||
add_bullet(doc, "业务服务组、运维组、能源部办理情况中,人员均错误显示为「黄桂球」。")
|
||
add_bullet(doc, "迁移数据问题:运维组下错误迁移了部分费用明细(旧版与新版名称不一致导致误迁)。")
|
||
add_bullet(doc, "处理:admin 已上线删除功能,可手工处理异常数据;暂缺批量排查迁移数据的工具或规则。")
|
||
add_bullet(doc, "逻辑问题:未做还车费用的提车应结款单,错误显示为「审核完成」,需核查状态机与数据校验。")
|
||
|
||
add_heading(doc, "三、客服组试运行情况", 1)
|
||
|
||
add_heading(doc, "3.1 车辆管理", 2)
|
||
add_bullet(doc, "问题:存在大量停车场未正确匹配或错误标记为「呆滞车」。")
|
||
add_bullet(doc, "说明:「呆滞车」状态此前已暂时删除,不应再出现。")
|
||
add_bullet(doc, "影响:运维无法正常选择车辆。")
|
||
add_bullet(doc, "建议方案:")
|
||
add_bullet(doc, "核对所有车辆停车场迁移准确性;排除运营状态为「租赁」外的车辆,检查停车场是否为空,空数据需补全或修正。", level=1)
|
||
add_bullet(doc, "在车辆管理增加修改功能(停车场等字段可编辑),需求待提。", level=1)
|
||
|
||
add_heading(doc, "3.2 交车管理", 2)
|
||
add_bullet(doc, "问题:实际交车数量显示不正确,判断为迁移数据问题,需与交车任务/车辆状态数据交叉核对。")
|
||
|
||
add_heading(doc, "四、问题汇总清单", 1)
|
||
all_issues = [
|
||
("1", "提车应收款", "4 辆车合同无法生成提车应收款", "中", "待排查", "需定位合同/车辆绑定规则"),
|
||
("2", "权限", "财务出纳登录 404", "高", "已解决", "已分配工作台权限,建议固化模板"),
|
||
("3", "交车", "照片上传未即时保存致丢失", "中", "已提优化", "产品优化中"),
|
||
("4", "还车", "照片上传未即时保存致丢失", "中", "已提优化", "同交车"),
|
||
("5", "还车", "迁移交车照片部位映射错误", "中", "待开发", "左后/右前等错位"),
|
||
("6", "还车应结款", "办理人错误显示为黄桂球", "中", "待修复", "多部门均受影响"),
|
||
("7", "还车应结款", "运维组费用明细误迁移", "高", "可手工删", "缺批量排查方案"),
|
||
("8", "还车应结款", "无还车费用单却显示审核完成", "高", "待修复", "状态逻辑异常"),
|
||
("9", "车辆管理", "停车场空/错、呆滞车误标", "高", "待处理", "影响运维选车"),
|
||
("10", "车辆管理", "缺少停车场等字段修改入口", "中", "需求待提", "—"),
|
||
("11", "交车管理", "实际交车数量不正确", "中", "待核对", "迁移数据问题"),
|
||
]
|
||
add_issue_table(doc, all_issues)
|
||
|
||
add_heading(doc, "五、后续工作计划(建议)", 1)
|
||
plans = [
|
||
"【P0】修复还车应结款状态展示异常(无费用却审核完成)及办理人显示错误。",
|
||
"【P0】开展车辆停车场、车辆状态(含呆滞车)、交车数量迁移数据专项核对与修正。",
|
||
"【P1】排查 4 辆车合同无法生成提车应收款的具体原因并修复。",
|
||
"【P1】修复还车迁移照片部位映射;推进交车/还车照片分张即时保存方案落地。",
|
||
"【P1】制定还车应结款迁移数据批量校验规则(旧版/新版费用名称映射表 + 异常清单导出)。",
|
||
"【P2】车辆管理增加停车场等字段编辑能力;统一财务类角色权限与默认路由配置。",
|
||
]
|
||
for p in plans:
|
||
add_bullet(doc, p)
|
||
|
||
add_heading(doc, "六、附录", 1)
|
||
add_para(doc, "本报告依据 2026 年 5 月 26 日试运行现场反馈整理,问题状态随修复进展动态更新。", color=GRAY, size=10)
|
||
add_para(doc, "编制:试运行项目组 日期:2026年5月26日", color=GRAY, size=10)
|
||
|
||
OUT.parent.mkdir(parents=True, exist_ok=True)
|
||
doc.save(OUT)
|
||
OUT_PROJ.parent.mkdir(parents=True, exist_ok=True)
|
||
doc.save(OUT_PROJ)
|
||
print(f"已生成: {OUT}")
|
||
print(f"副本: {OUT_PROJ}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
build()
|