Files
openclaw-config/workspace-resume/TOOLS.md
T

153 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TOOLS.md - 本地环境笔记
技能定义工具怎么用;本文件记录**你专属的环境配置**(邮箱、脚本、路径等)。
## 周报邮件配置(IMAP 存草稿)
- **协议**IMAP over SSL
- **服务器**`imap.mxhichina.com:993`
- **账号**`yangxuan@witsoft.cn`
- **密码**:存于 `/home/yangxuan/.openclaw/.env`(键 `WITSOFT_IMAP_PASSWORD`
- **草稿箱文件夹**`"&g0l6Pw-"`IMAP 编码名)
- **用途**:周报脚本只把邮件**存入草稿箱**,不真正发送;用户需到钉钉邮箱草稿箱确认后手动发送
## 周报脚本
- **路径**`/home/yangxuan/.openclaw/workspace-resume/send_weekly_report.py`
- **功能**`send_to_drafts(..., archive=True)` 默认归档):
- 存入钉邮草稿箱(用于发送)
- **自动归档 Markdown** 到 `weekly-reports/YYYY/YYYY-Www-周报.md`(长期保存,`archive_report()` 完成)
- **同步到 MySQL resume 库**`sync_to_mysql()`,月度/年度总结数据源;`--no-mysql` 跳过)
- **脚本本身不写 SQLite**;如需 SQLite 入库,用 `sync_reports_db.py``import_md_to_db.py` 手动同步
- **函数**`send_to_drafts(plain_body, html_body, date_range, project="G5", archive=True)`
- **读取 .env**:脚本自动从 `.env` 读取账号密码,接口函数入参无需传密码
- **收件人**:刘强 liuqiang@witsoft.cn(主送)
- **抄送**chenm@witsoft.cn, zengli@witsoft.cn, yuanq@witsoft.cn
- **命令行用法**
```bash
python3 send_weekly_report.py \
--project G5 \
--plain "项目名称:..." \
--html "<p>...</p>" \
--date-range "2026-08-25 ~ 2026-08-29"
```
## 周报汇总工具
- **路径**`/home/yangxuan/.openclaw/workspace-resume/weekly-reports/summarize_reports.py`
- **用途**:从归档的周报中提取指定时间范围的工作内容,用于月度/年度考核
- **用法**
```bash
cd weekly-reports
# 按月汇总
python3 summarize_reports.py --month 2026-07
# 按年汇总
python3 summarize_reports.py --year 2026
# 自定义范围
python3 summarize_reports.py --range 2026-07-01 2026-09-30
```
- **输出**:生成 `summary_YYYYMMDD_HHMMSS.md` 汇总报告
## 周报数据库(混合方案)
- **数据库**`weekly-reports/weekly_reports.db`SQLite
- **同步脚本**`weekly-reports/sync_reports_db.py`
- **用途**:存储周报元数据,支持快速查询和统计
- **用法**
```bash
cd weekly-reports
# 同步所有周报
python3 sync_reports_db.py --all
# 查看统计信息
python3 sync_reports_db.py --stats
# SQL 查询
sqlite3 weekly_reports.db "SELECT * FROM weekly_reports WHERE year = 2026;"
```
- **表结构**
- `weekly_reports` - 周报元数据(年份、周数、项目、主要任务等)
- `weekly_report_daily` - 每日工作明细
- `weekly_report_problems` - 问题记录
- **备份**:数据库文件随工作空间一起备份,或导出为 SQL
## 周报归档目录
- **位置**`/home/yangxuan/.openclaw/workspace-resume/weekly-reports/`
- **结构**
- `2025-XX/` - 2025 年历史周报(旧格式 .txt)
- `2026/` - 2026 年起周报(新格式 .md,按周归档)
- `README.md` - 归档说明
- `使用指南.md` - 详细教程
- `快速参考.md` - 快速参考卡片
- `混合方案指南.md` - 混合方案说明
- **命名格式**`YYYY-Www-周报.md`(如 `2026-W31-周报.md`
## MySQL 周报数据中枢(2026-08-27 建立)
方案 A**SQLite 做本地归档,MySQL resume 库做统一数据中枢**(供月度/年度总结、OKR 分析)。
- **MySQL 连接**`127.0.0.1:3306`,用户 `root`,库 `resume`,密码存 `.env` 键 `MYSQL_PWD`
- **三张周报表**(在 `resume` 库):
- `weekly_reports` — 主表(year、week_number、project、start_date/end_date、main_task、has_problems
- `weekly_report_daily` — 每日明细(report_id、day_of_week、work_date、work_items
- `weekly_report_problems` — 问题记录(report_id、problem_description、status
- **写入入口**
- `send_to_drafts()` 默认同步(`sync_to_mysql`),`--no-mysql` 跳过
- 迁移补写:`weekly-reports/migrate_to_mysql.py`SQLite → MySQL 全量,`--dry-run` 预览)
- **月度/年度总结查询示例**
```sql
-- 月度
SELECT * FROM resume.weekly_reports WHERE start_date BETWEEN '2026-07-01' AND '2026-07-31';
-- 年度
SELECT week_number, main_task FROM resume.weekly_reports WHERE year=2026 ORDER BY week_number;
```
- **注意**:周报表在业务库 resume 中,勿与简历业务表(resumes、company_* 等)混用;二者用途不同
## 周报邮件 eml 解析归档工具(2026-08-27 添加)
用于从下载的钉邮周报 eml 文件批量补全归档缺失周报。
- **eml 所在目录**`/home/yangxuan/.openclaw/media/inbound/`(附件上传后自动落盘)
- **解析脚本**`weekly-reports/parse_eml_to_md.py` —— 读取 inbound 下所有 .eml,解码 base64 正文,生成标准格式 `2026/2026-Www-周报.md`
- **入库脚本**`weekly-reports/import_md_to_db.py` —— 读生成的 Markdown 重建 SQLite 数据(主表+每日明细+问题),自动覆盖旧占位记录
- **用法**
```bash
cd weekly-reports
python3 parse_eml_to_md.py # eml → Markdown
python3 import_md_to_db.py # Markdown → SQLite
```
- **解析逻辑要点**
- 邮件为 multipart,取 text/plain 部分 base64 解码
- 日期行支持 `周一(2026-06-08`/`周一(06-08`/带 📅 emoji 前缀
- 列表项 `*` 与文字可能被拆两行,已处理
- 问题区仅在「存在问题」标题后提取,`无/暂无` 不算问题;`下周计划` 等小标题退出问题区
- 项目名据内容自动判 G5/G6
- **注意**:脚本会**全量重建 2026 年数据库**,覆盖旧占位记录,别在有未归档数据时误跑
## OKR 绩效归档工具(2026-08-27 添加)
用于将研究院-维云智造 OKR 绩效 Excel(杨轩)解析归档到 MySQL resume 库。
- **脚本**`okr/parse_okr_to_mysql.py`
- **Excel 位置**`/home/yangxuan/.openclaw/media/inbound/*OKR*.xlsx`(或命令行 `--file` 指定路径)
- **用法**
```bash
cd okr
python3 parse_okr_to_mysql.py --month 202601 # 归档指定月
python3 parse_okr_to_mysql.py --file <xlsx> --dry-run # 指定文件+预览不写入
```
- **表**MySQL resume 库):`okr_monthly_records`(主)+ `okr_objectives`(目标明细)
- **支持新旧两种模板**(自动识别):
- 旧模板(202601 等):多 sheet,每个 sheet 一个考核月;表头行4,目标行5起 6 项,月度评价在 J12/B12
- 新模板(8月起):单 sheet `OKR考核`;表头行5-6,目标行8起(跳过行7示例)5 项,B序号/C任务/D关键结果/E完成/G评分/I权重/J得分;人员信息在 B3;跨月周期取考核期末(如 7月27日-8月27日→202608);月度评价字段上级可能未填(NULL)
- **Excel 结构(旧模板)**:一个文件多 sheet202511/202512/202601/...),每个 sheet 一个考核月## 技能
## 技能
- **周报技能**`skills/weekly-report-g5/SKILL.md`