auto: sync OpenClaw config 2026-08-27 11:17

This commit is contained in:
2026-08-27 11:17:10 +08:00
parent 0269b99815
commit 7a5ca9f1a7
94 changed files with 4497 additions and 2088 deletions
+126
View File
@@ -55,3 +55,129 @@
- 每周五 17:40,cron job 自动检查钉邮草稿箱
- 草稿箱为空 → 已发送,忽略
- 草稿箱有未发送草稿 → 通过 sessions_send 通知 main agent,由 main agent 钉钉通知用户
## 📁 周报持久化归档(2026-08-27 建立)
### 归档目的
- **长期保存**:每周周报自动归档到本地,用于月度、年度考核
- **快速检索**:支持按周/月/年汇总,提取工作内容
- **双重保障**:邮件草稿(发送用)+ 本地归档(检索用)
- **混合方案**:Markdown 文件(完整内容)+ SQLite 数据库(元数据索引)
### 归档目录
```
weekly-reports/
├── README.md # 归档说明
├── 使用指南.md # 详细教程
├── 快速参考.md # 快速查阅
├── 混合方案指南.md # 混合方案说明
├── sync_reports_db.py # 数据库同步脚本
├── summarize_reports.py # 汇总工具脚本
├── weekly_reports.db # SQLite 数据库
├── 2025/ # 2025 年周报
│ └── ...
├── 2026/ # 2026 年周报
│ ├── 2026-W29.md
│ ├── 2026-W31-周报.md
│ └── ...
└── ...
```
### 自动归档流程
每周五生成周报时,`send_weekly_report.py` 脚本会:
1. 存入钉邮草稿箱(用于发送)
2. **自动保存 Markdown**`weekly-reports/YYYY/YYYY-Www-周报.md`(用于归档,脚本内 `archive_report()` 完成)
3. **不自动写 SQLite**——如需入库,需手动跑 `sync_reports_db.py --all``import_md_to_db.py`
### 汇总工具用法
```bash
cd weekly-reports
# 按周汇总
python3 summarize_reports.py --week 2026-W31
# 按月汇总(用于月度考核)
python3 summarize_reports.py --month 2026-07
# 按年汇总(用于年度考核)
python3 summarize_reports.py --year 2026
# 自定义日期范围
python3 summarize_reports.py --range 2026-07-01 2026-09-30
```
### 数据库查询用法
```bash
cd weekly-reports
# 查看统计信息
python3 sync_reports_db.py --stats
# 同步所有周报
python3 sync_reports_db.py --all
# SQL 查询
sqlite3 weekly_reports.db "SELECT * FROM weekly_reports WHERE year = 2026;"
```
### 汇总输出
汇总工具会生成 Markdown 报告,包含:
- 📊 项目汇总(参与周次、主要任务)
- ⚠️ 存在问题汇总
- 📋 原始周报记录(带文件路径)
### 历史数据
- 2025-08 ~ 2026-05:已归档到 `weekly-reports/2025-XX/``weekly-reports/2026-XX/` 目录
- 2026-07 起:使用新的按周归档格式(`YYYY-Www-周报.md`
- 2026-08-27 起:启用混合方案(Markdown + SQLite
## 🗄️ MySQL 周报数据中枢(2026-08-27 建立,方案 A
### 背景
用户备有本地 MySQL `resume` 库(简历助手业务库)。经确认,将周报数据同步为 MySQL 统一数据中枢,供后续**月度、年度总结、OKR 分析**取数;本地 SQLite 保留做轻量归档。
### 双轨结构
```
周报生成 send_weekly_report.py
├─ 存草稿箱(钉邮)
├─ 归档 Markdown → weekly-reports/YYYY/(长期保存)
├─ SQLite 本地索引(可选,sync_reports_db.py
└─ MySQL resume 库 weekly_reports(统一中枢)✅ 默认同步
月度/年度总结 / OKR 分析 ← 全部从 MySQL 查
```
### MySQL 配置与表
- 连接:`127.0.0.1:3306` root / `resume` 库,密码 `.env` 键 `MYSQL_PWD`
- 表:`weekly_reports`(主表)、`weekly_report_daily`(每日明细)、`weekly_report_problems`(问题)
- 表结构与 SQLite 一致,三张表有外键关联(report_id)
### 写入入口
- **每周生成**`send_to_drafts()` 默认 `sync_mysql=True` 自动同步(`--no-mysql` 跳过)
- **迁移补写**`weekly-reports/migrate_to_mysql.py`SQLite → MySQL 全量,`--dry-run` 预览)
### 当前状态
- 已迁移:2026-W23 ~ W34 共 12 份(G5×9 + G6×3),含每日明细 60 条、问题 1 条,SQLite↔MySQL 字节级一致 ✅
- OKR 相关表(okr_objectives 等)**暂未建**,用户确认后续再处理
- 历史叙述式 txt2025-08 ~ 2026-0339 份)**未迁移**,格式乱+有重复,用户选择只迁高质量核心数据
### OKR 绩效表(2026-08-27 建立)
- **背景**:用户先后提供 `研究院-维云智造G5-1月OKR-杨轩.xlsx`(旧模板)、`研究院-产品开发部开发组-8月OKR-杨轩.xlsx`(新模板)
- **两张表**(在 resume 库):
- `okr_monthly_records` — 月度主表(assess_month、full_name、position、supervisor、assess_date、monthly_rating、source_file
- `okr_objectives` — 目标明细(record_id 外键、seq、objective、krs、completion、score、weight、weighted_score
- **已归档**:202601 杨轩 6 项目标(月度评价 7.0);202608 杨轩 5 项目标(新模板,评分均7.0,月度评价未填 NULL)
- **解析脚本**`okr/parse_okr_to_mysql.py`(读 Excel → 写入 MySQL`--dry-run` 预览、`--month` 指定月、`--file` 指定文件)
- **支持新旧两种模板(自动识别 detect_template**
- 旧模板(202601 等):多 sheet,每个 sheet 一个考核月;表头行4,目标行5起 6 项,B序号/C目标/E列KR/F完成情况/I权重/J加权,月度评价在 J12/B12
- 新模板(8月起,单 sheet `OKR考核`):表头行5-6,目标行8起(跳过行7示例)5 项,B序号/C任务/D关键结果/E完成/G评分/I权重/J得分;人员信息在 B3;跨月周期取考核期末(7月27日-8月27日→202608);月度评价(G15等)上级可能未填→NULL
- **注意**Excel 权重列是小数(0.15 等),评分 H/G 列由上级填写
example:查询某月 OKR`SELECT * FROM resume.okr_monthly_records WHERE assess_month='202601';`
### 查询示例
```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;
```