返回项目

项目 01 · 案例研究

自动化报告平台

在 Maxcess International,我用 Python、SQL、React 和 Supabase 构建了一个平台,每月为全国大型零售连锁企业提取、验证并交付超过 110 份高管报告,因为每个客户都需要自己的格式,既要按时交付,又要数据完整。

30 秒速览

为什么

在 Maxcess International,我将全国大型零售连锁企业的高管报告自动化,并围绕安防技术领域的领军品牌 inVue、CrossPoint 和 Indyme 进行参数化。

服务对象零售连锁企业中具备高管视野的战略人员和运营岗位人员
目标每周、每半月和每月的高管报告,具备可审计性、可复制性与可视化:每月超过 110 份

我构建了什么

  1. 数据源

    来自 inVue、CrossPoint 和 Indyme 平台的 CSV、JSON、HTML 和 TXT 导出文件,每家门店和每个连锁企业各不相同。过去手工操作要花数小时,现在由 Python 提取。

  2. 模型

    每个指标都始于术语表,之后才变成代码。标准契约和 Supabase、DuckDB 中的 SQL 工作流涵盖超过 10 种客户和计算变体,并标记不完整的数据。

  3. 输出

    一份月度高管 PPTX、一份 PDF 和 Word 格式的详细分析报告(RAD),以及可通过二维码访问的 HTML 仪表板,由一个按客户设置角色、拥有超过 4,000 项测试的平台提供。

工具

  • Python
  • SQL
  • DuckDB
  • Supabase
  • React
  • Azure SQL
  • Power Automate
  • Microsoft 365
  • Cloudflare
  • AI 智能体

代码仓库

GitHub 代码仓库, 即将推出

完整案例

起点

Maxcess International 把零售安防领域的领先技术与生态系统引入墨西哥:inVue、CrossPoint 和 Indyme。它们的系统用于保护展柜、管控仓库的出入权限,并衡量全国大型零售连锁企业的门店运营。

每台设备都会留下痕迹:开启、访问、通知和响应时间。这些痕迹只有按时送达、并采用每个客户各自的格式时才有价值,而每位 Strategic Account Manager 都按自己的日历管理客户:每周、每 10 天、每半月和每月的报告。各连锁企业中具备高管视野的战略人员和运营岗位人员都会阅读这些报告。

挑战

数据存放在各个品牌的平台里,按门店和连锁企业导出的文件各不相同:CSV、JSON、HTML 和 TXT。手工下载、清洗并组装每份报告需要数小时,而只要有一个数字出错,整份文件就会失去可信度。

挑战不在于一份报告,而是每月超过 110 份,涉及超过 10 种客户变体和超过 10 种计算变体,同时既不能损害数据完整性,也不能丢掉每个客户自己的特色。

我的做法

在写任何代码之前,每个指标都始于术语表:它衡量什么、来自哪里、如何验证。与每位 Strategic Account Manager 的需求调研、每种格式的设计和交互,都会先写成规范,然后才变成 SQL 工作流或界面。

我分层构建,在本地开发,并且从第一天起就配有测试。我指挥角色明确的 AI 智能体——架构、前端、优化、设计和质量控制——并在合并之前,对照规范审查每一次交付。

端到端

提取:Python 脚本自动提取各平台的导出文件——这项工作过去靠手工完成,要花数小时。在平台内部,Data Funnel 接收每个文件,识别它属于哪个客户和哪个期间,去除重复项,并输出一个附带质量报告的标准数据集。

模型:标准契约规定了每个批次必须包含的列。SQL 引擎借助 DuckDB 在浏览器中运行,并持久化保存在 Supabase(基于 PostgreSQL)中。每个批次都保存着自己的指纹和计算它的引擎版本,因此任何数字都可以追溯到它的源文件。

输出:Report Studio 引导每次交付依次走完六个步骤——设置、数据加载、指标、内容、预览和导出——并生成三种格式:月度高管 PPTX、Word 和 PDF 格式的详细分析报告(RAD),以及每月发布、可通过二维码和安全链接访问的交互式 HTML 仪表板。

我构建了什么

一个多用户平台,分为四种角色——管理员、Strategic Account Manager、支持人员和访客——其中每个客户都是一个独立隔离的环境:每位 Strategic Account Manager 只能看到自己的客户,管理员则审计用户及其活动。

  • Command Center:在一个屏幕上呈现周期的状态,并配有一个助手,可针对您的权限所能看到的内容作答。
  • Data Funnel:对每个批次进行加载、识别、合并和验证,并附有其质量报告和签字确认。
  • Report Studio:六步向导,用于组装、审查并导出每份报告。
  • 交互式分析仪表板:概览、影响事件、锁具、展柜、区域、按天和小时的活动,以及附录;带有筛选器,并可下载 CSV、PPTX 和 RAD。
  • 按门店的状态:每个批次中有数据的天数、可用性和事件信号灯。
  • 勘测:按比例的编辑器,用于在每家门店的平面图上摆放展柜和设备,并提供按设备划分的热力图。
  • 日志、Task Manager 和周期日历:发现、决策、待办事项和每月的结账日,并与 Microsoft 365 连接。
  • 数据存储库与数据探索器、Dashboard Studio、格式与术语表、参考中心、我的进度、自动化和管理。

我如何确认一个数字是对的

每份报告在发出之前都要经过自动检查:文中的每个数字都必须存在于数据包里,每个名称都必须出现在目录中,并且不能留下任何未解决的通知。AI 辅助撰写只提出建议;如果未通过这些检查,报告就会改用确定性模板,并明确注明这一点。

背后是超过 4,000 项自动化测试,每次变更都会运行,使用 Vitest、Testing Library 和 Playwright。

改变了什么

每月超过 110 份经过验证、按时交付的报告。过去要花数小时的提取工作如今自动运行,每个客户都能拿到带有自己品牌、字体和图表的专属格式。

客户很喜欢这些格式,并由此衍生出新的用途:连锁企业的运营、市场营销和其他团队现在也会阅读它们。HTML 仪表板是迈向季度和年度对比的第一步。

我学到了什么

完整性是设计出来的:在写代码之前先有术语表和契约,能省下数周的修正工作。而把自动化做好,并不意味着把过程藏起来——而是让每个数字的来源一目了然。

下一步

把季度和年度对比引入仪表板,整合并行运行的 Power BI 架构,并在准备就绪后发布代码仓库。

端到端技术栈

  1. 提取与数据源

    提取并读取各平台的导出文件

    • Python
    • CSV
    • JSON
    • HTML
    • TXT
    • Excel
    • SheetJS (xlsx)
    • PapaParse
  2. 模型与 SQL

    标准契约、计算与存储

    • SQL
    • DuckDB-WASM
    • Apache Arrow
    • Supabase
    • PostgreSQL
    • Azure SQL
  3. 后端与自动化

    服务、工作流与连接

    • Supabase Auth 与 Storage
    • Node.js 无服务器函数
    • Power Automate
    • Microsoft 365
    • API 密钥
  4. 前端

    平台及其各个模块

    • React
    • JavaScript
    • Vite
    • React Router
    • Tailwind CSS
    • PostCSS
    • Lucide
  5. 可视化

    图表、地图与仪表板

    • D3
    • Recharts
    • react-simple-maps
    • Matplotlib
    • squarify
  6. 文档与输出

    PPTX、RAD、HTML 仪表板与下载

    • PptxGenJS
    • docx
    • jsPDF
    • html2canvas
    • PowerShell
    • JSZip
    • qrcode
  7. AI

    助手、撰写与受指挥的开发

    • 通过 API 调用的语言模型:Llama、GPT、Claude、DeepSeek 和 Gemini
    • AI 智能体
    • Spec Driven Development
  8. 质量

    每次变更都运行测试

    • Vitest
    • Testing Library
    • jsdom
    • Playwright
    • jsQR
    • ESLint
    • Husky
    • GitHub Actions
  9. 交付

    发布与提供服务

    • Vercel
    • Cloudflare Pages
    • Wrangler
    • GitHub

截图 · 21

测试数据或已模糊处理的数据:不含客户的真实数字。