# sb-weekreport **Repository Path**: limyang94/sb-weekreport ## Basic Information - **Project Name**: sb-weekreport - **Description**: 傻逼周报 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-03 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人维度禅道周报生成器 从禅道数据库**只读**拉取指定账号一周的工作数据,按「任务所属项目的项目经理」分组,自动生成多份 Markdown 周报,直接复制粘贴到公司周报表格。 ## 周报内容与取数口径 | 字段 | 数据来源 | |---|---| | 本周任务 | 宽口径并集:本周报过工时 ∪ 本周完成 ∪ 本周开始(estStarted/realStarted 落在本周)∪ 指派给我的进行中 ∪ 多人任务团队(zt_taskteam) | | 进度 | 任务 status 为 done/closed → 100%;否则 `round(consumed/(consumed+left)*100)`(禅道官方口径);附本周投入工时与剩余工时 | | 本周产出物 | 本周完成任务、本周解决 Bug、本周提交 Bug、新增文档(zt_doc)、上传附件(zt_file)、代码提交(zt_repohistory) | | 下周计划 | 我的未完成任务中 estStarted/deadline 落在下周一~周日的 ∪ 进行中且剩余工时>0 的跨周任务 | | 卡点风险 | 逾期任务(deadline < 锚定日且未完成)、暂停任务(status=pause)、指派给我的逾期 active Bug | | 附:工时明细 | zt_effort 按天汇总(work 内容 + 消耗工时) | **PM 归组规则**:`zt_task.project → zt_project(type='project')→ PM 字段`;若 project 字段指向执行/阶段,沿 project/parent 上溯。Bug/文档/附件按各自 project 字段同样归组;代码提交按仓库关联项目(zt_repo.projects)归组。**查不到 PM 的内容统一归入「待确认」一份**,避免静默丢失。 ## 周报模式 - **auto(默认)**:账号是未关闭项目的项目经理(`zt_project.PM`)→ 自动生成 **PM 团队周报**;否则生成个人周报 - **个人周报**:按任务所属项目的 PM 分组,每个 PM 一份 - **PM 团队周报**(单文件按项目分节):名下项目本周活跃/静默分类;任务条目带成员与角色标注(角色取 `zt_team.role` 中文角色,回退 `zt_user.role` 映射);含成员工时统计表、下周计划、我参与的其他项目、近 90 天逾期/暂停卡点(更早的视为长期滚动任务不刷屏) - CLI 可强制:`--mode personal` / `--mode team`,配置文件也可设 `mode: auto` ## 安装 ```bash pip3 install -r requirements.txt ``` ## 配置 ```bash cp config.example.yaml config.yaml # 编辑 config.yaml:填数据库连接(可参考禅道 config/my.php 的 $config->db 段)与账号 ``` - `account`:周报目标人的**禅道账号**(zt_user.account,非姓名) - `report.zentao_url`:选填,填写后周报内对象名带禅道链接 - **config.yaml 已被 .gitignore 排除,含数据库凭据,永不提交** ## 使用 ```bash python3 weekly_report.py # 本周(以今天为锚定,周一~周日) python3 weekly_report.py --last-week # 上周 python3 weekly_report.py --date 2026-09-03 # 指定锚定日所在周 python3 weekly_report.py --verbose # 打印各段取数命中数(核对用) python3 weekly_report.py --account zhangsan # 临时指定他人账号 ``` 输出到 `reports/` 下按周分目录,目录名为周起止日期(`YYMMDD-YYMMDD`),文件名保留 ISO 周标识,形如 `周报_张三_2026W35_李四.md`(每个项目经理一份,查不到 PM 的为 `..._待确认.md`)。 周标签对齐周报模板惯例:按**周日所在月份**计数,如 8.31~9.6 记为「9月1W」。 ## AI 润色 生成的周报是数据拼装版,要变成可上交的成文周报: 1. 打开 [润色提示词.md](润色提示词.md),复制全文 2. 连同 `reports/` 下某一份周报内容,一起发给 [DeepSeek](https://chat.deepseek.com) 3. 输入润色,即可得到润色后的完整版周报 一次润色一份周报;数字、日期以原报告为准,人工核对后再使用。 ## 注意事项 - 脚本只发 SELECT,连接后执行 `SET SESSION TRANSACTION READ ONLY` 双保险;建议配置只读数据库账号 - 代码提交统计依赖禅道版本库集成(zt_repohistory 有数据)且 `zt_user.commiter` 已配置映射;未配置时该段自动为空 - `--verbose` 输出各段命中数,用于与禅道页面(我的任务/我的 Bug/工时明细)人工核对