# 飞书每日工作汇报系统实施计划 > **给执行代理的要求:** 实施本计划时必须使用 `superpowers:subagent-driven-development`(推荐)或 `superpowers:executing-plans`。所有步骤使用复选框语法,便于逐项跟踪。 **目标:** 构建第一版飞书日报 Web 应用,让员工提交每日报告,让管理者在一个页面浏览所有日报记录。 **架构:** 使用 Python 标准库实现一个零第三方依赖的小型 Web 应用。后端使用 `http.server` 提供页面和 API,使用 `sqlite3` 保存员工与日报数据,使用 `urllib.request` 调用飞书机器人 Webhook。前端使用原生 HTML/CSS/JavaScript。 **技术栈:** Python 标准库、`http.server`、`sqlite3`、`unittest`、原生 HTML/CSS/JavaScript、飞书自定义机器人 Webhook。 --- ## 文件结构 - `requirements.txt`:说明项目只使用 Python 标准库。 - `.env.example`:环境变量示例。 - `.gitignore`:忽略本地数据库、环境变量和缓存文件。 - `data/employees.json`:第一版员工名单种子文件。 - `daily_report/config.py`:读取环境变量和 `.env` 配置。 - `daily_report/db.py`:SQLite 建表、员工导入和基础查询。 - `daily_report/report_service.py`:日报校验、创建/更新、列表、未提交人员和 CSV 导出。 - `daily_report/robot_service.py`:飞书机器人提醒/汇总消息体和 Webhook 发送。 - `daily_report/web.py`:HTTP 页面路由、API 路由和静态文件服务。 - `daily_report/static/styles.css`:提交页和管理页样式。 - `daily_report/static/manager.js`:管理页筛选、复制汇总和数据加载逻辑。 - `tests/test_report_service.py`:日报业务测试。 - `tests/test_robot_service.py`:机器人消息体测试。 - `tests/test_web.py`:页面和 API 冒烟测试。 - `README.md`:中文使用说明。 ## 任务 1:项目骨架 - [x] 创建 Python 包 `daily_report`。 - [x] 创建 `requirements.txt`,说明无需第三方依赖。 - [x] 创建 `.gitignore`。 - [x] 创建 `.env.example`。 - [x] 创建 `data/employees.json` 示例员工名单。 - [x] 实现 `daily_report/config.py`,读取端口、基础 URL、数据库路径、员工名单路径和飞书 Webhook 配置。 验证: ```bash python -m py_compile daily_report/config.py ``` ## 任务 2:数据层和日报服务 - [x] 实现 `daily_report/db.py`。 - [x] 创建 `employees` 表。 - [x] 创建 `daily_reports` 表。 - [x] 导入 `data/employees.json` 中的有效员工。 - [x] 实现同一员工同一天唯一日报。 - [x] 实现 `daily_report/report_service.py`。 - [x] 校验必填字段:员工 ID、日期、今日完成、明日计划。 - [x] 重复提交时更新当天已有日报。 - [x] 计算已提交、未提交和应提交人数。 - [x] 导出 CSV。 - [x] 编写 `tests/test_report_service.py`。 验证: ```bash python -m unittest tests.test_report_service ``` ## 任务 3:飞书机器人服务 - [x] 实现 `daily_report/robot_service.py`。 - [x] 生成“填写日报”提醒消息体。 - [x] 生成“日报提交汇总”消息体。 - [x] 支持调用飞书自定义机器人 Webhook。 - [x] 编写 `tests/test_robot_service.py`。 验证: ```bash python -m unittest tests.test_robot_service ``` ## 任务 4:页面和 API - [x] 实现 `daily_report/web.py`。 - [x] 提供 `/submit` 员工日报提交页。 - [x] 提供 `/manager` 管理者日报浏览页。 - [x] 提供 `POST /api/reports` 创建或更新日报。 - [x] 提供 `GET /api/reports?date=YYYY-MM-DD` 查询某日汇总。 - [x] 提供 `GET /api/reports/export?date=YYYY-MM-DD` 导出 CSV。 - [x] 提供 `POST /api/robot/send-reminder` 发送飞书提醒。 - [x] 提供 `POST /api/robot/send-summary` 发送飞书汇总。 - [x] 实现 `daily_report/static/styles.css`。 - [x] 实现 `daily_report/static/manager.js`。 - [x] 编写 `tests/test_web.py`。 验证: ```bash python -m unittest tests.test_web ``` ## 任务 5:文档和手动验证 - [x] 编写中文 `README.md`。 - [x] 更新设计文档中的实际技术方案。 - [x] 启动本地服务。 - [x] 验证管理页可以访问。 - [x] 验证日报提交 API 可以写入数据。 - [x] 验证日报汇总 API 可以读取数据。 启动: ```bash python -m daily_report.web ``` 访问: - 提交页:http://localhost:8787/submit - 管理页:http://localhost:8787/manager ## 最终验证 ```bash python -m unittest discover -s tests python -m py_compile daily_report/config.py daily_report/db.py daily_report/report_service.py daily_report/robot_service.py daily_report/web.py ``` 当前验证结果: - `python -m unittest discover -s tests`:8 个测试通过。 - `python -m py_compile ...`:通过。 - `http://localhost:8787/manager`:返回 200。 ## 后续增强 - 接入飞书 OAuth,自动识别员工身份。 - 增加管理者登录和权限控制。 - 增加飞书多维表格同步。 - 增加定时任务,让提醒和汇总自动发送。 - 增加员工名单管理页面,减少手工编辑 JSON。