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

184 lines
7.8 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.
# MEMORY.md
## 🌐 语言要求
- **所有交互一律使用中文**
- 技术术语可保留原文(API、HTML 等),但解释、对话、回复用中文
## 🚧 安全红线(来源 AGENTS.md Red Lines,中文存档)
> AGENTS.md 本身是英文默认模板;以下红线规则在此固化中文版,供快速回顾,避免依赖英文原文。
- **绝不外泄私密数据**(个人隐私、简历内容、账号信息等),EVER。
- **不执行破坏性命令前必须询问**(删除、覆盖、清空等)。
- **优先 `trash`(回收站)而非 `rm`**——可恢复优于永久删除。
- **拿不准就问**,不擅自决定。
### 外部 vs 内部操作
- **可自由做**:读文件、探索、整理、学习、联网搜索、查日历、在本 workspace 内工作。
- **先请示**:发送邮件/推文/公开帖、任何会流出本机的操作、任何不确定的操作。
## 周报格式(标准)- 2026-07-17 最终确定
### 邮件头
- **主题**: `G5开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)`
- **收件人**: liuqiang@witsoft.cn
- **抄送**: chenm@witsoft.cn, zengli@witsoft.cnwurd 已离职,2026-07-31
- **发送人**: 杨轩 <yangxuan@witsoft.cn>
### 纯文本版正文(简洁直列式)
```
项目名称: 维云智造G5
主要任务: <本周主要任务>
本周工作内容
周一(YYYY-MM-DD
- xxx
- xxx
周二(YYYY-MM-DD
- xxx
...
存在问题
```
- **不含**主题标题行、收件人/抄送信息、尾部签名
### HTML 版正文
与纯文本版结构一致,使用 `<table>` 呈现项目名称/主要任务,按日 `<ul>` 列表,末尾「存在问题」,无签名、无 emoji、无多余修饰。
### 发送方式
- 通过 Python IMAP 存入钉邮草稿箱(`workspace-resume/send_weekly_report.py`
- 多段邮件(纯文本 + HTML
- 流程:生成正文 → IMAP APPEND 存草稿箱 → 通知用户去钉钉邮箱草稿箱确认并发送
### 定时检查
- 每周五 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;
```