367 lines
24 KiB
Python
367 lines
24 KiB
Python
from openpyxl import Workbook
|
||
from openpyxl.styles import PatternFill, Font, Border, Side, Alignment
|
||
from openpyxl.utils import get_column_letter
|
||
|
||
wb = Workbook()
|
||
|
||
# ====== Sheet 1: 总览 ======
|
||
ws_summary = wb.active
|
||
ws_summary.title = "开发计划总览"
|
||
ws_summary.sheet_view.showGridLines = False
|
||
|
||
# 颜色定义
|
||
header_fill = PatternFill(start_color="1F4E79", end_color="1F4E79", fill_type="solid")
|
||
subheader_fill = PatternFill(start_color="2E75B6", end_color="2E75B6", fill_type="solid")
|
||
p1_fill = PatternFill(start_color="C00000", end_color="C00000", fill_type="solid")
|
||
p2_fill = PatternFill(start_color="FF7C00", end_color="FF7C00", fill_type="solid")
|
||
p3_fill = PatternFill(start_color="70AD47", end_color="70AD47", fill_type="solid")
|
||
white_font = Font(color="FFFFFF", bold=True, size=11)
|
||
normal_font = Font(size=10)
|
||
thin_border = Border(
|
||
left=Side(style='thin', color='CCCCCC'),
|
||
right=Side(style='thin', color='CCCCCC'),
|
||
top=Side(style='thin', color='CCCCCC'),
|
||
bottom=Side(style='thin', color='CCCCCC')
|
||
)
|
||
|
||
# 标题
|
||
ws_summary['B2'] = "paopao 电商系统开发计划表"
|
||
ws_summary['B2'].font = Font(size=18, bold=True, color="1F4E79")
|
||
ws_summary['B2'].alignment = Alignment(horizontal='left', vertical='center')
|
||
ws_summary.row_dimensions[2].height = 36
|
||
|
||
# 统计信息
|
||
stats = [
|
||
("总功能点", "64"),
|
||
("小程序端", "24"),
|
||
("后台管理端", "40"),
|
||
("核心流程", "9"),
|
||
]
|
||
for i, (label, val) in enumerate(stats):
|
||
col = get_column_letter(2 + i)
|
||
ws_summary[f'{col}4'] = label
|
||
ws_summary[f'{col}4'].font = Font(bold=True, size=10, color="1F4E79")
|
||
ws_summary[f'{col}4'].alignment = Alignment(horizontal='center')
|
||
ws_summary[f'{col}5'] = val
|
||
ws_summary[f'{col}5'].font = Font(size=24, bold=True, color="1F4E79")
|
||
ws_summary[f'{col}5'].alignment = Alignment(horizontal='center')
|
||
ws_summary.row_dimensions[5].height = 30
|
||
|
||
# 模块列表
|
||
modules = [
|
||
("序号", "模块名称", "端", "功能点数", "优先级", "预计工时(h)", "状态"),
|
||
]
|
||
row = 7
|
||
for m in modules:
|
||
for col_idx, val in enumerate(m, 2):
|
||
cell = ws_summary.cell(row=row, column=col_idx, value=val)
|
||
cell.fill = header_fill
|
||
cell.font = white_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
ws_summary.row_dimensions[row].height = 24
|
||
|
||
module_data = [
|
||
(1, "登录/注册", "小程序端", 3, "P1", 16, "待开发"),
|
||
(2, "首页模块", "小程序端", 11, "P1", 40, "待开发"),
|
||
(3, "会员中心", "小程序端", 4, "P1", 32, "待开发"),
|
||
(4, "商城模块", "小程序端", 3, "P1", 24, "待开发"),
|
||
(5, "购物车", "小程序端", 3, "P1", 16, "待开发"),
|
||
(6, "我的页面", "小程序端", 10, "P1", 32, "待开发"),
|
||
(7, "首页统计", "后台管理端", 2, "P1", 8, "待开发"),
|
||
(8, "会员管理", "后台管理端", 2, "P1", 16, "待开发"),
|
||
(9, "商品管理", "后台管理端", 5, "P1", 40, "待开发"),
|
||
(10, "比赛活动", "后台管理端", 2, "P1", 24, "待开发"),
|
||
(11, "预约管理", "后台管理端", 1, "P2", 8, "待开发"),
|
||
(12, "营销模块", "后台管理端", 5, "P2", 32, "待开发"),
|
||
(13, "系统管理", "后台管理端", 3, "P2", 16, "待开发"),
|
||
(14, "财务模块", "后台管理端", 6, "P1", 32, "待开发"),
|
||
]
|
||
|
||
for i, row_data in enumerate(module_data):
|
||
row = 8 + i
|
||
for col_idx, val in enumerate(row_data, 2):
|
||
cell = ws_summary.cell(row=row, column=col_idx, value=val)
|
||
cell.font = normal_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
# 优先级着色
|
||
if col_idx == 6: # 优先级列
|
||
if val == "P1":
|
||
cell.fill = p1_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
elif val == "P2":
|
||
cell.fill = p2_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
ws_summary.row_dimensions[row].height = 20
|
||
|
||
# 列宽
|
||
widths = [4, 18, 14, 10, 10, 12, 10]
|
||
for i, w in enumerate(widths, 2):
|
||
ws_summary.column_dimensions[get_column_letter(i)].width = w
|
||
|
||
# ====== Sheet 2: 小程序端详细计划 ======
|
||
ws_mini = wb.create_sheet("小程序端详细计划")
|
||
ws_mini.sheet_view.showGridLines = False
|
||
|
||
ws_mini['B2'] = "小程序端(用户端)功能开发计划"
|
||
ws_mini['B2'].font = Font(size=16, bold=True, color="1F4E79")
|
||
|
||
headers = ["序号", "功能模块", "功能名称", "功能描述", "优先级", "预计工时(h)", "关联流程", "备注"]
|
||
for col_idx, h in enumerate(headers, 2):
|
||
cell = ws_mini.cell(row=4, column=col_idx, value=h)
|
||
cell.fill = header_fill
|
||
cell.font = white_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
ws_mini.row_dimensions[4].height = 24
|
||
|
||
mini_data = [
|
||
# 登录注册
|
||
(1, "登录注册", "手机短信验证码登录/注册", "可通过手机短信验证方式注册,修改密码", "P1", 8, "用户注册与登录流程", ""),
|
||
(2, "登录注册", "微信授权登录/注册", "可直接通过微信账号注册进入小程序", "P1", 4, "用户注册与登录流程", ""),
|
||
(3, "登录注册", "隐私/政策协议", "可自由上传修改文案内容", "P3", 4, "用户注册与登录流程", ""),
|
||
# 首页
|
||
(4, "首页", "LOGO+小程序名称", "可自由修改", "P1", 2, "", ""),
|
||
(5, "首页", "搜索", "关键字搜索:可通过搜索栏搜索关键字查找到商城内相应商品(模糊查询)", "P1", 8, "商品购物与支付流程", ""),
|
||
(6, "首页", "消息通知", "系统通知:所有小程序内订单状态变化及支付记录,佣金收入等通知", "P1", 6, "", ""),
|
||
(7, "首页", "轮播图", "自定义替换图片:可自由设置图片尺寸规格", "P1", 4, "", ""),
|
||
(8, "首页", "精选商城入口", "入口跳转至商城页面", "P2", 2, "", ""),
|
||
(9, "首页", "活动报名入口", "活动列表:展示活动名称,活动时间等概要信息", "P1", 6, "活动报名流程", ""),
|
||
(10, "首页", "穿线预约入口", "显示门店名称、地址、营业时间,距离;点击定位跳转地图;点击电话拨打", "P1", 8, "穿线预约流程", ""),
|
||
(11, "首页", "积分商城入口", "显示总积分,可积分兑换的商品、查询兑换订单进度", "P1", 8, "积分商城与使用流程", ""),
|
||
(12, "首页", "热销商品展示", "展示购买率高的商品列表", "P2", 4, "", ""),
|
||
(13, "首页", "会员登录入口", "点击跳转会员中心;点商品会员价跳转注册界面", "P1", 4, "会员开通与推广流程", ""),
|
||
(14, "首页", "热门活动展示", "后台设置的热门活动展示", "P2", 4, "", ""),
|
||
(15, "首页", "领券中心入口", "优惠券领取入口", "P2", 4, "优惠券领取与使用流程", ""),
|
||
(16, "首页", "积分签到", "每天签到固定可获取X积分", "P2", 6, "积分商城与使用流程", ""),
|
||
# 会员中心
|
||
(17, "会员中心", "购买会员/会员升级", "会员升级成为会员获取推广权益,线下收取下级会员费后录入注册", "P1", 12, "会员开通与推广流程", ""),
|
||
(18, "会员中心", "分佣查看", "自己下级在平台产生消费,会员可获得相应比例的分佣", "P1", 8, "佣金结算与提现流程", ""),
|
||
(19, "会员中心", "分佣结算", "订单完成货款到账后(过了售后期),佣金才能结算到上级账户", "P1", 6, "佣金结算与提现流程", ""),
|
||
(20, "会员中心", "可提现佣金", "申请提现至微信;设置提现时间和上限(单次200以上,每天不超过2000)", "P1", 6, "佣金结算与提现流程", ""),
|
||
# 商城
|
||
(21, "商城", "商品搜索", "关键字搜索查找到相应商品(模糊查询)", "P1", 6, "商品购物与支付流程", ""),
|
||
(22, "商城", "商品分类", "三级分类导航", "P1", 6, "", ""),
|
||
(23, "商城", "商品详情", "商品主图/视频、规格、价格等详情展示", "P1", 12, "商品购物与支付流程", ""),
|
||
# 购物车
|
||
(24, "购物车", "商品列表展示", "显示已添加的商品列表", "P1", 4, "", ""),
|
||
(25, "购物车", "购物车管理", "删除选购商品", "P1", 4, "", ""),
|
||
(26, "购物车", "下单结算", "多选商品下单支付,同一订单只收一笔快递费", "P1", 8, "商品购物与支付流程", ""),
|
||
# 我的
|
||
(27, "我的", "头像昵称设置", "设置头像、昵称、性别、手机号、显示ID、注册时间", "P1", 6, "", ""),
|
||
(28, "我的", "消息中心", "系统通知、公告消息", "P2", 4, "", ""),
|
||
(29, "我的", "设置页面", "服务协议、隐私政策、版权信息、关于我们", "P2", 4, "", ""),
|
||
(30, "我的", "会员等级显示", "展示当前会员等级", "P1", 2, "", ""),
|
||
(31, "我的", "我的钱包", "余额充值功能", "P1", 6, "", ""),
|
||
(32, "我的", "我的积分", "积分查询", "P1", 2, "", ""),
|
||
(33, "我的", "我的优惠券", "已使用、未使用、已过期;显示已领取优惠券", "P1", 6, "优惠券领取与使用流程", ""),
|
||
(34, "我的", "我的订单", "全部订单:待支付、待发货、待收货、商品评价、申请售后(部分退款)", "P1", 12, "商品购物与支付流程", ""),
|
||
(35, "我的", "我的活动", "已报名活动列表,可取消报名", "P1", 6, "活动报名流程", ""),
|
||
(36, "我的", "分销推广入口", "我的邀请人查看", "P1", 4, "", ""),
|
||
]
|
||
|
||
for i, row_data in enumerate(mini_data):
|
||
row = 5 + i
|
||
for col_idx, val in enumerate(row_data, 2):
|
||
cell = ws_mini.cell(row=row, column=col_idx, value=val)
|
||
cell.font = normal_font
|
||
cell.border = thin_border
|
||
if col_idx == 2:
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
elif col_idx == 6 or col_idx == 7:
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
else:
|
||
cell.alignment = Alignment(horizontal='left', vertical='center', wrap_text=True)
|
||
# 优先级着色
|
||
if col_idx == 6:
|
||
if val == "P1":
|
||
cell.fill = p1_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
elif val == "P2":
|
||
cell.fill = p2_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
elif val == "P3":
|
||
cell.fill = p3_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
ws_mini.row_dimensions[row].height = 30
|
||
|
||
# 列宽
|
||
mini_widths = [4, 12, 16, 50, 8, 10, 18, 10]
|
||
for i, w in enumerate(mini_widths, 2):
|
||
ws_mini.column_dimensions[get_column_letter(i)].width = w
|
||
|
||
# ====== Sheet 3: 后台管理端详细计划 ======
|
||
ws_admin = wb.create_sheet("后台管理端详细计划")
|
||
ws_admin.sheet_view.showGridLines = False
|
||
|
||
ws_admin['B2'] = "后台管理端(Web端)功能开发计划"
|
||
ws_admin['B2'].font = Font(size=16, bold=True, color="1F4E79")
|
||
|
||
for col_idx, h in enumerate(headers, 2):
|
||
cell = ws_admin.cell(row=4, column=col_idx, value=h)
|
||
cell.fill = header_fill
|
||
cell.font = white_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
ws_admin.row_dimensions[4].height = 24
|
||
|
||
admin_data = [
|
||
# 首页统计
|
||
(1, "首页统计", "普通会员统计", "普通会员人数统计", "P1", 2, "", ""),
|
||
(2, "首页统计", "趋势图", "注册人数、会员人数趋势", "P1", 6, "", ""),
|
||
# 会员管理
|
||
(3, "会员管理", "会员列表", "普通会员:登录注册的用户信息,手机号、昵称、余额、积分等", "P1", 8, "后台管理核心流程", ""),
|
||
(4, "会员管理", "会员权限设置", "VIP会员开通价格、会员时间、享受权限等", "P1", 8, "", ""),
|
||
# 商城管理
|
||
(5, "商城管理", "商品管理", "商品添加、上下架、商品规格设置(如服装码数,颜色等商品参数)", "P1", 16, "后台管理核心流程", ""),
|
||
(6, "商城管理", "批量导入导出", "能实现线上导出导入数据,实现批量修改导入数据", "P1", 8, "", ""),
|
||
(7, "商城管理", "商品分销设置", "商品单独设置分销佣金", "P1", 6, "", ""),
|
||
(8, "商城管理", "订单管理", "商品订单:待支付,待发货,待收货,商品评价,退款/售后", "P1", 12, "后台管理核心流程", ""),
|
||
(9, "商城管理", "商品品牌管理", "品牌列表管理", "P2", 4, "", ""),
|
||
(10, "商城管理", "商品类型管理", "三级分类管理", "P1", 6, "", ""),
|
||
# 比赛活动
|
||
(11, "比赛活动", "活动列表", "添加比赛信息,限制报名人数,可设置热门;后台自定义参赛人员必填项;衣服尺码后台设置;限制报名人数或队伍数", "P1", 16, "后台管理核心流程", ""),
|
||
(12, "比赛活动", "预约报名管理", "活动报名人员管理", "P1", 8, "", ""),
|
||
# 预约管理
|
||
(13, "预约管理", "预约订单查询", "用户预约穿线订单,分门店查询", "P2", 8, "穿线预约流程", ""),
|
||
# 营销
|
||
(14, "营销", "优惠券管理", "场地使用券、无门槛、满减券、折扣券;可设置优惠券指定发放给会员/非会员/单独某个账户", "P1", 12, "优惠券领取与使用流程", ""),
|
||
(15, "营销", "优惠券使用记录", "优惠券使用记录,核销门店等信息", "P1", 6, "", ""),
|
||
(16, "营销", "积分抵扣设置", "积分抵扣规则配置", "P2", 6, "", ""),
|
||
(17, "营销", "积分商城管理", "积分兑换商品管理", "P2", 8, "积分商城与使用流程", ""),
|
||
(18, "营销", "轮播图管理", "广告图替换", "P2", 4, "", ""),
|
||
(19, "营销", "系统公告发布", "发布系统公告通知", "P2", 4, "", ""),
|
||
# 系统管理
|
||
(20, "系统管理", "用户管理", "添加系统用户账户", "P2", 8, "后台管理核心流程", ""),
|
||
(21, "系统管理", "角色权限管理", "用户角色权限设置", "P2", 8, "", ""),
|
||
(22, "系统管理", "门店管理", "添加门店信息、账号、密码", "P2", 8, "", ""),
|
||
# 财务
|
||
(23, "财务", "账务概况", "订单、会员、分销分别进行数据统计,可按日期查询,可导出表格", "P1", 12, "后台管理核心流程", ""),
|
||
(24, "财务", "充值记录查询", "查询所有充值记录,可按账号、日期查询,可导出表格", "P1", 6, "", ""),
|
||
(25, "财务", "资金记录查询", "查询所有账号资金账单,可按账号、日期查询,可导出表格", "P1", 6, "", ""),
|
||
(26, "财务", "积分记录查询", "查询所有账号积分情况,可按账号、日期查询,可导出表格", "P1", 6, "", ""),
|
||
(27, "财务", "佣金提现审核", "审核所有佣金提现申请", "P1", 8, "佣金结算与提现流程", ""),
|
||
(28, "财务", "佣金记录查询", "所有佣金账单,可按账号、日期查询,可导出表格", "P1", 6, "", ""),
|
||
]
|
||
|
||
for i, row_data in enumerate(admin_data):
|
||
row = 5 + i
|
||
for col_idx, val in enumerate(row_data, 2):
|
||
cell = ws_admin.cell(row=row, column=col_idx, value=val)
|
||
cell.font = normal_font
|
||
cell.border = thin_border
|
||
if col_idx == 2:
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
elif col_idx == 6 or col_idx == 7:
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
else:
|
||
cell.alignment = Alignment(horizontal='left', vertical='center', wrap_text=True)
|
||
if col_idx == 6:
|
||
if val == "P1":
|
||
cell.fill = p1_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
elif val == "P2":
|
||
cell.fill = p2_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
elif val == "P3":
|
||
cell.fill = p3_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
ws_admin.row_dimensions[row].height = 30
|
||
|
||
# 列宽
|
||
admin_widths = [4, 12, 16, 50, 8, 10, 18, 10]
|
||
for i, w in enumerate(admin_widths, 2):
|
||
ws_admin.column_dimensions[get_column_letter(i)].width = w
|
||
|
||
# ====== Sheet 4: 核心业务流程 ======
|
||
ws_flow = wb.create_sheet("核心业务流程")
|
||
ws_flow.sheet_view.showGridLines = False
|
||
|
||
ws_flow['B2'] = "系统核心业务流程"
|
||
ws_flow['B2'].font = Font(size=16, bold=True, color="1F4E79")
|
||
|
||
flow_headers = ["序号", "流程名称", "流程说明", "涉及模块", "关联页面", "关键节点"]
|
||
for col_idx, h in enumerate(flow_headers, 2):
|
||
cell = ws_flow.cell(row=4, column=col_idx, value=h)
|
||
cell.fill = header_fill
|
||
cell.font = white_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
ws_flow.row_dimensions[4].height = 24
|
||
|
||
flow_data = [
|
||
(1, "用户注册与登录流程", "用户进入小程序选择短信验证码登录或微信授权登录,阅读并同意隐私政策/服务协议后进入首页。需修改密码通过短信验证码重置。会员身份通过手机号匹配后激活。", "登录注册、首页", "登录页、首页", "手机号验证 → 身份匹配 → 权限激活"),
|
||
(2, "会员开通与推广下级流程", "用户购买会员支付198元注册费,会员获得推广权限。会员线下收取下级298元会员费后在平台为下级录入手机号。下级用该手机号登录系统自动匹配身份成为该会员下级。", "会员中心、用户管理", "会员中心、注册页", "支付注册费 → 录入下级手机号 → 下级登录匹配"),
|
||
(3, "商品购物与支付流程", "用户通过首页/商城搜索/分类查找商品,查看详情后加入购物车。购物车勾选商品统一结算,同一订单仅收一笔运费。完成支付生成待发货订单,商家发货用户收货后进入售后,售后期结束货款到账后佣金自动结算。", "首页、商城、购物车、订单", "商品详情、购物车、订单页", "加入购物车 → 统一结算 → 支付发货 → 售后结算"),
|
||
(4, "积分商城与积分使用流程", "用户每日签到获得固定积分。进入积分商城查看总积分与可兑商品/优惠券。积分充足直接兑换,积分不足积分+补差价兑换。提交兑换订单后平台审核/配送。", "首页、积分商城", "积分商城页、兑换订单页", "每日签到 → 积分累积 → 兑换商品/优惠券"),
|
||
(5, "佣金结算与提现流程", "下级完成订单并过售后期后佣金结算至可提现佣金。会员进入会员中心查看可提现金额,发起提现至绑定微信(遵守200元起/单日上限2000元规则)。后台审核提现申请,审核通过资金到账用户微信。", "会员中心、财务", "会员中心、提现申请页", "订单完成 → 佣金结算 → 申请提现 → 后台审核"),
|
||
(6, "活动报名流程", "用户在首页查看活动列表(名称、时间、人数限制),选择活动填写后台设置的必填信息(尺码等),提交报名后可在我的服务查看/取消报名。", "首页、我的-我的活动", "活动列表页、报名表单页", "查看活动 → 填写信息 → 提交报名 → 查看/取消"),
|
||
(7, "穿线预约流程", "用户进入穿线预约查看门店列表(名称、地址、距离、营业时间),支持按门店名称搜索。点击地址跳转地图,点击电话直接拨号。选择门店提交预约生成预约订单,后台按门店查询预约订单进行核销服务。", "首页、预约管理", "门店列表页、预约订单页", "查看门店 → 选择预约 → 生成订单 → 门店核销"),
|
||
(8, "优惠券领取与使用流程", "用户从首页进入领券中心领取优惠券(满减/无门槛/折扣),在我的优惠券查看未使用/已使用/已过期。下单时自动匹配可用券抵扣金额。后台可定向发券给会员/非会员/指定用户并记录使用与核销信息。", "首页、营销、订单", "领券中心、我的优惠券、订单页", "领取优惠券 → 下单匹配 → 抵扣金额 → 核销记录"),
|
||
(9, "后台管理核心流程", "包含商品与订单管理(商品添加/上下架/规格/佣金,订单状态处理)、会员与分销管理(会员信息/价格/权限,下级关系与佣金跟踪)、活动与预约管理(创建活动/查看名单/处理预约)、营销与内容配置(轮播图/公告/积分/优惠券/积分商城)、财务与数据统计(按日期统计/导出/审核提现/查询记录)、系统权限管理(后台用户/角色权限/门店管理)等六大模块。", "所有后台模块", "各后台管理页面", "全链路业务支撑"),
|
||
]
|
||
|
||
for i, row_data in enumerate(flow_data):
|
||
row = 5 + i
|
||
for col_idx, val in enumerate(row_data, 2):
|
||
cell = ws_flow.cell(row=row, column=col_idx, value=val)
|
||
cell.font = normal_font
|
||
cell.border = thin_border
|
||
cell.alignment = Alignment(horizontal='left', vertical='center', wrap_text=True)
|
||
ws_flow.row_dimensions[row].height = 60
|
||
|
||
# 列宽
|
||
flow_widths = [4, 20, 60, 20, 16, 28]
|
||
for i, w in enumerate(flow_widths, 2):
|
||
ws_flow.column_dimensions[get_column_letter(i)].width = w
|
||
|
||
# ====== Sheet 5: 开发里程碑 ======
|
||
ws_mile = wb.create_sheet("开发里程碑")
|
||
ws_mile.sheet_view.showGridLines = False
|
||
|
||
ws_mile['B2'] = "开发里程碑计划"
|
||
ws_mile['B2'].font = Font(size=16, bold=True, color="1F4E79")
|
||
|
||
mile_headers = ["阶段", "里程碑名称", "主要交付物", "包含模块", "预计周期", "开始日期", "结束日期", "状态"]
|
||
for col_idx, h in enumerate(mile_headers, 2):
|
||
cell = ws_mile.cell(row=4, column=col_idx, value=h)
|
||
cell.fill = header_fill
|
||
cell.font = white_font
|
||
cell.alignment = Alignment(horizontal='center', vertical='center')
|
||
cell.border = thin_border
|
||
ws_mile.row_dimensions[4].height = 24
|
||
|
||
mile_data = [
|
||
("Phase 1", "基础架构搭建", "完成项目框架搭建、数据库设计、API接口定义", "整体架构", "2周", "Day 1", "Day 14", "待启动"),
|
||
("Phase 2", "用户端核心功能", "登录注册、首页框架、商城基础功能", "登录注册、首页、商城", "3周", "Day 15", "Day 35", "待启动"),
|
||
("Phase 3", "交易核心功能", "购物车、订单流程、支付集成", "购物车、订单、支付", "2周", "Day 36", "Day 49", "待启动"),
|
||
("Phase 4", "会员与分销系统", "会员中心、佣金体系、提现功能", "会员中心、财务", "2周", "Day 50", "Day 63", "待启动"),
|
||
("Phase 5", "营销与活动", "优惠券、积分商城、活动报名", "营销、比赛活动", "2周", "Day 64", "Day 77", "待启动"),
|
||
("Phase 6", "后台管理端", "商品管理、订单管理、会员管理、财务统计", "后台所有模块", "3周", "Day 78", "Day 98", "待启动"),
|
||
("Phase 7", "系统集成测试", "全链路测试、Bug修复、性能优化", "全部模块", "2周", "Day 99", "Day 112", "待启动"),
|
||
("Phase 8", "上线部署", "生产环境部署、数据迁移、上线文档", "全部模块", "1周", "Day 113", "Day 119", "待启动"),
|
||
]
|
||
|
||
for i, row_data in enumerate(mile_data):
|
||
row = 5 + i
|
||
for col_idx, val in enumerate(row_data, 2):
|
||
cell = ws_mile.cell(row=row, column=col_idx, value=val)
|
||
cell.font = normal_font
|
||
cell.border = thin_border
|
||
cell.alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)
|
||
if col_idx == 8: # 状态列
|
||
cell.fill = p3_fill
|
||
cell.font = Font(color="FFFFFF", bold=True, size=10)
|
||
ws_mile.row_dimensions[row].height = 30
|
||
|
||
# 列宽
|
||
mile_widths = [8, 18, 30, 24, 10, 10, 10, 10]
|
||
for i, w in enumerate(mile_widths, 2):
|
||
ws_mile.column_dimensions[get_column_letter(i)].width = w
|
||
|
||
# 保存
|
||
output_path = "/Users/gxwebsoft/JAVA/paopao-java/docs/output/paopao开发计划表.xlsx"
|
||
wb.save(output_path)
|
||
print(f"✅ 开发计划表已生成: {output_path}")
|