7.8 KiB
7.8 KiB
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 脚本会:
- 存入钉邮草稿箱(用于发送)
- 自动保存 Markdown 到
weekly-reports/YYYY/YYYY-Www-周报.md(用于归档,脚本内archive_report()完成) - 不自动写 SQLite——如需入库,需手动跑
sync_reports_db.py --all或import_md_to_db.py
汇总工具用法
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
数据库查询用法
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:3306root /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';
查询示例
-- 月度总结
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;