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>
245 lines
15 KiB
Python
245 lines
15 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""生成小羚羚氢能产业数字化平台方案书 Word 文档"""
|
||
|
||
from pathlib import Path
|
||
|
||
from docx import Document
|
||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
||
from docx.enum.table import WD_TABLE_ALIGNMENT
|
||
from docx.oxml.ns import qn
|
||
from docx.shared import Cm, Pt, RGBColor
|
||
|
||
OUTPUT = Path(__file__).resolve().parent / "小羚羚氢能产业数字化平台方案书.docx"
|
||
FONT_CN = "微软雅黑"
|
||
COLOR_PRIMARY = RGBColor(0x00, 0xBF, 0xA5)
|
||
COLOR_TITLE = RGBColor(0x1A, 0x1F, 0x2E)
|
||
COLOR_MUTED = RGBColor(0x5C, 0x65, 0x78)
|
||
|
||
|
||
def set_run_font(run, size=11, bold=False, color=None, name=FONT_CN):
|
||
run.font.name = name
|
||
run._element.rPr.rFonts.set(qn("w:eastAsia"), name)
|
||
run.font.size = Pt(size)
|
||
run.font.bold = bold
|
||
if color:
|
||
run.font.color.rgb = color
|
||
|
||
|
||
def add_para(doc, text, size=11, bold=False, color=None, align=None, space_after=6):
|
||
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 = 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: 22, 2: 16, 3: 13}
|
||
set_run_font(run, size=sizes.get(level, 12), bold=True, color=COLOR_TITLE if level == 1 else COLOR_PRIMARY)
|
||
h.paragraph_format.space_before = Pt(14 if level > 1 else 0)
|
||
h.paragraph_format.space_after = Pt(8)
|
||
return h
|
||
|
||
|
||
def shade_cell(cell, fill="E8F8F4"):
|
||
tc = cell._tc
|
||
tcPr = tc.get_or_add_tcPr()
|
||
shd = tcPr.find(qn("w:shd"))
|
||
if shd is None:
|
||
from docx.oxml import OxmlElement
|
||
shd = OxmlElement("w:shd")
|
||
tcPr.append(shd)
|
||
shd.set(qn("w:fill"), fill)
|
||
shd.set(qn("w:val"), "clear")
|
||
|
||
|
||
def add_table(doc, headers, rows, col_widths=None):
|
||
table = doc.add_table(rows=1 + len(rows), cols=len(headers))
|
||
table.style = "Table Grid"
|
||
table.alignment = WD_TABLE_ALIGNMENT.CENTER
|
||
hdr_cells = table.rows[0].cells
|
||
for i, h in enumerate(headers):
|
||
hdr_cells[i].text = ""
|
||
run = hdr_cells[i].paragraphs[0].add_run(h)
|
||
set_run_font(run, size=10, bold=True, color=COLOR_TITLE)
|
||
shade_cell(hdr_cells[i], "D4F5EC")
|
||
for ri, row in enumerate(rows):
|
||
cells = table.rows[ri + 1].cells
|
||
for ci, val in enumerate(row):
|
||
cells[ci].text = ""
|
||
run = cells[ci].paragraphs[0].add_run(str(val))
|
||
set_run_font(run, size=10)
|
||
if ri % 2 == 1:
|
||
shade_cell(cells[ci], "F7FBFA")
|
||
if col_widths:
|
||
for row in table.rows:
|
||
for i, w in enumerate(col_widths):
|
||
row.cells[i].width = Cm(w)
|
||
doc.add_paragraph()
|
||
return table
|
||
|
||
|
||
def build_document():
|
||
doc = Document()
|
||
section = doc.sections[0]
|
||
section.top_margin = Cm(2.5)
|
||
section.bottom_margin = Cm(2.5)
|
||
section.left_margin = Cm(2.8)
|
||
section.right_margin = Cm(2.8)
|
||
|
||
# 封面
|
||
add_para(doc, "", space_after=24)
|
||
add_para(doc, "羚牛氢能 · OneOS 生态", size=12, color=COLOR_MUTED, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=12)
|
||
add_para(doc, "小羚羚氢能产业数字化平台方案书", size=26, bold=True, color=COLOR_PRIMARY, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=16)
|
||
add_para(doc, "手机端「小羚羚」多端协同 · 氢能产业链数字化规划", size=13, color=COLOR_MUTED, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=32)
|
||
meta = doc.add_paragraph()
|
||
meta.alignment = WD_ALIGN_PARAGRAPH.CENTER
|
||
for line in ["文档版本:v1.0", "文档类型:平台建设规划 / 商业计划", "适用读者:管理层、产品、业务、项目团队"]:
|
||
r = meta.add_run(line + "\n")
|
||
set_run_font(r, size=11, color=COLOR_MUTED)
|
||
doc.add_page_break()
|
||
|
||
# 一、概述
|
||
add_heading(doc, "一、项目概述", 1)
|
||
add_para(doc, "以手机端「小羚羚」为统一入口,连接内部运营、车队客户、司机、加氢站、维修站、制氢企业与集团客户,实现氢气采购—加氢站—氢能车运营全链路数字化闭环。")
|
||
add_para(doc, "一句话定位", size=12, bold=True, color=COLOR_PRIMARY, space_after=4)
|
||
add_para(doc, "小羚羚 = 氢能产业的「业务操作系统」:一端登录、多角色协同,把合同、车辆、能源、维保、氢气贸易串成可落地、可风控、可结算的完整商业链条。")
|
||
|
||
add_heading(doc, "核心指标", 2)
|
||
add_table(doc, ["指标项", "目标值"], [
|
||
["目标用户角色", "7 类"],
|
||
["业务闭环条数", "3 条"],
|
||
["产业链覆盖", "上中下游(制氢采购 → 加氢站 → 氢能车运营)"],
|
||
["首期上线周期", "6 个月"],
|
||
], col_widths=[5, 11])
|
||
|
||
# 二、产业链商业计划
|
||
add_heading(doc, "二、氢能产业链商业计划(上游 → 下游)", 1)
|
||
add_para(doc, "覆盖氢气采购、加氢站运营、氢能车租赁/自营三大环节,形成「制氢—储运—加注—运营—结算」一体化商业模式。")
|
||
|
||
add_heading(doc, "2.1 产业链三段式布局", 2)
|
||
add_table(doc, ["环节", "业务内容", "平台价值"], [
|
||
["上游 · 制氢采购", "制氢企业挂牌售氢、管束车调度、到站交付", "氢气贸易与物流协同"],
|
||
["中游 · 加氢站", "预约接单、电子加氢卡结算、巡检与对账", "加注服务数字化与氢费结算"],
|
||
["下游 · 氢能车运营", "租赁/自营、交还车、能源与 ETC 账单闭环", "车辆运营与资产管理"],
|
||
], col_widths=[3.5, 7, 5.5])
|
||
|
||
add_heading(doc, "2.2 商业模式与收入结构", 2)
|
||
add_heading(doc, "上游 · 氢气贸易", 3)
|
||
add_para(doc, "制氢企业在线挂牌售氢;加氢站/运营方发起采购询价;成交后管束车配送到站。平台收取交易撮合费、物流调度服务费、数据监测服务费。")
|
||
add_heading(doc, "中游 · 加氢服务", 3)
|
||
add_para(doc, "司机预约加氢、电子加氢卡预充值结算;站点 OCR 识别加氢量自动入账;氢费对账线上化。平台收取 SaaS 服务费、支付通道费、对账增值服务费。")
|
||
add_heading(doc, "下游 · 车辆运营", 3)
|
||
add_para(doc, "租赁/自营合同在线签约;交还车+替换车闭环;能源/ETC/维保账单聚合;客户评级与敏感客户风控。平台核心收入为租赁服务费、资产管理费、金融结算服务。")
|
||
|
||
# 三、平台架构
|
||
add_heading(doc, "三、平台架构:七类用户 · 一套数据底座", 1)
|
||
add_table(doc, ["用户端", "主体", "核心能力", "关键场景"], [
|
||
["内部用户", "羚牛氢能员工", "合同-收款-交还车-结算全链路;车辆全生命周期;风控审批", "业务员/运维/能源/财务/法务/CEO 等"],
|
||
["车队长", "车队管理者", "一键租车报价签约;车辆运行/账单/开票/对讲", "注册验证、在线合同、实时定位"],
|
||
["氢能车司机", "自营+外部租赁", "路线导航、能源账单、安全培训考试、预约加氢、故障救援", "内外部司机差异化权限"],
|
||
["加氢站用户", "站点运营", "预约接单、电子加氢卡结算、OCR 识别加氢量、氢费对账", "特种设备/行驶证校验"],
|
||
["维修站用户", "维保服务", "维修/保养派单接单、费用记录、运维核实对账", "配件人工自动入账"],
|
||
["制氢企业", "氢气供应", "在线挂牌售氢、管束车监测、询价成交与运费结算", "对接加氢站采购"],
|
||
["集团客户", "企业级客户", "多项目车辆/账单/能源/ETC 总览;在线租车签约", "类车队长但主体为企业"],
|
||
], col_widths=[2.2, 2.5, 6.3, 5])
|
||
|
||
# 四、分角色方案
|
||
add_heading(doc, "四、分角色业务方案(可落地)", 1)
|
||
|
||
add_heading(doc, "4.1 内部用户 — 运营中枢与风控大脑", 2)
|
||
add_para(doc, "羚牛氢能内部员工 · 多部门协同", size=10, color=COLOR_MUTED)
|
||
add_para(doc, "业务条线 A:氢能车租赁/自营", size=11, bold=True)
|
||
add_para(doc, "合同发起 → 客户评级/敏感客户校验 → 标准/非标合同审批 → 收款 → 交车 → 账单收款 → 还车 → 还车结算。过程中支持替换车业务,全程留痕、可审计。")
|
||
add_para(doc, "业务条线 B:车辆全生命周期", size=11, bold=True)
|
||
add_para(doc, "采购/外租 → 验车入库 → 维修/年审/保养/故障/事故 → 出库(出售/报废/停租)。形成单车全生命周期数据档案,支撑资产决策与残值管理。")
|
||
add_para(doc, "覆盖角色:业务员、客服、运维、能源、安全、财务、法务、CEO 等;按岗位分配功能模块与审批权限。")
|
||
|
||
add_heading(doc, "4.2 车队长 — 车队管理者自助门户", 2)
|
||
add_para(doc, "注册验证 · 在线租车 · 合同签约", size=10, color=COLOR_MUTED)
|
||
add_para(doc, "一键登录验证注册状态:未注册客户可快速登记营业执照/身份证;已注册客户直接进入管理页。")
|
||
add_table(doc, ["步骤", "动作", "系统响应"], [
|
||
["1", "选择车型、数量、租期发起租车意向", "短信/推送通知对应业务员"],
|
||
["2", "系统按地区自动生成报价单", "业务员可调整并与客户在线沟通"],
|
||
["3", "确认报价并提交", "自动生成电子合同,推送客户签章"],
|
||
["4", "运维完成交车", "车队长查看车辆运行、账单、开票、对讲"],
|
||
], col_widths=[1.2, 6, 8.8])
|
||
add_para(doc, "交车后能力:实时定位/轨迹、氢/电能源账单、ETC、合同账单、付款、在线开票、语音对讲(类对讲机)。")
|
||
|
||
add_heading(doc, "4.3 氢能车司机 — 自营与外部双轨", 2)
|
||
add_table(doc, ["类型", "核心能力"], [
|
||
["内部自营司机", "定位/轨迹、送货路线规划与导航、氢/电/ETC 账单、安全培训与定期考试、证照管理、氢/电量提醒、预约附近加氢站(校验特种设备登记/行驶证)、故障提报、紧急救援"],
|
||
["外部租赁司机", "轨迹与路线导航、能源/ETC 账单、安全培训、司机与车辆证件管理、预约加氢(证件校验提示)、故障提报、紧急救援;不含集团内部物流专属调度能力"],
|
||
], col_widths=[3, 13])
|
||
|
||
add_heading(doc, "4.4 加氢站用户 — 加注服务与氢费结算", 2)
|
||
add_table(doc, ["功能模块", "说明"], [
|
||
["预约接单", "验证车辆特种设备检验登记、行驶证后确认服务"],
|
||
["电子加氢卡结算", "扫描司机电子加氢卡,预充值客户直接扣款"],
|
||
["加氢过程管理", "加氢前/中/后检查、卸气记录、站点巡检记录"],
|
||
["OCR 加氢量识别", "拍摄加氢机面板自动识别加氢量,绑定车辆生成记录"],
|
||
["氢费对账", "接收并操作氢费对账单,线上确认"],
|
||
["氢气采购", "向制氢企业发起采购(与上游模块联动)"],
|
||
], col_widths=[3.5, 12.5])
|
||
|
||
add_heading(doc, "4.5 维修站用户 — 维保派单与对账", 2)
|
||
add_para(doc, "接收内部员工发起的维修/保养派单 → 记录维修过程与人工/配件费用 → 自动生成维修记录 → 运维核实 → 内部用户与维修站在线对账及账期结算。与车辆全生命周期数据打通。")
|
||
|
||
add_heading(doc, "4.6 制氢企业 — 氢气在线交易与物流", 2)
|
||
add_para(doc, "企业资质验证后,在线发布氢气对外采购价(类商城模式);对接管束车实时数据,监测氢气运输车状态;加氢站发起询价与采购申请 → 制氢企业成交 → 运输到场 → 自动计算管束车使用费用。")
|
||
add_para(doc, "关键能力:挂牌售氢 · 询价采购 · 物流调度 · 运费结算")
|
||
|
||
add_heading(doc, "4.7 集团客户 — 企业级总览与在线租车", 2)
|
||
add_para(doc, "主体为企业(区别于个人车队长):查看集团所有租赁/自营项目车辆使用情况、全项目账单与结算、电子开票、能源费(氢/电)、ETC、司机信息汇总。同时支持 APP 在线租车并生成对应合同,完成业务闭环。")
|
||
add_para(doc, "与车队长差异:车队长侧重单车队运营;集团客户侧重企业级多项目、多合同、多车队的统一视图与集团采购决策。", bold=True)
|
||
|
||
# 五、业务闭环
|
||
add_heading(doc, "五、三大业务闭环总览", 1)
|
||
loops = [
|
||
("闭环一 · 租赁/自营运营(核心收入)", "意向单 → 报价 → 合同(评级/敏感客户审批)→ 交车 → 运营监控 → 账单收款 → 还车 → 结算 → 替换车(如需)"),
|
||
("闭环二 · 车辆资产生命周期(资产管控)", "采购/外租 → 验车入库 → 维保/年审/故障/事故 → 能源消耗 → 出库处置;全链路数据沉淀至 OneOS 数据底座"),
|
||
("闭环三 · 氢气贸易与加注(产业延伸)", "制氢企业挂牌 → 加氢站询价采购 → 管束车配送 → 司机预约加氢 → 电子加氢卡结算 → 氢费对账 → 运营账单聚合"),
|
||
]
|
||
for title, flow in loops:
|
||
add_para(doc, title, size=12, bold=True, color=COLOR_PRIMARY)
|
||
add_para(doc, flow)
|
||
|
||
# 六、路线图
|
||
add_heading(doc, "六、分阶段落地路线图", 1)
|
||
add_table(doc, ["阶段", "周期", "重点模块", "交付成果"], [
|
||
["第一阶段", "0–6 月", "内部用户 + 车队长 + 司机核心闭环", "合同审批、交还车、替换车、基础账单"],
|
||
["第二阶段", "6–12 月", "加氢站 + 维修站接入", "预约加氢、电子加氢卡、维修派单对账"],
|
||
["第三阶段", "12–18 月", "制氢企业 + 氢气采购商城", "挂牌售氢、管束车调度、到站结算"],
|
||
["第四阶段", "18–24 月", "集团客户 + 数据智能", "集团总览、风控模型、产业数据分析"],
|
||
], col_widths=[2.2, 2, 5.8, 6])
|
||
|
||
# 七、汇报要点
|
||
add_heading(doc, "七、向管理层汇报要点", 1)
|
||
points = [
|
||
"小羚羚不是单一 App,而是氢能产业多端协同的数字化入口,与 OneOS Web 端形成「大屏管控 + 手机执行」互补。",
|
||
"首期 6 个月聚焦租赁闭环与内部风控,快速产生业务价值;氢气贸易模块作为第二增长曲线。",
|
||
"客户评级与敏感客户审批机制内嵌合同流程,从源头降低收账风险,支撑非标业务合规扩张。",
|
||
"七类用户共用同一数据底座,避免信息孤岛,为后续氢能产业数据分析与智能调度奠定基础。",
|
||
]
|
||
for i, pt in enumerate(points, 1):
|
||
add_para(doc, f"{i}. {pt}")
|
||
|
||
add_para(doc, "", space_after=24)
|
||
add_para(doc, "— 文档结束 —", size=10, color=COLOR_MUTED, align=WD_ALIGN_PARAGRAPH.CENTER)
|
||
add_para(doc, "羚牛氢能 · 小羚羚平台方案 · OneOS 生态 · 供内部汇报使用", size=10, color=COLOR_MUTED, align=WD_ALIGN_PARAGRAPH.CENTER)
|
||
|
||
doc.save(OUTPUT)
|
||
return OUTPUT
|
||
|
||
|
||
if __name__ == "__main__":
|
||
path = build_document()
|
||
print(f"已生成:{path}")
|