Finance Dashboard — 开发者文档

> 最后更新:2026-06-08 > 作者:Hermes Agent > HTTP:https://sieta.vip/sietadata/finance-dashboard.html

概述

SIETA 经营财报 Dashboard 是一个纯静态 HTML 页面,数据嵌入在页面中,通过 Chart.js 渲染交互式图表。页面支持店铺筛选、环比/同比对比、期间范围选择。 - 访问地址:https://sieta.vip/portal/finance/ - 认证方式:nginx 层 cookie 认证(finance_auth=Sieta@2006 或 portal 的 admin_token cookie) - 部署路径/var/www/sieta/finance/index.html - 设计风格:Flat Design(无阴影、色块分明、Outfit 字体)

数据源

finance_source.xlsx

路径:~/sietadata/dashboard/finance_source.xlsx 包含 5 个 Sheet:
Sheet 用途 当前使用
月度数据 按月+店铺的损益数据 ✅ 唯一数据源
季度数据 按季汇总 ❌ 未使用
半年数据 半年汇总 ❌ 未使用
年度数据 年度汇总 ❌ 未使用
资产负债表 资产负债数据 ❌ 未使用

月度数据结构(24 列)

列名 说明 用途
年月 格式 YYYYMM(如 202301) 时间维度
店铺 店铺编码(101-108,不含 107) 店铺维度
销售 销售额 KPI + 图表
成本 销售成本 计算毛利
毛利 销售额 - 成本 KPI + 图表
房租 门店租金 经营费用
工资 员工工资 经营费用
奖金 员工奖金 经营费用
运费 物流运费 经营费用
水电 水电费 经营费用
电信 通信费 经营费用
商场扣点 商场扣点费 商场费用
商场扣税 商场扣税费 商场费用
商场促销费 促销活动费 商场费用
商场费用 其他商场费 商场费用
商场其它 商场杂费 商场费用
装修分摊 装修费分摊 其它经营费用
办公费 办公用品 其它经营费用
手续费 银行手续费 其它经营费用
其它 杂项支出 其它经营费用
场地租金 办公室/仓库租金 后台费用
主管工资 主管薪资 后台费用
内勤工资 内勤薪资 后台费用
净利润 毛利 - 全部费用 KPI + 图表

费用计算层级

`` 基础经营费用 = 房租 + 工资 + 奖金 + 运费 + 水电 + 电信 商场费用汇总 = 商场扣点 + 商场扣税 + 商场促销费 + 商场费用 + 商场其它 其它经营费用 = 装修分摊 + 办公费 + 手续费 + 其它 经营费用 = 基础经营费用 + 商场费用汇总 + 其它经营费用 后台费用 = 场地租金 + 主管工资 + 内勤工资 总费用 = 经营费用 + 后台费用 `

店铺编码映射

编码 店名 说明
0 全部 JS 动态汇总
101 一店
102 二店
103 三店 已关闭/已合并
104 四店
105 五店
106 六店
107 不存在,跳过
108 八店
> 页面只显示有销售数据的店铺(
getActiveStores() 动态检测)。

生成流程

1. 更新数据

编辑
finance_source.xlsx 的「月度数据」sheet,新增行或修改已有数据。 > ⚠️ 必须用 int 类型存「年月」和「店铺」列,不能用字符串。缺失的列脚本自动填 0。

2. 运行生成脚本

`bash cd ~/sietadata/dashboard && python3 build_dashboard_v2.py ` 依赖:pandasnumpyopenpyxl(系统 python3 已安装)。 脚本做了什么: 1. 读取「月度数据」sheet → pandas DataFrame 2. 填充缺失列为 0 3. 计算经营费用/毛利率/净利率/费用率 4. 汇总所有店铺数据生成「全部」(店铺=0)行 5. 将数据序列化为 JSON 嵌入 HTML 模板 6. 输出 index.html 到当前目录

3. 部署到 nginx

`bash sudo cp ~/sietadata/dashboard/index.html /var/www/sieta/finance/ `

4. 验证

`bash curl -sI -H 'Cookie: finance_auth=Sieta@2006' https://sieta.vip/portal/finance/

预期:HTTP/1.1 200 OK

`

页面功能

KPI 卡片(6 个)

- 销售额、毛利、净利润、毛利率、费用率、净利率 - 显示环比/同比变化百分比(红涨绿跌)

对比图表(6 个)

- 3 列网格布局,各店铺分组柱状图 - 蓝色=本期,橙色=环比,灰色=同比 - 对比数据不存在时显示「环比无数据」标记

经营趋势图(底部全宽)

- 折线图:销售额(蓝)、毛利(橙)、净利润(绿) - 选中期间内逐月展示

数据明细表

- 按店铺+月份列出全部财务指标 - 最优值标红加粗

交互控制

- 店铺筛选:按钮组,默认「全部」,可多选 - 对比模式:环比 / 同比 / 环比+同比 - 期间范围:起止月份下拉框

认证架构

nginx 配置(
/etc/nginx/sites-enabled/default): ` location /portal/finance/ { # 双 cookie 认证:finance_auth 或 admin_token set $finok 0; if ($cookie_finance_auth = "Sieta@2006") { set $finok 1; } if ($cookie_admin_token) { set $finok 1; } if ($finok = 0) { return 401; } alias /var/www/sieta/finance/; index index.html; } ` 两种访问方式: 1. 直接访问 → 401 → 先访问 /portal/finance/auth?token=Sieta@2006 设置 cookie 2. 从 Portal 首页(/portal/)进入 → admin_token cookie 已存在 → 免检

维护注意事项

添加新店铺

1. 在
finance_source.xlsx 月度数据中新增该店铺的行 2. 在 store_names 字典中添加映射(build_dashboard_v2.py 第 82 行): `python store_names = {0:'全部', 101:'一店', ..., 108:'八店', 109:'新店'} `

添加新费用科目

1. 在 xlsx 中添加新列 2. 在脚本的
for col in [...] 列表(第 23 行)中添加列名 3. 确认该列应归入哪个费用类别(基础经营/商场/其它/后台)

修改页面样式

- 所有 CSS 在 HTML 模板的