184 lines
7.8 KiB
Markdown
184 lines
7.8 KiB
Markdown
# 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.cn(wurd 已离职,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 等)**暂未建**,用户确认后续再处理
|
||
- 历史叙述式 txt(2025-08 ~ 2026-03,39 份)**未迁移**,格式乱+有重复,用户选择只迁高质量核心数据
|
||
|
||
### 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;
|
||
```
|