xyc
5 天以前 972ec748b0b1cd301c04407045e713e560b8d2db
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
# -*- coding: utf-8 -*-
"""生成《交通统计报表审核系统-用户使用说明书》Word 文档。"""
import os
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
 
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
SHOT_DIR = os.path.join(BASE_DIR, "usage_screenshots")
OUT_PATH = os.path.join(BASE_DIR, "交通统计报表审核系统-用户使用说明书.docx")
 
SCREENSHOTS = [
    ("01_工作台.jpg", "一、工作台", [
        "工作台是登录系统后的首页,顶部为系统名称与当前页面名称,左侧为功能菜单(工作台、数据导入、数据查看、企业解释、审核结果、报表生成、规则管理、用户管理)。",
        "页面主体展示统计数据卡片,方便用户快速了解本报表期的数据概况(如企业数、车辆数、轨迹里程、审核结果等关键指标)。",
        "左侧菜单与顶部区域固定不动,页面内容较多时仅内容区域滚动,便于用户随时切换功能。",
    ]),
    ("02_数据导入.jpg", "二、数据导入", [
        "数据导入用于把用户整理的 Excel 模板数据批量导入系统,支持的数据类型包括:交企统H203-2表(道路货物运输月度生产情况)、运政车辆、轨迹里程、规上规下拆分运输量、货运量周转量等。",
        "操作步骤:①选择数据类型;②选择报表期(以页面选择的月份为准,导入当月与1-当月累计数据);③点击“上传”选择 Excel 文件;④点击“导入”。",
        "导入时系统会逐行校验数据,导入失败的行会提示行号,方便用户在 Excel 中定位并修改错误数据后重新导入。",
    ]),
    ("03_数据查看.jpg", "三、数据查看", [
        "数据查看用于查询已经导入系统的数据,便于核对与追溯。",
        "可按数据类型(分类)、报表期(选择具体月份)筛选,并支持输入关键字搜索企业等信息。",
        "查询结果以表格展示,表格数据较多时仅表格内部滚动,标题与筛选条件区保持固定,方便持续浏览。",
    ]),
    ("04_企业解释.jpg", "四、企业解释", [
        "企业解释用于查看企业在审核中提交的解释说明,并可使用 AI 对每一条解释进行智能分析。",
        "点击某条解释的“AI分析”后弹出对话窗口:窗口上方展示 AI 的分析输出,下方为用户的输入框,可与 AI 进行多轮对话,进一步获得处置建议。",
        "对话过程中,AI 可自动查询数据库中的相关数据,给出有数据支撑的建议,而不是凭空推断。",
    ]),
    ("05_审核结果.jpg", "五、审核结果", [
        "审核结果页用于执行审核并查看审核结论。",
        "操作步骤:①选择报表期;②点击“执行审核”重新计算,或点击“查询结果”查看历史审核结果。",
        "审核结果较多时,可按“企业名称”(关键字)和“审核规则”进行过滤,帮助用户快速定位重点企业。",
        "结果表格包含企业名称、审核规则、实际值、阈值/对比、偏差说明、等级、状态与操作列;对误报的记录可点击“确认忽略”。",
    ]),
    ("06_报表生成.jpg", "六、报表生成", [
        "报表生成用于按选定的报表期自动计算并导出各类统计报表。",
        "选择报表期后点击相应按钮即可生成并下载报表,当前支持:货运量周转量、货运量分市州明细、货运量排名、周转量排名。",
        "报表数据由系统根据已导入的数据自动计算生成,无需人工整理。",
    ]),
    ("07_规则管理.jpg", "七、规则管理", [
        "规则管理用于维护审核规则(如阈值、对比方式等)。",
        "当前演示版本中该页面为占位页,正式版本将支持规则的查看、新增、修改与启停管理。",
    ]),
    ("08_用户管理.jpg", "八、用户管理", [
        "用户管理用于维护系统登录用户及其权限。",
        "当前演示版本中该页面为占位页,正式版本将支持用户的增删改查与角色权限分配。",
    ]),
]
 
def set_font(run, size=12, bold=False, color=None, name="微软雅黑"):
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.name = name
    r = run._element.rPr.rFonts
    r.set(qn("w:eastAsia"), name)
    if color:
        run.font.color.rgb = RGBColor(*color)
 
def add_heading(doc, text, size=16, color=(0x1F, 0x4E, 0x79), space_before=18, space_after=10):
    p = doc.add_paragraph()
    p.paragraph_format.space_before = Pt(space_before)
    p.paragraph_format.space_after = Pt(space_after)
    run = p.add_run(text)
    set_font(run, size=size, bold=True, color=color)
    return p
 
def add_body(doc, text, size=11, indent=0.3, space_after=6):
    p = doc.add_paragraph()
    p.paragraph_format.space_after = Pt(space_after)
    p.paragraph_format.first_line_indent = Inches(indent)
    p.paragraph_format.line_spacing = 1.4
    run = p.add_run(text)
    set_font(run, size=size)
    return p
 
def main():
    doc = Document()
    # 页面设置:A4
    for section in doc.sections:
        section.page_width = Inches(8.27)
        section.page_height = Inches(11.69)
        section.left_margin = Inches(0.9)
        section.right_margin = Inches(0.9)
        section.top_margin = Inches(0.9)
        section.bottom_margin = Inches(0.9)
 
    # ===== 封面 =====
    for _ in range(6):
        doc.add_paragraph()
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run("交通统计报表审核系统")
    set_font(run, size=30, bold=True, color=(0x1F, 0x4E, 0x79))
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run("用户使用说明书")
    set_font(run, size=24, bold=True, color=(0x33, 0x33, 0x33))
    for _ in range(4):
        doc.add_paragraph()
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run("(演示版 Demo)")
    set_font(run, size=14, color=(0x88, 0x88, 0x88))
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run("2026 年 8 月")
    set_font(run, size=14, color=(0x88, 0x88, 0x88))
    doc.add_page_break()
 
    # ===== 文档说明 =====
    add_heading(doc, "文档说明", size=18, space_before=6)
    add_body(doc, "本说明书面向系统使用者,介绍“交通统计报表审核系统”各功能页面的用途与操作方法。系统围绕交通运输企业统计数据的上报、导入、查看、审核与报表生成等环节设计,帮助企业用户和审核人员高效完成数据填报质量核查工作。")
    add_body(doc, "系统主要功能包括:数据导入、数据查看、企业解释(含 AI 智能分析)、审核结果(含 AI 处置建议)、报表生成,以及规则管理、用户管理等管理功能。")
    add_body(doc, "本文档中的页面截图取自演示环境,页面布局与正式环境可能略有差异,功能与操作方式以实际系统为准。")
    doc.add_page_break()
 
    # ===== 各页面章节 =====
    for fname, title, descs in SCREENSHOTS:
        add_heading(doc, title, size=18, space_before=6)
        for d in descs:
            add_body(doc, d)
        shot_path = os.path.join(SHOT_DIR, fname)
        if os.path.exists(shot_path):
            p = doc.add_paragraph()
            p.alignment = WD_ALIGN_PARAGRAPH.CENTER
            run = p.add_run()
            run.add_picture(shot_path, width=Inches(6.2))
            cap = doc.add_paragraph()
            cap.alignment = WD_ALIGN_PARAGRAPH.CENTER
            r = cap.add_run(f"图:{title.replace('、', ' ')}页面")
            set_font(r, size=9, color=(0x88, 0x88, 0x88))
        doc.add_page_break()
 
    doc.save(OUT_PATH)
    print("OK:", OUT_PATH)
 
if __name__ == "__main__":
    main()