我为真实商业问题构建了 Sales Visualizer(Quantium 软件工程模拟)
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 虚拟环境。
- 安装依赖(
dash、pandas等)。
收获: 一个干净、组织良好的工作台能在后期节省无数时间。
任务 2 – 数据处理:重塑数据的艺术
三个凌乱的 CSV 包含整个 Morsel 产品线的交易数据。我将它们转换为整洁的数据集。
流水线步骤
- 过滤 – 仅保留 Pink Morsels 的行。
- 计算 – 计算
Sales = quantity × price。 - 标准化 – 去除货币符号,解析日期,统一地区名称。
- 输出 – 写入包含
Sales、Date、Region列的干净 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 的问题的答案? 自己运行应用程序,自己去发现。数据不会说谎。 📊