我为真实商业问题构建了 Sales Visualizer(Quantium 软件工程模拟)

发布: (2025年12月30日 GMT+8 06:22)
9 min read
原文: Dev.to

Source: Dev.to

抱歉,我无法直接访问外部链接获取文章内容。请您把需要翻译的文本粘贴到这里,我会按照要求为您翻译成简体中文并保留原有的格式。

年终项目:Quantium 软件工程模拟

“最好的学习方式是通过构建真实的东西。”

我在 2025 年结束时完成了 Quantium 在 Forage 上的 软件工程 模拟。在完成 Tata GenAI 数据分析挑战 和多个数据驱动的应用后,我已经准备好进行另一个实战项目。

想亲自尝试吗? 在此查看模拟 here(以下有剧透!)。

场景 – Quantium 的软件工程师

你在 Quantium 的金融服务业务部门担任 软件工程师,为客户 Soul Foods 工作。

客户问题目标
Soul Foods在提价后,他们最畅销的糖果 Pink Morsels 的销量下降构建交互式可视化工具,以回答:“在2021年1月15日的提价前后,销量是否更高?”

这并非玩具教程——它是一个需要代码驱动解决方案的真实商业问题。

Source:

挑战 – 六个递进任务

模拟为工作提供了脚手架,使每个任务自然地在前一个任务的基础上构建,就像真实项目一样。

任务 1 – 搭建本地开发环境

  • Fork 代码仓库。
  • 创建 Python 虚拟环境。
  • 安装依赖(dashpandas 等)。

收获: 一个干净、组织良好的工作台能在后期节省无数时间。

任务 2 – 数据处理:重塑数据的艺术

三个凌乱的 CSV 包含整个 Morsel 产品线的交易数据。我将它们转换为整洁的数据集。

流水线步骤

  1. 过滤 – 仅保留 Pink Morsels 的行。
  2. 计算 – 计算 Sales = quantity × price
  3. 标准化 – 去除货币符号,解析日期,统一地区名称。
  4. 输出 – 写入包含 SalesDateRegion 列的干净 CSV。

我编写了一个防御式 ETL 脚本,配有灵活的列检测助手(find_column),以应对命名不一致的情况。

任务 3 – 创建 Dash 应用

构建了一个最小化的 Dash 应用,具备:

  • 显示明确标题,阐述业务问题。
  • 绘制每日销售额的 折线图
  • 2021‑01‑15(涨价日期)添加垂直标记。

该图表立即回答了 Soul Foods 的问题——你可以看到影响。

任务 4 – 让它交互且美观

根据客户需求添加功能:

  • 单选按钮 用于按地区过滤(North、East、South、West、All)。
  • 使用自定义 CSS 实现现代、简洁的外观。
  • 响应式布局,适配不同屏幕尺寸。

Dash 回调使得在选择地区时图表即时更新。

任务 5 – 编写测试套件

生产级代码需要测试。使用 pytest 结合 Dash 的测试工具,我验证了:

  • 标题是否存在。
  • 图表是否渲染。
  • 地区选择器功能。

递归组件查找器遍历布局树,防止代码演进过程中的回归。

任务 6 – 用 CI 自动化一切

一个 Bash 脚本将所有步骤串联起来,实现持续集成:

#!/usr/bin/env bash
set -euo pipefail

# Activate virtual environment
source .venv/bin/activate

# Install dependencies (if needed)
pip install -r requirements.txt

# Run the full test suite
pytest

该脚本返回正确的退出码,使 CI 引擎能够自动报告成功或失败。

为什么这个挑战很酷

#Reason
1. 逐步复杂性每个任务都基于前一个任务构建,为更智能的架构选择提供上下文。
2. 真实世界的混乱货币符号、不一致的列名以及多个输入文件迫使我们编写防御性、可用于生产的代码。
3. 端到端所有权从原始 CSV 到带测试和 CI 的部署应用——我涉及了技术栈的每一层。
4. 实际业务背景回答“价格上涨前后销售额是否更高?”反映了真实分析师的工作。
5. 现代技术栈Dash + Plotly + Pandas 是生产环境中使用的技术栈,技能可直接迁移。

我构建的内容

可交付物功能描述
数据处理脚本将三个原始 CSV 转换为干净、可分析的数据集。
Dash 应用带有地区过滤功能的交互式销售可视化工具。
可视化模块带有价格上涨注释的 Plotly 折线图。
测试套件基于 Pytest 的测试,验证核心 UI 组件。
CI 自动化用于 CI 流水线中自动化测试的 Bash 脚本。

技术栈

  • Python 3.9
  • Pandas – 数据整理
  • Dash & Plotly – 交互式网页应用与可视化
  • Pytest – 单元与集成测试
  • Bash – CI 自动化脚本

最后感想

Quantium 模拟为我提供了一个紧凑的、端到端的体验,仿佛真实的软件工程项目。我在提升数据处理、可视化、测试和 CI 技能的同时,交付了有形的业务洞察。如果你喜欢构建实用的解决方案,我强烈建议你尝试一下该模拟!

基础

  • Dash – 用于数据应用的 Web 框架
  • Plotly Express – 交互式、精美的图表
  • Pandas – 数据处理强大工具
  • Pytest – 测试框架
  • Bash – CI 自动化脚本
  • CSS – 为精致 UI 定制样式

👉 My Submitted Repo
👉 Original Source Code

关键要点

  • 从干净的数据开始 – 垃圾进,垃圾出。投资稳健的 ETL。
  • 让数据说话 – 简单的可视化往往比复杂的更能讲好故事。
  • 为人而建 – 漂亮的 UI 不是虚荣,而是可用性。
  • 早测、常测 – 即使是简单的测试也能捕获真实的 bug。
  • 自动化枯燥工作 – CI 脚本可节省大量手动工作时间。
  • 模块化架构制胜 – 将数据、可视化和 Web 层分离,使迭代更轻松。

亲自尝试

然后回来告诉我:

  • 你是如何为可视化工具设置样式的?
  • 你在数据中发现了哪些模式?
  • 价格上涨后,销售额实际上是上升还是下降? 😏

潜在的后续步骤

增强描述
Additional Filters添加日期范围选择器或产品类型选择器
Statistical Annotations在图表上直接显示前后平均值
Docker Deployment容器化以便于云部署
Database Backend用合适的数据存储替代 CSV
Advanced Analytics趋势线、预测、异常检测

最终思考

这个项目让我跨越了数据工程师、前端开发者和 DevOps 实践者的角色。真实的软件问题并不是整齐划一的。我收获了一个可运行的应用、清晰的架构以及使用现代数据可视化栈的实践经验。

Soul Foods 的问题的答案? 自己运行应用程序,自己去发现。数据不会说谎。 📊

Back to Blog

相关文章

阅读更多 »

第39天提升我的数据科学技能

反思:在数据工作中,一种让许多人感到沮丧却鲜少人提及的沉默斗争:“我学到了很多……但一切都显得支离破碎。” 今天……