AI + Flask + Docker:从实际需求到完整解决方案
同事每个月需要统计学生出勤率,我看了下,90个左右的学生,表格需要手动数,太耗时间,想起自己以前学数据处理的情形,很像;再想到现在ai助手这么多,干脆试试一行代码不写看看能不能出来一个程序;一试吓一跳,真不用写一行代码,给我做规划,写代码,调试,部署,一气呵成;感觉快失业了。
下面是我跟ai聊天,完成任务后,让他做的整理总结,姑且做个记录吧。
1️⃣ AI 工具的强大之处
在这次项目中,我深刻体会到 AI(比如 ChatGPT)在实际编程任务中的高效帮助。无论是代码优化、问题排查,还是技术方案设计,AI 都能快速提供解决方案,并且随着沟通深入,能够逐步调整代码逻辑,直到最终实现完整功能。
在这次实践中,我主要使用 AI 来:
- 需求分析与功能规划
- 代码编写与优化
- 错误调试与修复
- Docker 部署方案设计
- 网络与安全问题排查
这不仅极大提升了开发效率,还让我能专注于更核心的业务逻辑,而不必陷入重复性的细节调试。
2️⃣ 生活 & 工作中的实际需求
这个项目的起点是一个常见的 考勤统计需求。
问题:手动统计考勤数据费时费力
同事们需要定期从 Excel / CSV 表格中统计学生或员工的考勤情况,包括:
- 缺勤天数
- 出勤天数
- 是否从未打卡
- 出勤天数是否低于一定阈值(如 7 天)
手动处理数据不仅耗时,还容易出错。因此,我们希望开发一个 自动化的考勤统计系统,通过 上传 Excel 文件,自动计算结果并生成可下载的报告。
3️⃣ 需求分析与路径规划思路
从想法到实现,我们的路径大致如下:
1️⃣ 明确需求:确定考勤统计逻辑,定义核心功能(缺勤、出勤、打卡情况分析等)。
2️⃣ 编写 Python 统计程序:
- 解析 Excel (
.xlsx
) 数据(优化前使用 CSV,后续改进为直接处理 Excel) - 提取考勤周期
- 计算出勤 & 缺勤天数
- 生成统计结果
3️⃣ 搭建 Flask Web 服务:
- 实现文件上传
- 调用统计代码处理数据
- 提供下载按钮导出结果
4️⃣ 前端优化:
- 设计一个美观的 UI
- 提供用户友好的交互体验
5️⃣ Docker 部署:
- 容器化 Flask 应用,方便局域网使用 & 维护
- 解决服务器端口、网络、安全等问题
4️⃣ 整体技术方案记录
💡 技术栈选择
组件 | 技术 | 说明 |
---|---|---|
统计逻辑 | Python + openpyxl | 直接处理 Excel (.xlsx ) 文件 |
Web 服务 | Flask | 提供上传 & 处理接口 |
前端 | HTML + CSS | 美化用户界面 |
部署 | Docker | 方便管理与分发 |
服务器 | Ubuntu 22 | 运行 Docker 容器 |
💻 代码结构
1 | attendance_app/ |
🚀 关键技术点
✅ 解析 Excel 文件
- 直接处理
.xlsx
文件,无需转换为 CSV - 使用
openpyxl
解析数据,提取时间范围 - 排除周六日,确保统计准确
✅ Flask 实现文件上传 & 结果下载
request.files['file']
处理.xlsx
文件上传send_file()
实现文件下载
✅ Docker 部署
Dockerfile
构建 Flask 镜像docker-compose.yml
管理容器-p 8011:5000
端口映射,确保局域网可访问
✅ 网络问题排查与解决方案
- 初始问题:Docker
bridge
网络模式下,宿主机无法访问 Flask 服务 - 排查步骤:
- 确保 Flask 监听
0.0.0.0:5000
- 检查
docker network inspect bridge
发现bridge
配置异常 - 通过
host
网络模式 (--network=host
) 成功访问
- 确保 Flask 监听
- 最终解决方案:
- 采用
host
网络模式 (docker run --network=host
) - 避免
bridge
网络模式下的端口映射问题
- 采用
5️⃣ 项目带来的启示
1. AI 工具极大提升开发效率
- 通过 AI 辅助,我们能更快分析需求、编写代码、排查错误。
- 在遇到技术难题时,AI 能提供非常有价值的建议和示例。
2. 需求落地要考虑实际应用场景
- 需求不是一次就能想清楚的,需要不断优化。
- 从手动统计 Excel 数据,到自动化 Web 应用,再到 Docker 化部署,每一步都让系统更实用。
3. 良好的部署方案让项目更易维护
- 采用 Docker 让应用能够快速在不同环境下运行。
- 通过
docker-compose
,可以轻松管理多个容器(如 Nginx 反向代理)。
4. AI 辅助开发 ≠ 取代开发者,而是增强能力
- AI 可以帮我们节省大量时间,但仍然需要开发者把控需求、调试代码、优化架构。
- 人工智能是一个 强大的助手,但最终的决策仍然依赖于开发者的经验。
📌 结语
这次的 Flask + Docker 部署实践,不仅提升了团队工作效率,也让我们更加深刻理解 如何从实际需求出发,逐步构建一个可用的系统。
📢 如果你也有类似的需求,不妨试试 AI + 自动化,或许能带来意想不到的提升! 🚀
- 本文作者: Linking
- 本文链接: https://linking.fun/2024/12/09/用ai帮同事做了个Excel考勤统计的前后端/
- 版权声明: 版权所有,转载请注明出处!