Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

用ai帮同事做了个Excel考勤统计的前后端

阅读数:次 2024-12-09
字数统计: 1.4k字   |   阅读时长≈ 5分

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
2
3
4
5
6
7
8
9
10
11
12
13
attendance_app/
├── app.py # Flask 后端
├── calculator.py # 计算考勤逻辑(优化后支持 Excel)
├── templates/
│ ├── index.html # 首页
│ ├── result.html # 结果页
├── static/
│ ├── style.css # CSS 样式
├── uploads/ # 存储上传文件
├── results/ # 存储统计结果
├── requirements.txt # Python 依赖
├── Dockerfile # Docker 构建文件
└── docker-compose.yml # Docker Compose 部署配置(可选)

🚀 关键技术点

✅ 解析 Excel 文件

  • 直接处理 .xlsx 文件,无需转换为 CSV
  • 使用 openpyxl 解析数据,提取时间范围
  • 排除周六日,确保统计准确

✅ Flask 实现文件上传 & 结果下载

  • request.files['file'] 处理 .xlsx 文件上传
  • send_file() 实现文件下载

✅ Docker 部署

  • Dockerfile 构建 Flask 镜像
  • docker-compose.yml 管理容器
  • -p 8011:5000 端口映射,确保局域网可访问

✅ 网络问题排查与解决方案

  • 初始问题:Docker bridge 网络模式下,宿主机无法访问 Flask 服务
  • 排查步骤:
    1. 确保 Flask 监听 0.0.0.0:5000
    2. 检查 docker network inspect bridge 发现 bridge 配置异常
    3. 通过 host 网络模式 (--network=host) 成功访问
  • 最终解决方案:
    • 采用 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考勤统计的前后端/
  • 版权声明: 版权所有,转载请注明出处!
  • ai
  • python
  • excel
  • ai

扫一扫,分享到微信

running-records
weekend_thoughts
  1. 1. AI + Flask + Docker:从实际需求到完整解决方案
    1. 1.1. 1️⃣ AI 工具的强大之处
    2. 1.2. 2️⃣ 生活 & 工作中的实际需求
      1. 1.2.1. 问题:手动统计考勤数据费时费力
    3. 1.3. 3️⃣ 需求分析与路径规划思路
    4. 1.4. 4️⃣ 整体技术方案记录
      1. 1.4.1. 💡 技术栈选择
      2. 1.4.2. 💻 代码结构
      3. 1.4.3. 🚀 关键技术点
    5. 1.5. 5️⃣ 项目带来的启示
      1. 1.5.1. 1. AI 工具极大提升开发效率
      2. 1.5.2. 2. 需求落地要考虑实际应用场景
      3. 1.5.3. 3. 良好的部署方案让项目更易维护
      4. 1.5.4. 4. AI 辅助开发 ≠ 取代开发者,而是增强能力
    6. 1.6. 📌 结语
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN