# codestatistic **Repository Path**: tajh/codestatistic ## Basic Information - **Project Name**: codestatistic - **Description**: 代码统计,检视意见统计 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-03-03 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # codestatistic `codestatistic` 用于汇总每月的代码产出(`code`)与评审量(`review`),并通过 Web 看板进行可视化展示,同时支持查看某个 `name` 的评审明细。 ## 1. 环境准备 - Python 3.8+ - 依赖(示例):`pandas`、`flask`、`openpyxl` 安装依赖(按你的环境选择 pip/conda): ```bash pip install pandas flask openpyxl ``` ## 2. 数据处理(写入数据库) 先运行 `process.py` 把 Excel 数据写入 `data/metrics.db`。 ### 2.1 处理命令 ```bash python process.py --code --review [--date YYYY-MM] ``` - `--code`:支持传多个代码 Excel(多个文件会按 `name`/`date` 汇总求和) - `--review`:支持传多个评审 Excel(多个文件会合并汇总求和) - `--date`:可选,自定义月份(`YYYY-MM` 或 `YYYY-MM-DD`),默认从代码文件名中解析月份 示例: ```bash python process.py --code data/code_202501.xlsx data/code_202501_part2.xlsx --review data/review_202501.xlsx data/review_202501_extra.xlsx ``` ### 2.2 评审数据统计规则(当前实现) - 必须包含列:`检视者`、`检视者工号`、`检视详情` - 如果存在 `issue题目` 列:该列非空的行不纳入统计 - `检视详情` 规则: - 若文本去掉首尾空格后以 `>` 开头:直接忽略 - 若前 6 个字符为 `review`(不区分大小写):去掉前 6 个字符后再判断长度 - 否则直接用原文本判断长度 - 长度 < 6 的不计入 - 去重规则:同一 `检视者工号` 内 `检视详情`(归一化后)相同则只统计一次 - 会把当月的评审明细写入 `review_details` 表,用于 Web 页面展示 ### 2.3 代码数据统计规则(当前实现) - 必须包含列:`工号`、`姓名`、`新增代码量`(以及表头里可能出现的 `提交文件数量`、`删除代码量`) - 当 `提交文件数量` 和 `删除代码量` 两列存在且有非空值时: - 先按 `提交文件数量`、`新增代码量`、`删除代码量` 去重 - 再按 `(新增代码量 - 删除代码量)` 求和 - 否则: - 不去重 - 直接按 `新增代码量` 求和 ## 3. 启动 Web 看板 处理完数据后,启动 Flask 服务: ```bash python app.py ``` 默认监听:`http://0.0.0.0:8118/` ### 3.1 功能说明 - 支持切换 `code`/`review` 指标、按年/月维度查看 - 选择某个 `name` 后,页面下方会展示该用户的评审明细(按日期倒序) ## 4. 常见问题 1) `pd.merge` 报错 `int64 and object columns` 已在 `process.py` 中对 `name/date` 做了类型归一化(字符串 + 统一日期格式),通常不再出现该问题。