skill-forge-hub 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +7 -6
  2. package/annual-report/SKILL.md +7 -7
  3. package/annual-report/resources/content-rules.md +11 -9
  4. package/annual-report/resources/data-collection.md +3 -3
  5. package/annual-report/resources/date-parsing.md +1 -1
  6. package/annual-report/resources/disk-and-html.md +5 -5
  7. package/annual-report/resources/industry-dictionary.md +3 -1
  8. package/annual-report/resources/reference.html +11 -11
  9. package/annual-report/resources/usage-guide.md +56 -15
  10. package/annual-report/user-config.md +1 -1
  11. package/cli.js +1 -0
  12. package/daily-report/SKILL.md +6 -5
  13. package/daily-report/resources/content-rules.md +27 -23
  14. package/daily-report/resources/data-collection.md +5 -5
  15. package/daily-report/resources/date-parsing.md +1 -1
  16. package/daily-report/resources/disk-and-html.md +1 -1
  17. package/daily-report/resources/industry-dictionary.md +3 -1
  18. package/daily-report/resources/reference.html +18 -14
  19. package/daily-report/resources/usage-guide.md +4 -4
  20. package/daily-report/user-config.md +1 -1
  21. package/magic-deck/SKILL.md +3 -3
  22. package/magic-deck/resources/deck-spec.md +36 -25
  23. package/magic-deck/resources/reference.html +319 -56
  24. package/magic-deck/user-config.md +2 -2
  25. package/meta-forge/resources/usage-guide.md +1 -1
  26. package/package.json +1 -1
  27. package/weekly-report/SKILL.md +6 -5
  28. package/weekly-report/resources/content-rules.md +38 -27
  29. package/weekly-report/resources/data-collection.md +5 -5
  30. package/weekly-report/resources/date-parsing.md +1 -1
  31. package/weekly-report/resources/disk-and-html.md +2 -2
  32. package/weekly-report/resources/industry-dictionary.md +5 -3
  33. package/weekly-report/resources/reference.html +49 -16
  34. package/weekly-report/resources/usage-guide.md +6 -6
  35. package/weekly-report/user-config.md +2 -2
@@ -1,31 +1,34 @@
1
1
  # 内容规则
2
2
 
3
3
  ## 输出内容与数据来源
4
- - 三段结构:本周任务进度(5-15 点)/ 下周计划 / 风险阻塞点
5
- - 任务点格式:1、任务描述(量化数据:文件数/行数/提交次数)- 进度XX% - 用时X.XD(1D=8H)
6
- - 任务来源(默认):各仓库本周 git 提交自动聚合(同主题多日提交合并为一条)+ 本次会话中用户已提及/口述的工作内容 + 用户口头补充,全部合并去重;仅当用户明确说"只整理这段文字/只按这段"时才忽略 git 与会话上下文、只用指定文字(见「纯文字整理模式」)
4
+ - 四段结构:本周结论(三句判断)/ 本周任务进度(5-15 点)/ 下周计划 / 风险阻塞点
5
+ - 「本周结论」三句固定三要素,各 15-30 字:①最重要的结果(本周最值得写入的成果判断)②最值得处理的变化(节奏/质量/协作层面的关键变化)③下周最优先的动作(下周最该做的一件事);先判断后事实、不罗列条目;与 TL;DR 呼应但不重复(TL;DR 给全周总体判断,结论三句给分项判断)
6
+ - 任务点格式:1、任务描述(量化数据)- 进度XX% - 用时X.XD(1D=8H)
7
+ - 量化数据优先级:用户口述的业务结果指标(响应时间/错误率/成功率/转化率等)优先写入;提交统计(文件数/行数/提交次数)仅在无业务指标时兜底;两者都有时业务指标在前、提交统计后置或省略
8
+ - 数字凡有对比基准必带(环比/同比/目标完成度至少其一,如「+29%」「达目标 80%」);无基准来源时不作要求
9
+ - 任务来源(默认):各仓库本周 提交记录自动聚合(同主题多日提交合并为一条)+ 本次会话中用户已提及/口述的工作内容 + 用户口头补充,全部合并去重;仅当用户明确说"只整理这段文字/只按这段"时才忽略提交记录与会话上下文、只用指定文字(见「纯文字整理模式」)
7
10
  - 「下周计划」取材双通道:①用户口述/文字补充的计划(优先并入);②一次生成多周周报、或后续日期日报已生成时(本次批量生成中下一周的周报,或 reports 目录中已存在的后续日报/下周周报),从下一周周报的「本周任务进度」(无下周周报时从下周各日报的任务进度)中抽取任务作为「下周计划」(抽取数量灵活、不设死上限:下周完成任务多且连续性强时可多抽至 5-6 条,少则抽 2-3 条,与下一周内容形成呼应即可),描述改写为计划语气(完成态改进行态:如「完成 XX 重构」→「推进 XX 重构」「继续 XX 开发」,去掉量化数据/进度/用时);批量多周时优先保证跨周连续性:抽取时尽量让本周「下周计划」与下一周「本周任务进度」形成「计划→完成」的同主题承接链(如本周计划「启动 XX 重构」→ 下周完成「完成 XX 重构」,长期任务串成连续的工作链);无后续数据时,该段按口述或「暂无」处理
8
- - 量化数据取自 git --stat(文件数、增删行数);用时为合理估算(git 不记录耗时,估算值注明"约",可口头修正)
11
+ - 量化数据取自 git --stat(文件数、增删行数);用时为合理估算(提交记录不记录耗时,估算值注明"约",可口头修正)
9
12
  - 数据收集范围(按当前系统自动选择,另一系统的仓库自动跳过):macOS = NearCast / nearcast-server / nearcast-go / nearcast-admin / SmartCanteenConsumerMachineApp / TrustPay 共 6 个仓库;Windows = srf-app / srf-manage / srf-operation / srf-service / srf-web-user / srf-web-operation / srf-web-wx / srf-web-h5-teacher / srf-web-uop / Spec-Core-Smart-Canteen 共 10 个仓库;本周无提交的仓库不写入
10
- - HTML 版为参考图式深蓝面板卡片美化样式(实心深蓝卡片 + 细密水平条纹 + 上下边缘高光线 + 左缘节色条,保留 ask 同款发光动效):附「本周概览」Bento 卡片(完成率圆环大卡 + 提交热力图 5天×3时段 + 提交数/活跃天数/涉及文件/代码行数四指标 + 提交节奏柱图带 hover 明细 + 环比行)、顶部「一键复制」按钮(复制纯文本版)+ TL;DR 摘要行、「本周任务进度」标题右侧带周范围徽章(跟随 WEEK_END)+ 进度条终点圆点与流星扫描填充 + 液态玻璃卡片(@supports 兜底)+ CRT 扫描光带 + 全页 3D 微倾斜(±0.75°)、页脚署名 GENERATED BY SPECCORE TEAM(周范围动态跟随 WEEK_END),并随 FORMATS 默认落一张内容区截图 content-png(概览与卡片整体 + 四周留白 + 周范围徽章)
13
+ - HTML 版为参考图式深蓝面板卡片美化样式(实心深蓝卡片 + 细密水平条纹 + 上下边缘高光线 + 左缘节色条,保留 ask 同款发光动效):附「本周概览」Bento 卡片(完成率圆环大卡 + 提交热力图 5天×3时段 + 提交数/活跃天数/涉及文件/代码行数四指标 + 提交节奏柱图带 hover 明细 + 环比行)、头部卡片下「本周结论」卡(三行:最重要的结果/值得处理的变化/下周优先的动作,紫色左缘色条 + 紫/橙/青三色标签,与分节卡片同质感)、顶部「一键复制」按钮(复制纯文本版)+ TL;DR 摘要行、「本周任务进度」标题右侧带周范围徽章(跟随 WEEK_END)+ 进度条终点圆点与流星扫描填充 + 液态玻璃卡片(@supports 兜底)+ CRT 扫描光带 + 全页 3D 微倾斜(±0.75°)、页脚署名 GENERATED BY SPECCORE TEAM(周范围动态跟随 WEEK_END),并随 FORMATS 默认落一张内容区截图 content-png(概览与卡片整体 + 四周留白 + 周范围徽章)
11
14
 
12
15
  ## 用户补充任务
13
16
 
14
17
  用户调用时可能口头追加任务(如"还有一件事:这周处理了两天的支付问题"),按以下规则处理:
15
18
 
16
- - **触发**:话术含"补充/加上/还有/另外/以及/对了"等追加词,或直接口述任务内容(说"整理成周报/只整理这段文字/只按这段/不用 git"时走「纯文字整理模式」,不是追加)
19
+ - **触发**:话术含"补充/加上/还有/另外/以及/对了"等追加词,或直接口述任务内容(说"整理成周报/只整理这段文字/只按这段/不要别的来源"时走「纯文字整理模式」,不是追加)
17
20
  - **分段**:补充内容带分段词时按段并入——"下周计划/计划:xxx"→ 下周计划段;"风险/阻塞:xxx"→ 风险阻塞点段(说"风险暂无/无风险"→ 风险段写「暂无」);不带分段词默认并入"本周任务进度"
18
21
  - **拆条**:按语义主题拆分,一个主题一条;拆分信号:时间词(周几/上几天)、追加连接词、分号顿号列举、数字列举(1、2、3)
19
- - **润色**:口语整理为规范任务描述(动词开头、说清对象与结果);周报粒度较粗,多条零散小任务合并为一个周交付物条目(30-60 字);用户未给量化数据时,优先从 git 提交补文件数/行数,无记录则省略量化、只写进度与用时(估算值注明"约")
20
- - **去重**:与 git 聚合任务合并时,同一件事只保留一条
21
- - **格式**:与 git 聚合条目同格式,接在"本周任务进度"下继续编号
22
+ - **润色**:口语整理为规范任务描述(动词开头、说清对象与结果);周报粒度较粗,多条零散小任务合并为一个周交付物条目(30-60 字);用户未给量化数据时,优先从 提交记录补文件数/行数,无记录则省略量化、只写进度与用时(估算值注明"约")
23
+ - **去重**:与 提交记录聚合任务合并时,同一件事只保留一条
24
+ - **格式**:与 提交记录聚合条目同格式,接在"本周任务进度"下继续编号
22
25
 
23
- ## 纯文字整理模式(用户贴一段文字,无 git 提交)
26
+ ## 纯文字整理模式(用户贴一段文字,无 提交记录)
24
27
 
25
- 用户调用时直接贴一段文字并说"整理成周报/根据这段生成周报"(可能不是开发岗位,没有任何 git 提交),按以下规则处理:
28
+ 用户调用时直接贴一段文字并说"整理成周报/根据这段生成周报"(可能不是开发岗位,没有任何 提交记录),按以下规则处理:
26
29
 
27
- - **触发**:话术含"整理/根据这段/以下内容/帮我梳理"等 + 附了一段多句文字/图片/文件,或明说"只整理这段文字/只按这段/不用 git/别收集 git"(与"写周报 + 补充一下"的区别:文字/图片/文件是唯一主源、跳过 git 与会话上下文,不是追加)
28
- - **数据来源**:用户文字/图片/文件为主源,**跳过 git 收集**(不跑 git 命令)且忽略本次会话其它工作内容;图片用 Read 视觉理解提取图中文字信息,md/txt 直接读文本,docx/pdf 优先尝试 pandoc 转文本(无 pandoc 则请用户粘贴文字);用户是开发且内容提到代码相关工作时,可仍收集 git 用于补量化数据
30
+ - **触发**:话术含"整理/根据这段/以下内容/帮我梳理"等 + 附了一段多句文字/图片/文件,或明说"只整理这段文字/只按这段/不要别的来源/不要别的来源"(与"写周报 + 补充一下"的区别:文字/图片/文件是唯一主源、跳过提交记录与会话上下文,不是追加)
31
+ - **数据来源**:用户文字/图片/文件为主源,**跳过 提交记录收集**(不跑聚合命令)且忽略本次会话其它工作内容;图片用 Read 视觉理解提取图中文字信息,md/txt 直接读文本,docx/pdf 优先尝试 pandoc 转文本(无 pandoc 则请用户粘贴文字);用户是开发且内容提到代码相关工作时,可仍收集提交记录用于补量化数据
29
32
  - **三段归类**(用户文字没按段写明时用信号词归类):
30
33
  - 含"下周/接下来/计划/准备/打算/将要/待办" → 下周计划
31
34
  - 含"风险/阻塞/问题/卡住/困难/待定/依赖/遗留" → 风险阻塞点
@@ -33,10 +36,11 @@
33
36
  - 用户已明确分段("本周完成:A;下周计划:B;风险:C")→ 按用户分段,不猜
34
37
  - **拆条**:按语义主题拆分,一个主题一条;拆分信号:时间词(周几/前几天)、连接词(还有/另外/以及)、分号顿号列举、数字列举(1、2、3)、换行/段落边界
35
38
  - **润色**:口语整理为规范任务描述(动词开头、说清对象与结果);周报粒度较粗,多条零散小任务合并为一个周交付物条目(30-60 字)
36
- - **量化数据**:无 git 提交 → 不写文件数/行数/提交次数;格式退化为「1、任务描述 - 进度XX% - 用时X.XD」
39
+ - **量化数据**:无 提交记录 → 不写文件数/行数/提交次数;格式退化为「1、任务描述 - 进度XX% - 用时X.XD」
37
40
  - **进度与用时**:文字没给进度时,完成任务默认 100%、计划默认 0%;用时/预估用时仅在用户文字给出时才写,没给就省略(不瞎编估算值)
38
- - **风险阻塞点**:只列描述
39
- - **周定位/落盘/HTML**:与常规流程一致(默认本周、md/txt/html 三文件 + 内容区截图落盘、html 自动打开);html 概览卡片无 git 数据时只显示任务进度/计划/风险条数统计
41
+ - **风险阻塞点**:素材没给影响/建议时只列描述;素材含影响/建议/责任时间时按四环结构写全
42
+ - **本周结论**:纯文字素材同样生成结论三句(素材够判断即可,不够时第②③句写「暂无」)
43
+ - **周定位/落盘/HTML**:与常规流程一致(默认本周、md/txt/html 三文件 + 内容区截图落盘、html 自动打开);html 概览卡片无 提交数据时只显示任务进度/计划/风险条数统计
40
44
 
41
45
  ## 输出格式
42
46
 
@@ -45,38 +49,45 @@
45
49
 
46
50
  > 生成时间:YYYY-MM-DD HH:MM:SS
47
51
 
52
+ ## 本周结论
53
+ 1、最重要的结果:xxx
54
+ 2、值得处理的变化:xxx
55
+ 3、下周最优先的动作:xxx
56
+
48
57
  ## 本周任务进度
49
58
  1、任务描述(量化数据:文件数/行数/提交次数)- 进度XX% - 用时X.XD
50
59
 
51
60
  ## 下周计划
52
- 1、任务描述 - 进度XX% - 预估用时X.XD
61
+ 1、任务描述 - 完成标准:XX(时间点)- 进度XX% - 预估用时X.XD
53
62
 
54
63
  ## 风险阻塞点
55
- - 阻塞描述
64
+ - 问题描述;影响:xxx;建议:xxx;责任与时间:xxx(谁/何时,口述有时必写)
56
65
  ```
57
66
 
58
67
  ## 规则
59
68
 
60
69
  - 任务进度 5-15 点,每点 30-60 字;序号用中文顿号(1、2、)
61
70
  - 聚合后任务数超上限(15 点)时,同类小任务合并压缩到上限内;用户说「精简点/太长了」→ 条目数取下限、每点压缩到 30 字左右;说「详细点」→ 条目数取上限、每点写足 60 字
62
- - 三段兜底:任务进度默认 100%;本周任务进度/下周计划/风险阻塞点无任何内容时该段写「暂无」(默认聚合时下周计划无 git 来源,用户没给计划就写「暂无」)
63
- - 计划每点带进度百分比与预估用时
64
- - 风险阻塞点三环结构:问题+影响+建议,不写进度用时
71
+ - 四段兜底:任务进度默认 100%;本周结论/本周任务进度/下周计划/风险阻塞点无任何内容时该段写「暂无」(默认聚合时下周计划无 提交来源,用户没给计划就写「暂无」)
72
+ - 计划每点带进度百分比与预估用时;用户口述/文字给出完成标准时(如「周五前出唤醒效率对比」),必写「完成标准:XX(时间点)」,未给出则省略
73
+ - 风险阻塞点四环结构:问题+影响+建议+责任与时间,不写进度用时;第四环「责任与时间(谁/何时)」取自用户口述,未提供时省略
65
74
  - 用时单位:X.XD(天,1D=8H),估算值注明"约"
66
- - 文字风格约束:①下周计划用计划态陈述句,动词取「推进/启动/开展/跟进/梳理/筹备/验证/排查/联调」等计划态词,禁用完成态词(完成/搞定/已实现/做完),可带「计划/预计/拟」字样(不必每条都有),句式「动词+对象+目标范围」(如「推进底部导航重构,完成主流程交互调整」),禁祈使句(「去做 xx」)与口语(「把 xx 弄一下/搞搞」);②完成任务用动词开头的完成态陈述句(完成/修复/优化/重构/开发/实现/接入/升级/排查/联调/上线),说清对象与结果(如「完成底部导航重构」);③风险阻塞点三环结构:问题+影响+建议(问题客观陈述、影响说明后果、建议给出可执行对策),不写抱怨与情绪话;④全文通用:不用第一人称「我」、不用口语语气词(啦/啊/吧/哈/哦/呢)、不用 emoji、不用口语形容词(差不多/还行/基本上/搞不定/一堆);用户口述/补充的口语内容一律先润色为规范书面语再写入(「上午改了角标接口」→「完成角标接口改造」),量化数据(文件数/行数/进度/用时)格式不变
75
+ - 文字风格约束:①下周计划用计划态陈述句,动词取「推进/启动/开展/跟进/梳理/筹备/验证/排查/联调」等计划态词,禁用完成态词(完成/搞定/已实现/做完),可带「计划/预计/拟」字样(不必每条都有),句式「动词+对象+目标范围」(如「推进底部导航重构,完成主流程交互调整」),禁祈使句(「去做 xx」)与口语(「把 xx 弄一下/搞搞」);②完成任务用动词开头的完成态陈述句(完成/修复/优化/重构/开发/实现/接入/升级/排查/联调/上线),说清对象与结果(如「完成底部导航重构」);③风险阻塞点四环结构:问题+影响+建议+责任与时间(问题客观陈述、影响说明后果、建议给出可执行对策、责任与时间来自口述缺省省略),不写抱怨与情绪话;④任务流水与清单条目保持无主语(动词开头);结论、判断、归因处允许第一人称「我」(「我主导了 XX 联调」「我判断风险可控」「我推动 XX 落地」),团队协作成果用「我们」;不用口语语气词(啦/啊/吧/哈/哦/呢)、不用 emoji、不用口语形容词(差不多/还行/基本上/搞不定/一堆);用户口述/补充的口语内容一律先润色为规范书面语再写入(「上午改了角标接口」→「完成角标接口改造」),量化数据(文件数/行数/进度/用时)格式不变
76
+ - 技术动作翻译:用户口述技术动作且带结果数据时,翻译为业务结果表述(「重写 SQL 加索引」→「查询响应 3.2s→0.4s」);仅含动作无结果时保留动作描述,并在对话中提示可补充结果指标
77
+ - 落笔前五问自检:①第一句是不是结论?②数字有没有对比基准?③卡点有没有责任动作和时间?④计划能不能被验证?⑤个人贡献与团队成果的归属是否清晰?任一不过,改写后再输出
67
78
  - 报告标题下输出生成时间,精确到时分秒(YYYY-MM-DD HH:MM:SS)
68
79
  - 生成报告时,对话中先输出简要「使用提示」(几条速览 + 完整说明引用)再输出报告正文,固定条目:
69
80
  - 默认生成本周;「上周周报 / 10月第2周的周报 / 10月20号所在周的周报」指定周
70
81
  - 「补充一下:xxx」追加任务(「下周计划:/风险:」分段词自动归段);贴文字/发图片/给文件「整理成周报」默认直接生成,说「先看看效果」→ 确认后再落盘
71
- - 默认聚合 git 提交 + 本次会话已提的工作内容;说「只整理这段文字」→ 仅用该文字
82
+ - 默认多源聚合:提交记录(有仓库时)+ 本次会话已提的工作内容,没有提交记录则以口述/文字为准;说「只整理这段文字」→ 仅用该文字
72
83
  - 「写到桌面 / 不落盘 / 只要 md / 只要截图 / 这次不截图 / 别开浏览器 / 保留之前的」临时控制落盘;「这次按 xxx 模板来」临时换模板;「这周按周日收尾」临时改周结束日
73
84
  - 生成完成后在对话中告知本次落盘的文件完整路径清单(目录 + 各文件名,Windows 用反斜杠)
74
85
  - 默认配置长期生效:改 skill 文件顶部「默认配置」节(DISK/FORMATS/DIR/OPEN_HTML/TEMPLATE/WEEK_END/CONFIRM)
75
86
  - 📖 完整使用说明:问「周报怎么用」
76
- - 默认聚合来源:git 提交 + 本次会话中用户已提及/口述的工作内容全部合并去重;仅当用户明确说"只整理这段文字/只按这段"时,才只用指定文字、忽略其它来源
77
- - 纯文字整理模式:用户贴一段文字/发图片/给文件说"整理成周报/只按这段"时跳过 git 收集与会话上下文,内容为主源(图片 Read 视觉提取、md/txt 直接读、docx/pdf 优先 pandoc 转文本);按信号词自动三段归类(用户已分段则按用户分段);无量化数据不写文件数/行数,进度默认完成 100%/计划 0%,用时用户没给就省略;CONFIRM: never 默认直接生成落盘不确认,CONFIRM: text/always 或用户说"先看看效果"时先出整理效果、用户说"可以/确认/落盘"后再落盘,说"改一下 xxx"按意见修改后重新确认,说"不用确认/直接落盘"跳过确认(CONFIRM 配置控制,临时口头要求优先)
78
- - 模板优先级:用户临时口头指定的模板 > 顶部 TEMPLATE 配置(custom 用「📝 自定义模板」节结构,default 用内置三段式);自定义模板只改段名/段数/条目格式,其余规范(中文顿号序号、生成时间、落盘、HTML 样式)不变
79
- - 目录名 = 当周最后一天(顶部 WEEK_END,默认周五)的日期,不是生成时刻:本周周报目录用本周五日期;用户可改 WEEK_END: sunday 等(则用周日日期);周范围、标题日期范围、git 收集范围同步跟随 WEEK_END
87
+ - 默认聚合来源:提交记录(有仓库时)+ 本次会话中用户已提及/口述的工作内容全部合并去重(没有提交记录 或非代码工作以口述/文字为主);仅当用户明确说"只整理这段文字/只按这段"时,才只用指定文字、忽略其它来源
88
+ - 纯文字整理模式:用户贴一段文字/发图片/给文件说"整理成周报/只按这段"时跳过 提交记录收集与会话上下文,内容为主源(图片 Read 视觉提取、md/txt 直接读、docx/pdf 优先 pandoc 转文本);按信号词自动三段归类(用户已分段则按用户分段);无量化数据不写文件数/行数,进度默认完成 100%/计划 0%,用时用户没给就省略;CONFIRM: never 默认直接生成落盘不确认,CONFIRM: text/always 或用户说"先看看效果"时先出整理效果、用户说"可以/确认/落盘"后再落盘,说"改一下 xxx"按意见修改后重新确认,说"不用确认/直接落盘"跳过确认(CONFIRM 配置控制,临时口头要求优先)
89
+ - 模板优先级:用户临时口头指定的模板 > 顶部 TEMPLATE 配置(custom 用「📝 自定义模板」节结构,default 用内置四段式:本周结论 + 三段);自定义模板只改段名/段数/条目格式,其余规范(中文顿号序号、生成时间、落盘、HTML 样式)不变
90
+ - 目录名 = 当周最后一天(顶部 WEEK_END,默认周五)的日期,不是生成时刻:本周周报目录用本周五日期;用户可改 WEEK_END: sunday 等(则用周日日期);周范围、标题日期范围、提交记录收集范围同步跟随 WEEK_END
80
91
  - 周定位优先按自然语言解析(如"10月第2周"、"10月20号所在周");显式参数 `/weekly-report [YYYYMMDD] [md|txt|html]`(参数为该周任一日期)等价于自然语言,缺省为本周 + md
81
92
  - 跨系统兼容:执行时先检测当前系统(macOS/Windows),所有路径、命令、浏览器均按系统分支取值(DIR auto→DIR_MAC/DIR_WIN、仓库表对应路径列、Chrome/Edge 路径、open/Start-Process、桌面/回退目录);禁止假设单一系统
82
93
  - 落盘行为读取顶部「默认配置」(DISK/FORMATS/DIR/OPEN_HTML/TEMPLATE/WEEK_END/CONFIRM);优先级:用户临时口头要求(不落盘/写到桌面/只要 md/只要内容区截图/只要截图/这次不截图/别开浏览器/临时换模板/临时改周结束日/先看看效果/不用确认等,仅当次生效)> 顶部默认配置;DIR(按系统解析)目录/盘符不存在时回退用户主目录 reports(macOS=~/reports、Windows=%USERPROFILE%\reports);同一周重复生成覆盖原文件,用户说"保留之前的"则时间戳另存
@@ -21,7 +21,7 @@
21
21
  | srf-web-uop | - | d:\Web_Projects\srf-web-uop |
22
22
  | Spec-Core-Smart-Canteen | - | d:\Workspace_QCoder\Spec-Core-Smart-Canteen |
23
23
 
24
- - 「-」= 该仓库在当前系统不存在,跳过;当前系统对应列全为「-」(陌生机器)时跳过 git 收集,只按会话/文字内容生成
24
+ - 「-」= 该仓库在当前系统不存在,跳过;当前系统对应列全为「-」(陌生机器)时跳过 提交记录收集,只按会话/文字内容生成
25
25
 
26
26
  命令模板:
27
27
 
@@ -33,9 +33,9 @@ git -C <仓库路径> log --since="YYYY-MM-DD 00:00:00" --until="YYYY-MM-DD 23:5
33
33
  - 汇总每个提交涉及的**文件数**与**增删行数**(来自 --stat),作为量化数据
34
34
  - **行数统计口径(防生成物噪音)**:统计增删行数前必须先剔除生成物路径(如 `.speccore/code-graph/` 下的 graph.json:单文件可能贡献数十万行,会撑爆指标);numstat 输出为 `add\tdel\tpath` 三列,用 `grep -vE $'\t\.speccore/code-graph/'` 按制表符+路径过滤(正则匹配行首无效);统计后若行数仍异常巨大(>5 万行),用 `sort -rn | head -8` 定位元凶文件再排除;周报指标卡(提交数/活跃天数/涉及文件/代码行数)与 HTML 热力图/柱图均用过滤后口径
35
35
  - 同主题多日提交合并为一条任务点,量化数据累加
36
- - git 无法给出实际耗时,用时取合理估算值,允许用户事后修正
36
+ - 提交记录无法给出实际耗时,用时取合理估算值,允许用户事后修正
37
37
  - 本周无提交的仓库不写入周报
38
- - 仓库路径(当前系统列)不存在/非 git 仓库时静默跳过该仓库(不报错、不写入)
38
+ - 仓库路径(当前系统列)不存在/非代码仓库时静默跳过该仓库(不报错、不写入)
39
39
  - 用户说「只写 xxx 的周报 / 只聚合 xxx 仓库」时只收集指定仓库
40
- - git 之外的默认来源:本次会话中用户已提及/口述的工作内容(任务、进度、风险等对话信息)一并聚合,与 git 记录去重合并
41
- - 用户明确说"只整理这段文字/只按这段"时,忽略 git 与会话上下文,只用指定文字
40
+ - 提交记录之外的默认来源:本次会话中用户已提及/口述的工作内容(任务、进度、风险等对话信息)一并聚合,与 提交记录去重合并
41
+ - 用户明确说"只整理这段文字/只按这段"时,忽略提交记录与会话上下文,只用指定文字
@@ -14,7 +14,7 @@
14
14
  | 国庆那周 / 春节那周 / 元旦那周 / 五一那周 / 端午那周 等节假日锚定 / 国庆前那周 / 春节后那周 等 | 现场推算该节日的公历日期(农历节日按农历换算,AI 实时计算)定位所在周;今年该节日已过取今年、未到取去年(最近的过去一次);「X节前/后 N 周」= 节日所在周 ±N 周,推算结果在标题旁注明 |
15
15
  | 10月第2周到第3周的周报 / 10月20号到11月6号的周报 / 上上周到上周 | 连续多周批量生成:按周区间切片(每个周区间一份周报,周一起点、WEEK_END 结束日),两端分别按本表单点规则解析(终点缺年份沿用起点年份、终点月份早于起点月份视为下一年;终点可写「本周/上周」),按时间正序逐周生成一份周报 |
16
16
 
17
- - 解析出目标周周一后,周结束日 = 周一 + N 天(friday=+4、sunday=+6、saturday=+5),写入标题与 git log 的 --since/--until;落盘子目录名 = 周结束日日期
17
+ - 解析出目标周周一后,周结束日 = 周一 + N 天(friday=+4、sunday=+6、saturday=+5),写入标题与提交记录聚合的起止范围;落盘子目录名 = 周结束日日期
18
18
  - 批量生成流程:先一次性收集区间内所有周的提交(逐周分片 --since/--until),再按时间正序逐周生成(本周可引用下一周数据做「下周计划」,见「输出内容与数据来源」节),最后统一落盘与截图;批量时只自动打开最后一周的 html、其余仅落盘不开浏览器,避免开多个标签页;对话中按周分隔输出各周 md 正文
19
19
  - 未提及任何时间词(如"本周/上周/10月第2周")时,一律默认本周直接生成,不追问用户
20
20
  - 解析结果有歧义时以最近过去的周为默认,并在标题中注明解析出的周范围
@@ -7,8 +7,8 @@
7
7
  - 使用时用户临时指明位置(如"写到桌面"、"存到 ~/report(macOS)/ D:\report(Windows)",覆盖 DIR、仅当次生效):以用户指定位置为根目录,同样按当周最后一天日期子目录;"桌面"映射:macOS=`~/Desktop`、Windows=`%USERPROFILE%\Desktop`;目录不存在自动创建
8
8
  - 每次生成落盘哪些文件读取顶部「默认配置」的 `FORMATS`(默认 md/txt/html/content-png 四个,md/txt/html 文件名 `weekly-report-YYYYMMDD~YYYYMMDD.<格式>`、截图文件名 `weekly-report-YYYYMMDD~YYYYMMDD-content.png`;txt 为纯文本版);`DISK: false` 时全部不落盘
9
9
  - 对话中照常输出 md 正文(不受 FORMATS 影响);`OPEN_HTML: true` 且本次落盘了 html 时,自动打开浏览器(macOS:`open <html文件>`;Windows PowerShell:`Start-Process <html文件>`)
10
- - FORMATS 含 content-png 时额外生成内容区截图 `weekly-report-YYYYMMDD~YYYYMMDD-content.png`:整页内容区截图一张(头部标题卡片 + 本周概览卡片与本周任务进度/下周计划/风险阻塞点分节卡片整体截出,头部卡片必须带上,图片四周保留对称合适的外边距约 40px 留白):html 内置 `?shot=content` 参数(页面 JS 检测后仅统一 body 四周 padding 40px、不隐藏任何元素(头部标题卡/概览卡/三张分节卡/页脚全部保留),正常浏览不受影响);用 Chrome headless 访问带参 URL 截图(路径按系统选:macOS=`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`;Windows 按序探测 `C:\Program Files\Google\Chrome\Application\chrome.exe` → `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` → `%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe`,经 node child_process 执行 `--headless --disable-gpu --no-sandbox --hide-scrollbars --user-data-dir=<临时目录> --screenshot=<png路径> --window-size=760,<估算高度> --virtual-time-budget=4000 "file:///<html路径>?shot=content"`(Windows 下 URL 写作 file:///C:/...,用 node url.pathToFileURL 生成),跑完删除临时目录;禁止用 `--headless=new`(单例模式会静默失败生成占位图);若 Chrome 不存在则换 Edge(macOS=`/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge`;Windows=`C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` → `C:\Program Files\Microsoft\Edge\Application\msedge.exe`),都找不到时跳过截图并在对话注明);高度按整页内容区估算(body 上下留白~80 + 头部标题卡片~180 + 概览卡片~120 + 每节卡片(45+条目数×70+40,含各卡片 margin-bottom 18) + 余量~15,底部留白仅 body 下 padding 40px、与顶部对称,余量只防截断不可多给),截图后用 Read 校验:头部标题卡片、概览卡片与三张分节卡片整体完整在图内、四周留白对称合适、不截断,底部留白过大则减高度、截断则加高度重截
11
- - md/txt/html 均含生成时间行,精确到时分秒(如 2026-10-22 19:10:38);HTML 采用参考图式深蓝面板风格 + ask 同款发光动效的融合样式(不换其它色系,颜色全部用 CSS 变量统一 ask 色板:--cyan #0ea5e9、--bg #0a1929、--card #0b1e37、--border rgba(14,165,233,.15)、--text #bae6fd、--muted #5b7fa5、--green #14b8a6、--orange #f97316、--purple #6366f1、--rose #f43f5e):禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖),字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas/'Microsoft YaHei'/monospace(macOS 走 SF Mono/Menlo、Windows 走 Consolas,中文回退 Microsoft YaHei;字母数字等宽自带科技感),正文同栈 400、标题同栈 900 渐变文字(var(--cyan) #0ea5e9→var(--purple) #6366f1,background-clip:text,发光用 ask-result 模板同款 text-shadow 双圈(titleGlow 动画 3s 呼吸:基线 20px/.4 + 60px/.15 ↔ 峰值 30px/.7 + 80px/.3,h1 留静态基线;24px 小字同参数观感与官方一致,禁止改三圈小模糊——会糊在字内边界不清));页面背景纯深蓝黑 #0a1929(参考图同款色值)、正文浅青 #bae6fd、全屏极轻微噪点纹理(body::before fixed 覆盖层,background-image 用 SVG feTurbulence data URI(<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(#n)'/></svg>),opacity .04,pointer-events:none,z-index 0 在卡片之下,消除大面积纯色死板感),body 纯 #0a1929 背景不加径向辉光(onboarding 同款);全屏背景叠加 speccore dashboard 同款三层科技感底纹:60px 网格底纹(.grid-pattern fixed inset 0,background-image linear-gradient(rgba(0,240,255,.03) 1px, transparent 1px) 纵横双向、background-size 60px 60px、z-index 0)+ 彩色星点层(.stars fixed inset 0,8 个 1-1.5px 星点 radial-gradient(1px 1px at <位置>, <色>, transparent) 多背景组合:白色 rgba(255,255,255,.3-.4) 与青色 rgba(0,240,255,.45-.5)、紫色 rgba(168,85,247,.4)、绿色 rgba(0,255,136,.4),位置分散 10%-90%,z-index 0)+ 全屏 2px 周期细扫描线(.scanlines fixed inset 0,repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,240,255,.015) 2px 4px),z-index 999 罩最上层,pointer-events none;三层均 fixed 不随滚动,营造星野+网格+扫描的科技氛围,不破坏参考图纯深蓝黑质感);内容区宽度响应窗口自适应(.wrap width:clamp(640px, 60%, 1200px) + margin:0 auto:最小 640px、最大 1200px、中间按窗口 60% 缩放,页面左右留白对称);头部卡片参考图式实心深蓝底(var(--card) 实心 #0b1e37,略亮于背景、更偏蓝)+ 8px 周期细密水平条纹(background-image 叠加 repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px))+ 上下边缘 1px 微亮描边(border-top/border-bottom 1px solid #0f3350,参考图「边缘点亮一线」效果,与 ask 四边浮光扫描线动画共存、动画层在上)+ 圆角 6px + 外发光与 inset 内发光(0 0 20px rgba(14,165,233,.08) + inset 0 1px 24px rgba(14,165,233,.04)),overflow:hidden,标题区仅标题与青色胶囊生成时间徽章(badge 后直接收尾,不加底部细线/装饰光带,避免悬空多余线);标题与徽章下加 TL;DR 一句话摘要行(.summary-line flex 布局 max-width 540px 居中:左侧 .summary-tag「TL;DR」青色小标签 系统等宽 10px 粗体、rgba(14,165,233,.35) 细边圆角 4px、rgba(14,165,233,.07) 底、青色 text-shadow 光晕 + 右侧 .summary-text 12.5px 浅青正文 line-height 1.75 text-align left;摘要带判断给结论——整体节奏/主要风险/下周重点,不罗列条目);「本周概览」摘要卡片 Bento 网格布局(参考图式质感:实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 + 左缘 8px 亮蓝色条 linear-gradient(180deg,#38bdf8,#0ea5e9) 带同色光晕 + 圆角 6px + overflow:hidden + 内放 .card-glow 光斑层;.ov-bento display:grid、grid-template-columns:104px 1fr 1fr、grid-template-rows:auto auto auto、gap:10px):完成率圆环大卡(.ring-box 跨 col1 row1/4 整列贯穿、内放青色渐变描边完成率圆环 + 中央大数字 + .ring-label「N/N 项已交付」小字)+ 提交热力图卡(.heat-card 跨 col2/4 row1:标题行「提交热力图」+ .heat-grid 5天×3时段(上午/下午/晚上)15 格 GitHub 式色阶 .hm[data-v="0"~"3"] 四档(0 rgba(14,165,233,.07) 底 / 1 rgba(14,165,233,.3) / 2 rgba(14,165,233,.55) / 3 rgba(34,211,238,.8) 带 glow)+ .heat-days 底部周几标签(padding-left:26px 补偿时段标签列)+ .htip hover 浮层(深蓝底青边圆角 tooltip 显示「周X上/下/晚 · N 次」);热力图格子 JS 入场错峰 animationDelay .55+i*.04s)+ 四个 .ov-item 指标胶囊(自动流排入剩余格:提交数 data-count、活跃天数 data-count、涉及文件 data-count、代码行数 .ov-num-static 双行(主数字 +18.4k + small 行 −12.7k 删行 --rose 玫红),每个 .ov-item 胶囊细边单元格 rgba(14,165,233,.12) 1px 边 + rgba(14,165,233,.03) 底,.ov-num 系统等宽 24px 青色发光数字 + .ov-label 11px 青灰标签)+ 底部 .ov-compare 环比行(11.5px 青灰小字居中「vs 上周:提交 14 → 18(+29%)· 完成任务 3 → 5(+67%)」,上涨用 --green 绿、下跌用 --rose 红;环比数据来自上周同范围 git log 与完成条目统计)+ 提交节奏柱图(.cb-col 5 根柱周一到周五、.cb-bar width:32px 柱宽(太小显细弱)、柱高按提交数、position:relative 柱上带 .cb-tip hover 浮层显示「周X · N 次提交 · 主题词」)+ 分节卡片同参考图式质感(实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 #0f3350 + 圆角缩小至 6px + overflow:hidden,保留阴影与 inset 内发光,去掉原全框青色细边),每张分节卡片左侧带参考图式左缘色条(8px 宽竖线贯穿整卡高度,节色渐变带同色光晕:完成 linear-gradient(180deg,#5eead4,#14b8a6) / 计划 linear-gradient(180deg,#fdba74,#f97316) / 风险 linear-gradient(180deg,#fda4af,#e11d48),box-shadow 0 0 12px 同色 30% 透明度;卡片内容 padding-left 24px 避让色条),节标题带 18px 同色渐变 SVG 语义图标+文字微光晕(h2 flex 布局 gap 10px,图标替换原竖向短条:完成=圆形对勾、计划=日历、风险=三角警示;inline SVG 内 linearGradient 同节色系渐变 完成 #5eead4→#14b8a6 / 计划 #fdba74→#f97316 / 风险 #fda4af→#e11d48 + 白色描边细节 + drop-shadow 同色光晕;标题色:完成青绿 #5eead4、计划橙 #fdba74、风险玫红 #fda4af + h2 文字同色双圈发光字 3s 呼吸 secGlow 动画(基线 14px/.45+40px/.18 ↔ 峰值 22px/.75+60px/.3,各节动画用本节主题色,与主标题同节奏;仅节标题文字发光,SVG 图标与日期徽章不加))+ 「本周任务进度」节标题右侧带周范围小胶囊徽章 sec-date(margin-left:auto 推右、flex:0 0 auto;11px var(--muted) 字、padding 3px 10px、圆角 999px、青色细边 rgba(14,165,233,.18)、背景 rgba(14,165,233,.05),如 2026-10-19 ~ 2026-10-25;徽章周范围与周报标题/目录名/git 收集范围完全同源、同步跟随 WEEK_END 配置(含临时说「这周按周日收尾」);仅完成节显示、计划/风险节不加,让截图自带具体周范围)+ 条目 3D 立体圆球序号徽章(28px 白字,立体感克制的柔和球面——弱化版三段收窄色阶:受光球面渐变 radial-gradient(受光点 circle at 30% 28%,浅亮→主色→深色:完成 #7dd9cf→#14b8a6→#0d9488、计划 #fdc69a→#f97316→#ea580c、风险 #fdaab4→#f43f5e→#e11d48)+ inset 右下内暗影 -3px -4px 6px rgba(0,0,0,.3) 与左上内亮缘 1px 2px 3px rgba(255,255,255,.2) + ::before 左上椭圆高光点(position:relative 定位,top 5px/left 7px、8x6px、rotate -28deg、白色径向渐隐 rgba(255,255,255,.7)→0)+ 底部投影 0 2px 4px rgba(0,0,0,.25) 与同色光晕 0 0 8px + 数字 text-shadow 0 1px 1px rgba(0,0,0,.25) 贴球面) + 条目内部留白:li 水平 padding 10px(hover 淡青底 rgba(14,165,233,.06) 与文字间留 10px 间距)+ 序号圆形徽章 28px(数字距圆边约 8px,不贴圆边)+ 列表轻微缩进 12px(ol/ul padding 0 12px)+ 描述与进度双层错落排版(描述 15px、进度用时 12px 青灰小字 #5b7fa5、百分比加粗强调且两侧 margin 0 2px 呼吸留白、进度与用时之间用「 - 」连接(与 md/txt 版一致,不用 · )、条目间青色虚线分隔);风险节条目三环展开:desc 主行(问题)+ meta 影响行(12px 青灰小字「影响:xxx」)+ .advice 建议行(12px 青色小字,「建议:」加粗前缀,margin-top 6px);md/txt 版同条目依次写问题、影响、建议,文本格式不变+ 青色渐变 40px 大胶囊「一键复制」按钮(var(--cyan)→#0284c7,30px 青色光晕,hover 45px 光晕上浮,模板同款;flex 居中布局,内置 16px 内联 SVG 双矩形复制图标(白色 currentColor 描边、图标与文字 gap 8px、禁用 emoji 图标),复制成功后图标切换为对勾 SVG、文字短暂变「已复制」);头部 speccore ask 风格发光特效(与 ask 页面完全同款):四边 1px 青色浮光线,渐变 transparent→var(--cyan)→transparent 整条线平移扫动(亮段长、无 box-shadow 光晕,四边亮段构成顺时针环绕循环,与 ask 看板卡片完全同款(上横线 scanX 左→右、右竖线 scanY 上→下、下横线 scanX-rev 右→左、左竖线 scanY-rev 下→上,四线同周期同速度 3s linear 单向平移);实现为 1px 整线渐变元素平铺整条边(上/下横线 left:0/right:0 + height:1px + linear-gradient(90deg, transparent, var(--cyan), transparent);左/右竖线 top:0/bottom:0 + width:1px + linear-gradient(180deg, transparent, var(--cyan), transparent)),随线体 translateX/translateY 平移 ±100%(相对线长):scanX -100%→100%、scanX-rev 100%→-100%、scanY -100%→100%、scanY-rev 100%→-100%;亮段(线中央渐变段)完整穿越卡片后消失于两端界外(卡片 overflow:hidden 裁剪),带「出现→穿越→消失」节奏;禁止自创 background-position 滚动/常驻辉光/往返摆动/亮段半嵌常驻等变体)+ 顶部光斑 ask 同款 cardGlow(radial-gradient ellipse at 50% 10% rgba(14,165,233,.25)→transparent 70%,opacity .5→1 + scale 1→1.6,transform-origin top center,3s 循环;头部卡片与每张分节卡片内均放 .card-glow 光斑层,覆盖整卡顶部)+ 标题文字青色光晕呼吸(text-shadow 双圈 3s 循环);入场动画:头部淡入下滑、卡片依次错峰上浮淡入(完成 0.26s/计划 0.4s/风险 0.54s)、按钮弹入(卡片入场动画 fadeDown/fadeUp/riseIn 的 fill-mode 必须用 backwards 严禁 both——both 使动画结束后最后一帧 transform:none 永久覆盖 hover 的 3D 偏转 transform,CSS 动画 applied 值优先级高于普通声明,hover 偏转会完全失效;cometFade 与按钮 pop 保持 both 不受此限);hover 微交互:卡片上浮+阴影加深+inset 发光增强、条目淡青底、序号徽章放大微旋(li:hover .idx transform:scale(1.18) rotate(-4deg)、球内数字放大 12→14px、数字必须用 <b> 包裹(.idx b{display:inline-block;transition:transform .2s ease})+ li:hover .idx b{transform:rotate(-6deg)} 数字在球内独立微旋;用户澄清 hover 变大的字体仅小球内数字,desc 正文保持 15px 不变不加斜体;销售 demo 版类名 .num:li:hover .num scale(1.22) rotate(-6deg)、数字 13→15px 同样 <b> 包裹 + rotate(-6deg))、按钮上浮/按压回缩;页脚 10px muted 文字(无分隔线、不加边框),署名固定 GENERATED BY SPECCORE TEAM · <周范围>(动态跟随 WEEK_END,如 GENERATED BY SPECCORE TEAM · 20261019 ~ 20261025);三段分节列表,任务点保持中文顿号序号;进度条终点圆点 + 流星扫描填充(.pbar-fill 必须 display:block + position:relative——行内 span 忽略 width/height 会变成 0×0,填充与圆点全部不可见;.pbar-fill::before 终点圆点 7px 径向渐变圆 right:0 + transform:translate(50%,-50%) 骑在填充右缘(done 青绿 radial-gradient(circle at 35% 30%,#a7f3d0,#2dd4bf 62%,#0d9488)、plan 橙 #fdba74/#f97316/#c2410c,box-shadow 同色光晕、z-index:2;.pbar-track/.pbar-fill 均不得加 overflow:hidden——圆点右半伸出填充 3.5px 骑边渲染);流星 = JS 注入 .pbar-track 内的 .pbar-sweep(absolute 左贴轨道、width:0 起点隐藏、height:16px、transform:translateY(-50%) 垂直居中、z-index:1、pointer-events:none)+ sweep 右缘 .pbar-comet 光体(absolute left:100% 贴 sweep 右缘随宽度移动,严禁 right:62%/right:100% 等右侧定位——彗星会停在轨道中段、进度 100% 时也到不了终点;子弹头形光核:20×11px 横向泪滴 border-radius:55% 100% 100% 55% / 85% 100% 100% 85%(右端全圆弧=前进弹头、左端 55%/85% 大圆角=后部饱满钝圆接尾不露尖(比 35%/60% 更钝,禁尖窄收尾),严禁 13×7 小椭圆方块感、严禁 20px 大圆球形态)background 三层:底层 linear-gradient(90deg,rgba(153,246,228,.3),rgba(224,254,255,.6) 55%,#fff) 铺底(形状内不得透底)+ 右前缘青蓝冷光 radial-gradient(ellipse 70% 85% at 74% 45%,rgba(125,211,252,.9),transparent) + 青白核 radial-gradient(circle 12px at 66% 50%,#fff,rgba(224,254,255,.95) 45%,rgba(153,246,228,.5) 75%,transparent)(circle 半径必须显式 12px——自动半径按最远角计、四角渐隐至透明会露出轨道深色背景成「黑三角」,显式半径让光核饱满),box-shadow 双圈柔光 0 0 5px 2px rgba(186,230,253,.75) + 0 0 12px 4px rgba(45,212,191,.3)——光晕总高控制在 2~2.5 倍条高以内,不用 drop-shadow;整体前大后收窄的扫帚流星:头部 20×11 大头 → ::after 彗尾 right:40%、84×12px 细长锥形拖尾 linear-gradient(90deg,transparent,rgba(153,246,228,.18) 26%,rgba(186,230,253,.55) 64%,rgba(255,255,255,.9)) + clip-path:polygon(4% 40%,16% 24%,100% 0,100% 100%,16% 76%,4% 60%)(左端收成 2.4px 高平口钝头、右端全高平接光核、16% 处起渐收——远窄近宽,禁矩形方块形、禁 1px 尖点)+ blur 1px + z-index:0——长度约 4 倍头宽;剥落粒子流(JS 为每颗 .pbar-comet 注入 30 个 span.cp,绝对定位在光核中后段出生):30 粒三带分布(上方飘散带 17 粒 by -6~-0.5 向上飘散 + 中部渗漏带 6 粒 by +0.5~+5.5 + 深蓝带 7 粒 by +7~+9.5 贴光核下缘)椭圆小块前大后小(3.2×2.2 → 1.2×0.9px,宽高不等 + rotate -12°~12° 不规则椭圆,禁用标准圆形、禁用 box-shadow 静态星屑——静态点没有剥落飘散的生命感),出生点从头部稍靠后(left 9~17px)开始,y 紧贴中心水平线(中线 ±2.5px,各粒角度基本一致不散乱),cpFlow 1.5~1.8s cubic-bezier(.2,.05,.55,1) infinite + 负延迟 -0.1~-1.5s 错峰:0%→10% 淡入渐现(渐渐出现)、10%→100% 沿水平线加速向后飘 translate3d(-45~-62px, dy, 0)(加速向后)、55% 后 opacity 渐隐 + scale(.16) 渐小(向尾部消失)、dy 三带取值:上方 -3.5~-7 上飘展开(用户反馈上方粒子少且飘散不够远,13→17 再加密、dy 再扩大,下方相对合适不增)、中部 +1.5~+3.5 向下渗漏、深蓝 +5~+7 向后甩出(深蓝带 cp-deep 深蓝渐变+深蓝光晕、dur 1.06~1.25s 更久停留),box-shadow 光晕 0%→55% 增强再减弱(每粒生命期一次明灭=呼吸发光,周期 1.5~1.8s 与主体 2.4s 呼吸非整数倍错开,禁止同频齐步闪);粒子 z-index:1 在彗尾之上(尾 z-index:0)、opacity:0 起步呼吸发光分层不同频:主体光核与彗尾 2.4s 周期呼吸(comet 双动画 cometFade + glowPulse 2.4s ease-in-out infinite:box-shadow 双圈光晕 0%↔50% 周期扩缩;::after 挂 tailGlow 2.4s ease-in-out infinite:filter blur(1px) brightness(1) ↔ blur(1.5px) brightness(1.28) 亮度呼吸),粒子 1.5~1.8s 明灭与主体 2.4s 呼吸非整数倍错开(视觉错落不同频);opacity:0 常驻隐藏);.pbar-track.sheen-on 时 sweep transition:width 1.1s cubic-bezier(.3,.8,.4,1) 生长(comet 贴 sweep 右缘 left:100% 随宽度从左扫到右),comet 的 animation 严禁写在 .pbar-comet 基类(基类动画页面加载 t=0 即播、1.1s 后 both 定格 opacity:0,而扫动 setTimeout 1.5s 才开始——时序错位会让流星全程不可见);必须挂在 .pbar-track.sheen-on .pbar-comet 选择器上(cometFade 1.1s ease-out both, glowPulse 2.4s ease-in-out infinite 逗号并列双动画:cometFade 7% 淡入、86% 保持、100% 到终点消失、glowPulse 光晕呼吸循环;::after 彗尾另挂 tailGlow 2.4s ease-in-out infinite 亮度呼吸),靠 playSweep 内 remove/add sheen-on 类切换重启动画,与 dotPulse 同机制;扫动终点按各条目标进度 data-w:sheen 内 sweep inline width 终点 = data-w(done 条 100% 扫满轨道、有进度的 plan 条如 30% 即 30% 停在进度点不越界)——sweep 宽度过渡与 fill 宽度过渡同参数天然同步,comet 与彗尾/星屑无需任何反向补偿(scaleX 压缩方案会把彗尾一同拉长数倍,禁用);填充同步生长:入场 sheen(el,'wave') 给 fill 设 transition width 1.1s 同 easing + width 0→data-w,与流星同步——流星扫到哪、填充长到哪,流星到终点消失、留下各自进度,之后填充保持不再变化;圆点 .pbar-done/.pbar-plan .pbar-track.sheen-on .pbar-fill::before animation:dotPulse 1.1s(90% 处 filter:brightness(2) + 白光 drop-shadow 爆亮,done/plan 通用)流星到达终点时爆亮——dotPulse 选择器必须与 JS 加类位置一致:JS 把 sheen-on 加在 .pbar-track 上,严禁写 .pbar-fill.sheen-on::before(JS 从不在 fill 上加类,选择器永不命中、爆亮不触发);流星注入与入场波浪覆盖完成条 + 有进度的计划条(JS 遍历 .pbar-track:plan 且进度<=0 的条 return 跳过——0 进度的计划条不注入流星、不扫、保持静态),其余条 data-w 记录目标进度后 fill 归零;入场波浪:setTimeout 1500+i*420ms 逐条 sheen(el,'wave') 错峰(上→下必然可见);hover 重扫:li 上 mouseenter+pointerenter 双监听,sheen(el,'hover') 只 remove/add fill 与 track 的 sheen-on 类重放流星扫过(comet 再扫一遍,0 进度的 plan 条同样跳过),fill 宽度与颜色完全不重置(进度不再变化),sheen(el,src) 按来源独立节流(wave 1s / hover 300ms);重启动画 remove 类→sweep inline 归零 width:0(transition:none 无过渡)→void offsetWidth 强制回流→同步 add 类→sweep inline 目标 width=data-w(恢复 transition;双 RAF 在 headless 虚拟时间下不推进,不可用));液态玻璃(@supports((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) 内 .overview/.section 加 backdrop-filter:blur(16px) saturate(1.35) + background-color:rgba(11,30,55,.42),不支持的老浏览器走默认实心深蓝不白屏);CRT 扫描光带(.scanband position:fixed、left:0/right:0、height:150px、linear-gradient(180deg,transparent,rgba(0,240,255,.03) 50%,transparent)、animation:scanMove 11s linear infinite(top -22%→112%)、pointer-events:none、z-index:998,置于 scanlines 之下一层);卡片级 3D 微倾斜(严禁全页级 mousemove 倾斜——页面容器整页旋转会让所有卡片一起偏转,与「仅当前卡片响应」不符):每张卡片 hover 时仅该卡片随鼠标偏转,卡片 transform 写 perspective(900px) + rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))(±1.25° 极轻微),与 hover 上浮 translateY(-2px) 合并写同一条 transform(严禁拆两条相互覆盖);hover 态选择器带 tilt(header-card/overview/section 或 header-card/card),非 hover 卡片不倾斜;JS 对每张卡片监听 mousemove 计算卡内相对位置((clientX-rect.left)/rect.width*2-1 归一化 -1~1)只更新该卡 --mx/--my,mouseleave 归零回正,transition transform .18s 平滑;移动端无 mousemove 保持 0 不倾斜);禁止写 @media (prefers-reduced-motion: reduce) 禁用动画的媒体查询块(官方模板无此块,用户系统开启减少动画时该块会禁用全部动效,是竖线不动/发光不呼吸的根因);页面 JS 需支持 `?shot=content` 参数(检测 location.search 含 shot=content 时仅统一 body 四周 padding 40px(不隐藏任何元素),供整页内容区截图用、保证截图四周留白对称合适)
10
+ - FORMATS 含 content-png 时额外生成内容区截图 `weekly-report-YYYYMMDD~YYYYMMDD-content.png`:整页内容区截图一张(头部标题卡片 + 本周结论卡 + 本周概览卡片与本周任务进度/下周计划/风险阻塞点分节卡片整体截出,头部卡片必须带上,图片四周保留对称合适的外边距约 40px 留白):html 内置 `?shot=content` 参数(页面 JS 检测后仅统一 body 四周 padding 40px、不隐藏任何元素(头部标题卡/概览卡/三张分节卡/页脚全部保留),正常浏览不受影响);用 Chrome headless 访问带参 URL 截图(路径按系统选:macOS=`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`;Windows 按序探测 `C:\Program Files\Google\Chrome\Application\chrome.exe` → `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` → `%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe`,经 node child_process 执行 `--headless --disable-gpu --no-sandbox --hide-scrollbars --user-data-dir=<临时目录> --screenshot=<png路径> --window-size=760,<估算高度> --virtual-time-budget=4000 "file:///<html路径>?shot=content"`(Windows 下 URL 写作 file:///C:/...,用 node url.pathToFileURL 生成),跑完删除临时目录;禁止用 `--headless=new`(单例模式会静默失败生成占位图);若 Chrome 不存在则换 Edge(macOS=`/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge`;Windows=`C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` → `C:\Program Files\Microsoft\Edge\Application\msedge.exe`),都找不到时跳过截图并在对话注明);高度按整页内容区估算(body 上下留白~80 + 头部标题卡片~180 + 结论卡片~150 + 概览卡片~120 + 每节卡片(45+条目数×70+40,含各卡片 margin-bottom 18) + 余量~15,底部留白仅 body 下 padding 40px、与顶部对称,余量只防截断不可多给),截图后用 Read 校验:头部标题卡片、概览卡片与三张分节卡片整体完整在图内、四周留白对称合适、不截断,底部留白过大则减高度、截断则加高度重截
11
+ - md/txt/html 均含生成时间行,精确到时分秒(如 2026-10-22 19:10:38);HTML 采用参考图式深蓝面板风格 + ask 同款发光动效的融合样式(不换其它色系,颜色全部用 CSS 变量统一 ask 色板:--cyan #0ea5e9、--bg #0a1929、--card #0b1e37、--border rgba(14,165,233,.15)、--text #bae6fd、--muted #5b7fa5、--green #14b8a6、--orange #f97316、--purple #6366f1、--rose #f43f5e):禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖),字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas/'Microsoft YaHei'/monospace(macOS 走 SF Mono/Menlo、Windows 走 Consolas,中文回退 Microsoft YaHei;字母数字等宽自带科技感),正文同栈 400、标题同栈 900 渐变文字(var(--cyan) #0ea5e9→var(--purple) #6366f1,background-clip:text,发光用 ask-result 模板同款 text-shadow 双圈(titleGlow 动画 3s 呼吸:基线 20px/.4 + 60px/.15 ↔ 峰值 30px/.7 + 80px/.3,h1 留静态基线;24px 小字同参数观感与官方一致,禁止改三圈小模糊——会糊在字内边界不清));页面背景纯深蓝黑 #0a1929(参考图同款色值)、正文浅青 #bae6fd、全屏极轻微噪点纹理(body::before fixed 覆盖层,background-image 用 SVG feTurbulence data URI(<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(#n)'/></svg>),opacity .04,pointer-events:none,z-index 0 在卡片之下,消除大面积纯色死板感),body 纯 #0a1929 背景不加径向辉光(onboarding 同款);全屏背景叠加 speccore dashboard 同款三层科技感底纹:60px 网格底纹(.grid-pattern fixed inset 0,background-image linear-gradient(rgba(0,240,255,.03) 1px, transparent 1px) 纵横双向、background-size 60px 60px、z-index 0)+ 彩色星点层(.stars fixed inset 0,8 个 1-1.5px 星点 radial-gradient(1px 1px at <位置>, <色>, transparent) 多背景组合:白色 rgba(255,255,255,.3-.4) 与青色 rgba(0,240,255,.45-.5)、紫色 rgba(168,85,247,.4)、绿色 rgba(0,255,136,.4),位置分散 10%-90%,z-index 0)+ 全屏 2px 周期细扫描线(.scanlines fixed inset 0,repeating-linear-gradient(0deg, transparent 0 2px, rgba(0,240,255,.015) 2px 4px),z-index 999 罩最上层,pointer-events none;三层均 fixed 不随滚动,营造星野+网格+扫描的科技氛围,不破坏参考图纯深蓝黑质感);内容区宽度响应窗口自适应(.wrap width:clamp(640px, 60%, 1200px) + margin:0 auto:最小 640px、最大 1200px、中间按窗口 60% 缩放,页面左右留白对称);头部卡片参考图式实心深蓝底(var(--card) 实心 #0b1e37,略亮于背景、更偏蓝)+ 8px 周期细密水平条纹(background-image 叠加 repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px))+ 上下边缘 1px 微亮描边(border-top/border-bottom 1px solid #0f3350,参考图「边缘点亮一线」效果,与 ask 四边浮光扫描线动画共存、动画层在上)+ 圆角 6px + 外发光与 inset 内发光(0 0 20px rgba(14,165,233,.08) + inset 0 1px 24px rgba(14,165,233,.04)),overflow:hidden,标题区仅标题与青色胶囊生成时间徽章(badge 后直接收尾,不加底部细线/装饰光带,避免悬空多余线);header-card 下独立「本周结论」卡(.section.sec-concl 复用分节卡质感:紫色左缘色条 linear-gradient(180deg,#a78bfa,#6366f1) + 靶心图标(conclGrad 紫渐变)+ h2 紫色 #a78bfa secGlowPurple 发光 + 右上角副标「判断优先 · 先结论后流水」+ 三行 concl-row(concl-tag 紫/橙 t2/青 t3 三色标签 + concl-text 13px 正文):最重要的结果/值得处理的变化/下周优先的动作,TXT 复制源与 md/txt 正文同含本周结论三句);标题与徽章下加 TL;DR 一句话摘要行(.summary-line flex 布局 max-width 540px 居中:左侧 .summary-tag「TL;DR」青色小标签 系统等宽 10px 粗体、rgba(14,165,233,.35) 细边圆角 4px、rgba(14,165,233,.07) 底、青色 text-shadow 光晕 + 右侧 .summary-text 12.5px 浅青正文 line-height 1.75 text-align left;摘要带判断给结论——整体节奏/主要风险/下周重点,不罗列条目);数字选择:用户口述的业务结果指标(响应时间/错误率/转化率/成功率等)优先写入,提交统计(提交数/文件数/行数)仅在无业务指标时兜底,两者都有时业务指标在前、提交统计后置或省略;数字凡有对比基准必带(环比/同比/目标完成度至少其一,如「+18%」「达目标 90%」),无基准来源时不作要求 - 「本周概览」摘要卡片 Bento 网格布局(参考图式质感:实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 + 左缘 8px 亮蓝色条 linear-gradient(180deg,#38bdf8,#0ea5e9) 带同色光晕 + 圆角 6px + overflow:hidden + 内放 .card-glow 光斑层;.ov-bento display:grid、grid-template-columns:104px 1fr 1fr、grid-template-rows:auto auto auto、gap:10px):完成率圆环大卡(.ring-box 跨 col1 row1/4 整列贯穿、内放青色渐变描边完成率圆环 + 中央大数字 + .ring-label「N/N 项已交付」小字)+ 提交热力图卡(.heat-card 跨 col2/4 row1:标题行「提交热力图」+ .heat-grid 5天×3时段(上午/下午/晚上)15 格 GitHub 式色阶 .hm[data-v="0"~"3"] 四档(0 rgba(14,165,233,.07) 底 / 1 rgba(14,165,233,.3) / 2 rgba(14,165,233,.55) / 3 rgba(34,211,238,.8) 带 glow)+ .heat-days 底部周几标签(padding-left:26px 补偿时段标签列)+ .htip hover 浮层(深蓝底青边圆角 tooltip 显示「周X上/下/晚 · N 次」);热力图格子 JS 入场错峰 animationDelay .55+i*.04s)+ 四个 .ov-item 指标胶囊(自动流排入剩余格:提交数 data-count、活跃天数 data-count、涉及文件 data-count、代码行数 .ov-num-static 双行(主数字 +18.4k + small 行 −12.7k 删行 --rose 玫红),每个 .ov-item 胶囊细边单元格 rgba(14,165,233,.12) 1px 边 + rgba(14,165,233,.03) 底,.ov-num 系统等宽 24px 青色发光数字 + .ov-label 11px 青灰标签)+ 底部 .ov-compare 环比行(11.5px 青灰小字居中「vs 上周:提交 14 → 18(+29%)· 完成任务 3 → 5(+67%)」,上涨用 --green 绿、下跌用 --rose 红;环比数据来自上周同范围 git log 与完成条目统计)+ 提交节奏柱图(.cb-col 5 根柱周一到周五、.cb-bar width:32px 柱宽(太小显细弱)、柱高按提交数、position:relative 柱上带 .cb-tip hover 浮层显示「周X · N 次提交 · 主题词」)+ 分节卡片同参考图式质感(实心深蓝底 #0b1e37 + 8px 周期细密水平条纹 + 上下边缘 1px 微亮描边 #0f3350 + 圆角缩小至 6px + overflow:hidden,保留阴影与 inset 内发光,去掉原全框青色细边),每张分节卡片左侧带参考图式左缘色条(8px 宽竖线贯穿整卡高度,节色渐变带同色光晕:完成 linear-gradient(180deg,#5eead4,#14b8a6) / 计划 linear-gradient(180deg,#fdba74,#f97316) / 风险 linear-gradient(180deg,#fda4af,#e11d48),box-shadow 0 0 12px 同色 30% 透明度;卡片内容 padding-left 24px 避让色条),节标题带 18px 同色渐变 SVG 语义图标+文字微光晕(h2 flex 布局 gap 10px,图标替换原竖向短条:完成=圆形对勾、计划=日历、风险=三角警示;inline SVG 内 linearGradient 同节色系渐变 完成 #5eead4→#14b8a6 / 计划 #fdba74→#f97316 / 风险 #fda4af→#e11d48 + 白色描边细节 + drop-shadow 同色光晕;标题色:完成青绿 #5eead4、计划橙 #fdba74、风险玫红 #fda4af + h2 文字同色双圈发光字 3s 呼吸 secGlow 动画(基线 14px/.45+40px/.18 ↔ 峰值 22px/.75+60px/.3,各节动画用本节主题色,与主标题同节奏;仅节标题文字发光,SVG 图标与日期徽章不加))+ 「本周任务进度」节标题右侧带周范围小胶囊徽章 sec-date(margin-left:auto 推右、flex:0 0 auto;11px var(--muted) 字、padding 3px 10px、圆角 999px、青色细边 rgba(14,165,233,.18)、背景 rgba(14,165,233,.05),如 2026-10-19 ~ 2026-10-25;徽章周范围与周报标题/目录名/提交记录收集范围完全同源、同步跟随 WEEK_END 配置(含临时说「这周按周日收尾」);仅完成节显示、计划/风险节不加,让截图自带具体周范围)+ 条目 3D 立体圆球序号徽章(28px 白字,立体感克制的柔和球面——弱化版三段收窄色阶:受光球面渐变 radial-gradient(受光点 circle at 30% 28%,浅亮→主色→深色:完成 #7dd9cf→#14b8a6→#0d9488、计划 #fdc69a→#f97316→#ea580c、风险 #fdaab4→#f43f5e→#e11d48)+ inset 右下内暗影 -3px -4px 6px rgba(0,0,0,.3) 与左上内亮缘 1px 2px 3px rgba(255,255,255,.2) + ::before 左上椭圆高光点(position:relative 定位,top 5px/left 7px、8x6px、rotate -28deg、白色径向渐隐 rgba(255,255,255,.7)→0)+ 底部投影 0 2px 4px rgba(0,0,0,.25) 与同色光晕 0 0 8px + 数字 text-shadow 0 1px 1px rgba(0,0,0,.25) 贴球面) + 条目内部留白:li 水平 padding 10px(hover 淡青底 rgba(14,165,233,.06) 与文字间留 10px 间距)+ 序号圆形徽章 28px(数字距圆边约 8px,不贴圆边)+ 列表轻微缩进 12px(ol/ul padding 0 12px)+ 描述与进度双层错落排版(描述 15px、进度用时 12px 青灰小字 #5b7fa5、百分比加粗强调且两侧 margin 0 2px 呼吸留白、进度与用时之间用「 - 」连接(与 md/txt 版一致,不用 · )、条目间青色虚线分隔);风险节条目四环展开:desc 主行(问题)+ meta 影响行(12px 青灰小字「影响:xxx」)+ .advice 建议行(12px 青色小字,「建议:」加粗前缀,margin-top 6px)+ .owner 责任与时间行(12px 紫色 #a78bfa 小字,「责任与时间:」加粗前缀,margin-top 4px,口述无责任信息时省略此行);md/txt 版同条目依次写问题、影响、建议、责任与时间(第四项口述有时必写),文本格式不变+ 青色渐变 40px 大胶囊「一键复制」按钮(var(--cyan)→#0284c7,30px 青色光晕,hover 45px 光晕上浮,模板同款;flex 居中布局,内置 16px 内联 SVG 双矩形复制图标(白色 currentColor 描边、图标与文字 gap 8px、禁用 emoji 图标),复制成功后图标切换为对勾 SVG、文字短暂变「已复制」);头部 speccore ask 风格发光特效(与 ask 页面完全同款):四边 1px 青色浮光线,渐变 transparent→var(--cyan)→transparent 整条线平移扫动(亮段长、无 box-shadow 光晕,四边亮段构成顺时针环绕循环,与 ask 看板卡片完全同款(上横线 scanX 左→右、右竖线 scanY 上→下、下横线 scanX-rev 右→左、左竖线 scanY-rev 下→上,四线同周期同速度 3s linear 单向平移);实现为 1px 整线渐变元素平铺整条边(上/下横线 left:0/right:0 + height:1px + linear-gradient(90deg, transparent, var(--cyan), transparent);左/右竖线 top:0/bottom:0 + width:1px + linear-gradient(180deg, transparent, var(--cyan), transparent)),随线体 translateX/translateY 平移 ±100%(相对线长):scanX -100%→100%、scanX-rev 100%→-100%、scanY -100%→100%、scanY-rev 100%→-100%;亮段(线中央渐变段)完整穿越卡片后消失于两端界外(卡片 overflow:hidden 裁剪),带「出现→穿越→消失」节奏;禁止自创 background-position 滚动/常驻辉光/往返摆动/亮段半嵌常驻等变体)+ 顶部光斑 ask 同款 cardGlow(radial-gradient ellipse at 50% 10% rgba(14,165,233,.25)→transparent 70%,opacity .5→1 + scale 1→1.6,transform-origin top center,3s 循环;头部卡片与每张分节卡片内均放 .card-glow 光斑层,覆盖整卡顶部)+ 标题文字青色光晕呼吸(text-shadow 双圈 3s 循环);入场动画:头部淡入下滑、卡片依次错峰上浮淡入(完成 0.26s/计划 0.4s/风险 0.54s)、按钮弹入(卡片入场动画 fadeDown/fadeUp/riseIn 的 fill-mode 必须用 backwards 严禁 both——both 使动画结束后最后一帧 transform:none 永久覆盖 hover 的 3D 偏转 transform,CSS 动画 applied 值优先级高于普通声明,hover 偏转会完全失效;cometFade 与按钮 pop 保持 both 不受此限);hover 微交互:卡片上浮+阴影加深+inset 发光增强、条目淡青底、序号徽章放大微旋(li:hover .idx transform:scale(1.18) rotate(-4deg)、球内数字放大 12→14px、数字必须用 <b> 包裹(.idx b{display:inline-block;transition:transform .2s ease})+ li:hover .idx b{transform:rotate(-6deg)} 数字在球内独立微旋;用户澄清 hover 变大的字体仅小球内数字,desc 正文保持 15px 不变不加斜体;销售 demo 版类名 .num:li:hover .num scale(1.22) rotate(-6deg)、数字 13→15px 同样 <b> 包裹 + rotate(-6deg))、按钮上浮/按压回缩;页脚 10px muted 文字(无分隔线、不加边框),署名固定 GENERATED BY SPECCORE TEAM · <周范围>(动态跟随 WEEK_END,如 GENERATED BY SPECCORE TEAM · 20261019 ~ 20261025);四段分节列表(本周结论卡 + 任务进度/计划/风险三节卡),任务点保持中文顿号序号;进度条终点圆点 + 流星扫描填充(.pbar-fill 必须 display:block + position:relative——行内 span 忽略 width/height 会变成 0×0,填充与圆点全部不可见;.pbar-fill::before 终点圆点 7px 径向渐变圆 right:0 + transform:translate(50%,-50%) 骑在填充右缘(done 青绿 radial-gradient(circle at 35% 30%,#a7f3d0,#2dd4bf 62%,#0d9488)、plan 橙 #fdba74/#f97316/#c2410c,box-shadow 同色光晕、z-index:2;.pbar-track/.pbar-fill 均不得加 overflow:hidden——圆点右半伸出填充 3.5px 骑边渲染);流星 = JS 注入 .pbar-track 内的 .pbar-sweep(absolute 左贴轨道、width:0 起点隐藏、height:16px、transform:translateY(-50%) 垂直居中、z-index:1、pointer-events:none)+ sweep 右缘 .pbar-comet 光体(absolute left:100% 贴 sweep 右缘随宽度移动,严禁 right:62%/right:100% 等右侧定位——彗星会停在轨道中段、进度 100% 时也到不了终点;子弹头形光核:20×11px 横向泪滴 border-radius:55% 100% 100% 55% / 85% 100% 100% 85%(右端全圆弧=前进弹头、左端 55%/85% 大圆角=后部饱满钝圆接尾不露尖(比 35%/60% 更钝,禁尖窄收尾),严禁 13×7 小椭圆方块感、严禁 20px 大圆球形态)background 三层:底层 linear-gradient(90deg,rgba(153,246,228,.3),rgba(224,254,255,.6) 55%,#fff) 铺底(形状内不得透底)+ 右前缘青蓝冷光 radial-gradient(ellipse 70% 85% at 74% 45%,rgba(125,211,252,.9),transparent) + 青白核 radial-gradient(circle 12px at 66% 50%,#fff,rgba(224,254,255,.95) 45%,rgba(153,246,228,.5) 75%,transparent)(circle 半径必须显式 12px——自动半径按最远角计、四角渐隐至透明会露出轨道深色背景成「黑三角」,显式半径让光核饱满),box-shadow 双圈柔光 0 0 5px 2px rgba(186,230,253,.75) + 0 0 12px 4px rgba(45,212,191,.3)——光晕总高控制在 2~2.5 倍条高以内,不用 drop-shadow;整体前大后收窄的扫帚流星:头部 20×11 大头 → ::after 彗尾 right:40%、84×12px 细长锥形拖尾 linear-gradient(90deg,transparent,rgba(153,246,228,.18) 26%,rgba(186,230,253,.55) 64%,rgba(255,255,255,.9)) + clip-path:polygon(4% 40%,16% 24%,100% 0,100% 100%,16% 76%,4% 60%)(左端收成 2.4px 高平口钝头、右端全高平接光核、16% 处起渐收——远窄近宽,禁矩形方块形、禁 1px 尖点)+ blur 1px + z-index:0——长度约 4 倍头宽;剥落粒子流(JS 为每颗 .pbar-comet 注入 30 个 span.cp,绝对定位在光核中后段出生):30 粒三带分布(上方飘散带 17 粒 by -6~-0.5 向上飘散 + 中部渗漏带 6 粒 by +0.5~+5.2 + 深蓝带 7 粒 by +5.5~+8 贴光核下缘)椭圆小块前大后小(3.2×2.2 → 1.2×0.9px,宽高不等 + rotate -12°~12° 不规则椭圆,禁用标准圆形、禁用 box-shadow 静态星屑——静态点没有剥落飘散的生命感),出生点从头部稍靠后(left 9~17px)开始,y 紧贴中心水平线(中线 ±2.5px,各粒角度基本一致不散乱),cpFlow 1.5~1.8s cubic-bezier(.2,.05,.55,1) infinite + 负延迟 -0.1~-1.5s 错峰:0%→10% 淡入渐现(渐渐出现)、10%→100% 沿水平线加速向后飘 translate3d(-45~-62px, dy, 0)(加速向后)、55% 后 opacity 渐隐 + scale(.16) 渐小(向尾部消失)、dy 三带取值:上方 -3.5~-7 上飘展开(用户反馈上方粒子少且飘散不够远,13→17 再加密、dy 再扩大,下方相对合适不增)、中部 +1.5~+3.5 向下渗漏、深蓝 +5~+7 向后甩出(深蓝带 cp-deep 深蓝渐变+深蓝光晕、dur 1.06~1.25s 更久停留),box-shadow 光晕 0%→55% 增强再减弱(每粒生命期一次明灭=呼吸发光,周期 1.5~1.8s 与主体 1.8s 呼吸非整数倍错开,禁止同频齐步闪);粒子 z-index:1 在彗尾之上(尾 z-index:0)、opacity:0 起步呼吸发光分层不同频:主体光核 1.8s 与彗尾 2.4s 周期呼吸(comet 双动画 cometFade + glowPulse 1.8s ease-in-out infinite:白晕+青晕光晕 0%↔50% 周期扩缩(50% 时白光晕为主 = 白色呼吸,扫过 1.1s 内可见一轮明暗);::after 挂 tailGlow 2.4s ease-in-out infinite:filter blur(1px) brightness(1) ↔ blur(1.5px) brightness(1.28) 亮度呼吸),粒子 1.5~1.8s 明灭与主体 1.8s 呼吸非整数倍错开(视觉错落不同频);opacity:0 常驻隐藏);.pbar-track.sheen-on 时 sweep transition:width 1.1s cubic-bezier(.3,.8,.4,1) 生长(comet 贴 sweep 右缘 left:100% 随宽度从左扫到右),comet 的 animation 严禁写在 .pbar-comet 基类(基类动画页面加载 t=0 即播、1.1s 后 both 定格 opacity:0,而扫动 setTimeout 1.5s 才开始——时序错位会让流星全程不可见);必须挂在 .pbar-track.sheen-on .pbar-comet 选择器上(cometFade 1.1s ease-out both, glowPulse 1.8s ease-in-out infinite 逗号并列双动画:cometFade 7% 淡入、86% 保持、100% 到终点消失、glowPulse 白晕呼吸循环;::after 彗尾另挂 tailGlow 2.4s ease-in-out infinite 亮度呼吸),靠 playSweep 内 remove/add sheen-on 类切换重启动画,与 dotPulse 同机制;扫动终点按各条目标进度 data-w:sheen 内 sweep inline width 终点 = data-w(done 条 100% 扫满轨道、有进度的 plan 条如 30% 即 30% 停在进度点不越界)——sweep 宽度过渡与 fill 宽度过渡同参数天然同步,comet 与彗尾/星屑无需任何反向补偿(scaleX 压缩方案会把彗尾一同拉长数倍,禁用);填充同步生长:入场 sheen(el,'wave') 给 fill 设 transition width 1.1s 同 easing + width 0→data-w,与流星同步——流星扫到哪、填充长到哪,流星到终点消失、留下各自进度,之后填充保持不再变化;圆点 .pbar-done/.pbar-plan .pbar-track.sheen-on .pbar-fill::before animation:dotPulse 1.1s(90% 处 filter:brightness(2) + 白光 drop-shadow 爆亮,done/plan 通用)流星到达终点时爆亮——dotPulse 选择器必须与 JS 加类位置一致:JS 把 sheen-on 加在 .pbar-track 上,严禁写 .pbar-fill.sheen-on::before(JS 从不在 fill 上加类,选择器永不命中、爆亮不触发);流星注入与入场波浪覆盖完成条 + 有进度的计划条(JS 遍历 .pbar-track:plan 且进度<=0 的条 return 跳过——0 进度的计划条不注入流星、不扫、保持静态),其余条 data-w 记录目标进度后 fill 归零;入场波浪:setTimeout 1500+i*420ms 逐条 sheen(el,'wave') 错峰(上→下必然可见);hover 重扫:li 上 mouseenter+pointerenter 双监听,sheen(el,'hover') 只 remove/add fill 与 track 的 sheen-on 类重放流星扫过(comet 再扫一遍,0 进度的 plan 条同样跳过),fill 宽度与颜色完全不重置(进度不再变化),sheen(el,src) 按来源独立节流(wave 1s / hover 300ms);重启动画 remove 类→sweep inline 归零 width:0(transition:none 无过渡)→void offsetWidth 强制回流→同步 add 类→sweep inline 目标 width=data-w(恢复 transition;双 RAF 在 headless 虚拟时间下不推进,不可用));液态玻璃(@supports((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) 内 .overview/.section 加 backdrop-filter:blur(16px) saturate(1.35) + background-color:rgba(11,30,55,.42),不支持的老浏览器走默认实心深蓝不白屏);CRT 扫描光带(.scanband position:fixed、left:0/right:0、height:150px、linear-gradient(180deg,transparent,rgba(0,240,255,.03) 50%,transparent)、animation:scanMove 11s linear infinite(top -22%→112%)、pointer-events:none、z-index:998,置于 scanlines 之下一层);卡片级 3D 微倾斜(严禁全页级 mousemove 倾斜——页面容器整页旋转会让所有卡片一起偏转,与「仅当前卡片响应」不符):每张卡片 hover 时仅该卡片随鼠标偏转,卡片 transform 写 perspective(900px) + rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))(±1.25° 极轻微),与 hover 上浮 translateY(-2px) 合并写同一条 transform(严禁拆两条相互覆盖);hover 态选择器带 tilt(header-card/overview/section 或 header-card/card),非 hover 卡片不倾斜;JS 对每张卡片监听 mousemove 计算卡内相对位置((clientX-rect.left)/rect.width*2-1 归一化 -1~1)只更新该卡 --mx/--my,mouseleave 归零回正,transition transform .18s 平滑;移动端无 mousemove 保持 0 不倾斜);禁止写 @media (prefers-reduced-motion: reduce) 禁用动画的媒体查询块(官方模板无此块,用户系统开启减少动画时该块会禁用全部动效,是竖线不动/发光不呼吸的根因);页面 JS 需支持 `?shot=content` 参数(检测 location.search 含 shot=content 时仅统一 body 四周 padding 40px(不隐藏任何元素),供整页内容区截图用、保证截图四周留白对称合适)
12
12
  - HTML 顶部带「一键复制」按钮:点击复制的是 txt 版纯文本全文(复制源必须用 txt 文件内容:含换行、无 #/##/> 等 Markdown 符号,严禁用 md 内容当复制源),按钮短暂变"已复制";JS 用 navigator.clipboard.writeText,失败回退隐藏 textarea + document.execCommand('copy')(兼容 file:// 打开)
13
13
  - 用户临时说"不落盘/别写文件"时(覆盖 DISK):只在对话输出,不写文件、不开浏览器;临时说"写到桌面/存到 X"(覆盖 DIR)、"只要 md/只出 html/只要内容区截图/只要截图/这次不截图"(覆盖 FORMATS)、"别开浏览器"(覆盖 OPEN_HTML)同理,均只对当次生效、不改配置
14
14
  - 同名目录处理:周日期子目录已存在时直接复用(不重建、不清空),仅覆盖 FORMATS 清单内的同名文件(md/txt/html/content-png),目录内其它文件(时间戳另存的历史文件、用户自放文件)一律保留不动、绝不删除或清空(该目录可能是用户此前自建、作其它用途的目录,我们只并列写入自己的专属命名文件,不与用户文件冲突混淆);落盘前查看目录内已有内容,若存在非本 skill 命名的其它文件(daily-report-/weekly-report- 前缀之外),对话中提示用户「该目录内已有其它文件,本次周报已与它们并列存放,未做任何改动」;同一周重复生成默认直接覆盖原文件,用户说"保留之前的/另存/不覆盖"时,文件名追加时间戳(如 `weekly-report-20261019~20261025-1530.html`)另存不覆盖
@@ -1,6 +1,6 @@
1
1
  # 行业适配(职业词典)
2
2
 
3
- 报告骨架(三段式/TL;DR/概览卡/热力图/柱图/风险建议环)行业无关,只有「行业变量」随职业切换。用户对话中声明职业即按词典取词(如「帮我写份销售周报」→ 销售词条);词典没有的行业走兜底。
3
+ 报告骨架(本周结论 + 三段式/TL;DR/概览卡/热力图/柱图/风险建议环)行业无关,只有「行业变量」随职业切换。用户对话中声明职业即按词典取词(如「帮我写份销售周报」→ 销售词条);词典没有的行业走兜底。
4
4
 
5
5
  | 变量 | 研发 | 销售 | 运营 | 产品 | HR | 财务 | 市场 | 客服 | 项目/PMO | 行政 | 法务 | 设计 |
6
6
  |---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -9,11 +9,13 @@
9
9
  | 概览指标 | 提交数·活跃天数·文件数·行数 | 拜访数·商机数·签约额·回款额 | 曝光·转化·GMV·活动数 | 交付数·上线数·需求数 | 简历数·到面率·入职数 | 凭证数·回款额·预算执行率 | 投放额·线索数·ROI | 工单量·解决率·满意度 | 里程碑达成数·任务完成数·变更数 | 会务场次·采购完成数·资产盘点数 | 合同审核数·案件进展·合规项数 | 页面稿数·规范组件数·走查问题数 |
10
10
  | 热力图/图表 | 提交热力图+节奏柱图 | 拜访节奏+商机漏斗 | 转化漏斗+渠道占比 | 迭代燃尽图 | 招聘漏斗 | 预算执行仪表 | 投放趋势 | 工单趋势 | 里程碑甘特图 | 会务日历/采购进度 | 合同审核节奏/案件清单 | 设计交付节奏 |
11
11
  | 风险话术 | 阻塞点/技术债 | 竞争/预算审批 | 资源/渠道效果 | 需求变更/排期 | 用人缺口 | 资金/合规 | 渠道成本 | 舆情/高峰 | 范围蔓延/资源冲突 | 供应商延期/预算超支 | 合规风险/诉讼时效 | 需求反复/排期挤压 |
12
+ | 价值翻译 | 稳定性·效率·成本·体验 | 收入·客单价·转化·回款 | 曝光·线索·留存·ROI | 用户增长·留存·满意度 | 人效·到岗率·留存率 | 成本节约·资金效率·合规 | 曝光·线索·转化·品牌 | 满意度·处理时效·客诉率 | 准时率·交付质量·成本偏差 | 流程效率·成本·满意度 | 风险规避·合规·时效 | 转化·体验·一致性 |
12
13
 
13
- - 用户角色画像:顶部「默认配置」的 ROLE 定义用户默认角色与主要工作内容(当前:程序员,企业内技术开发,负责前端、后端方向);未提职业时按 ROLE 画像取词(当前等价研发词条:git 提交聚合 + 提交/版本术语 + 提交数/活跃天数/文件数/行数指标 + 提交热力图/节奏柱图)
14
+ - 用户角色画像:顶部「默认配置」的 ROLE 定义用户默认角色与主要工作内容(当前:程序员,企业内技术开发,负责前端、后端方向);未提职业时按 ROLE 画像取词(当前等价研发词条:提交记录聚合 + 提交/版本术语 + 提交数/活跃天数/文件数/行数指标 + 提交热力图/节奏柱图)
15
+ - 价值翻译(技术动作→业务结果):技术动作一律翻译为业务结果表述——研发翻向稳定性/效率/成本/体验(「重写 SQL 加索引」→「查询响应 3.2s→0.4s」),其它岗位按「价值翻译」行各自方向取义(销售→收入/转化、客服→满意度/时效等);提交统计(提交数/文件数/行数)仅为兜底指标,口述含业务结果时业务结果优先;仅含动作无结果时保留动作描述,并在对话中提示可补充结果指标
14
16
  - 触发:话术含职业词(销售/运营/产品/HR/财务/市场/客服/项目/PMO/行政/法务/设计等)→ 标题、工作单元术语、概览指标、热力图/图表主题、风险话术全部按该词典词条生成
15
17
  - 临时换角色:说「以 XX 的身份写周报」(如「以销售经理的身份写」)→ 当次按该角色词条生成,不改配置
16
18
  - 永久换角色:说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 更新顶部 ROLE 配置(永久生效);词典没有的角色按用户描述新增词条
17
19
  - 声明+临时指标覆盖:说「这次指标看拜访数和签约额」→ 词条 + 临时指标(仅当次);说「以后都用这套指标」→ 固化进词典(永久)
18
20
  - 兜底:词典外的行业(工地施工、医生值班等)→ 骨架 + 用户素材(文字/图片/文件)现场生成词条(工作单元/指标从素材提取),本次生效;说「记住这个行业」→ 固化为新词条
19
- - 行业/角色切换只换内容与指标,HTML 骨架/色板/动效/落盘规范全部不变;纯文字整理模式同样适用词典;无 git 数据时概览卡只显示任务进度/计划/风险条数统计;优先级:临时角色声明 > 顶部 ROLE 配置 > 词典表
21
+ - 行业/角色切换只换内容与指标,HTML 骨架/色板/动效/落盘规范全部不变;纯文字整理模式同样适用词典;无 提交数据时概览卡只显示任务进度/计划/风险条数统计;优先级:临时角色声明 > 顶部 ROLE 配置 > 词典表
@@ -257,6 +257,20 @@ h1{
257
257
  .sec-done::before{ background:linear-gradient(180deg,#5eead4,#14b8a6); box-shadow:0 0 12px rgba(20,184,166,.3); }
258
258
  .sec-plan::before{ background:linear-gradient(180deg,#fdba74,#f97316); box-shadow:0 0 12px rgba(249,115,22,.3); }
259
259
  .sec-risk::before{ background:linear-gradient(180deg,#fda4af,#e11d48); box-shadow:0 0 12px rgba(225,29,72,.3); }
260
+ .sec-concl::before{ background:linear-gradient(180deg,#a78bfa,#6366f1); box-shadow:0 0 12px rgba(99,102,241,.3); }
261
+ .sec-concl .sec-head h2{ color:#a78bfa; animation-name:secGlowPurple; }
262
+ @keyframes secGlowPurple{
263
+ 0%,100%{ text-shadow:0 0 14px rgba(167,139,250,.45), 0 0 40px rgba(99,102,241,.18); }
264
+ 50%{ text-shadow:0 0 22px rgba(167,139,250,.75), 0 0 60px rgba(99,102,241,.3); }
265
+ }
266
+ .concl-list{ display:flex; flex-direction:column; gap:10px; }
267
+ .concl-row{ display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border:1px solid rgba(14,165,233,.12); border-radius:6px; background:rgba(14,165,233,.03); transition:background .2s; }
268
+ .concl-row:hover{ background:rgba(14,165,233,.06); }
269
+ .concl-tag{ flex:0 0 auto; font-size:10px; font-weight:900; letter-spacing:1px; padding:3px 8px; border-radius:4px; border:1px solid rgba(167,139,250,.35); background:rgba(167,139,250,.08); color:#a78bfa; text-shadow:0 0 8px rgba(167,139,250,.5); white-space:nowrap; }
270
+ .concl-tag.t2{ border-color:rgba(253,186,116,.35); background:rgba(253,186,116,.08); color:#fdba74; text-shadow:0 0 8px rgba(253,186,116,.5); }
271
+ .concl-tag.t3{ border-color:rgba(94,234,212,.35); background:rgba(94,234,212,.08); color:#5eead4; text-shadow:0 0 8px rgba(94,234,212,.5); }
272
+ .concl-text{ font-size:13px; color:var(--text); line-height:1.7; }
273
+ .concl-sub{ margin-left:auto; font-size:10px; color:var(--muted); letter-spacing:1px; white-space:nowrap; }
260
274
  .sec-inner{ position:relative; z-index:1; padding:24px 24px 22px 32px; }
261
275
  .sec-head{ display:flex; align-items:center; gap:10px; margin-bottom:16px; }
262
276
  .sec-head svg{ width:18px; height:18px; flex:0 0 auto; }
@@ -326,6 +340,8 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
326
340
  .meta .qt{ color:#7fa8cc; }
327
341
  .meta b{ color:var(--cyan); font-weight:900; margin:0 2px; text-shadow:0 0 8px rgba(14,165,233,.5); }
328
342
  .advice{ font-size:12px; color:var(--cyan); margin-top:6px; }
343
+ .owner{ font-size:12px; color:#a78bfa; margin-top:4px; }
344
+ .owner b{ font-weight:900; }
329
345
  .advice b{ font-weight:900; }
330
346
  /* 进度条 */
331
347
  .pbar-track{
@@ -367,7 +383,7 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
367
383
  background:
368
384
  linear-gradient(90deg,rgba(186,230,253,.7),rgba(224,254,255,.95) 30%,#fff 46%,rgba(244,255,255,1) 58%,rgba(224,254,255,.9) 72%,rgba(186,230,253,.65)),
369
385
  radial-gradient(circle 2px at 40% 50%,#fff,rgba(224,254,255,.92) 55%,rgba(125,211,252,.4) 85%,transparent);
370
- filter:drop-shadow(0 0 2px rgba(186,230,253,.7)) drop-shadow(0 0 5px rgba(45,212,191,.25));
386
+ filter:drop-shadow(0 0 1.5px rgba(255,255,255,.9)) drop-shadow(0 0 7px rgba(255,255,255,.5)) drop-shadow(0 0 14px rgba(224,254,255,.35)) drop-shadow(0 0 22px rgba(125,211,252,.2));
371
387
  }
372
388
 
373
389
  .pbar-comet::after{
@@ -405,17 +421,17 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
405
421
 
406
422
 
407
423
  @keyframes glowPulse{
408
- 0%,100%{filter:drop-shadow(0 0 2px rgba(186,230,253,.7)) drop-shadow(0 0 5px rgba(45,212,191,.25));}
409
- 50%{filter:drop-shadow(0 0 4px rgba(186,230,253,.95)) drop-shadow(0 0 8px rgba(45,212,191,.45));}
424
+ 0%,100%{filter:drop-shadow(0 0 1.5px rgba(255,255,255,.9)) drop-shadow(0 0 7px rgba(255,255,255,.5)) drop-shadow(0 0 14px rgba(224,254,255,.35)) drop-shadow(0 0 22px rgba(125,211,252,.2));}
425
+ 50%{filter:drop-shadow(0 0 3px rgba(255,255,255,1)) drop-shadow(0 0 9px rgba(255,255,255,.65)) drop-shadow(0 0 18px rgba(255,255,255,.35)) drop-shadow(0 0 28px rgba(224,254,255,.25)) drop-shadow(0 0 10px rgba(45,212,191,.35));}
410
426
  }
411
427
  @keyframes tailGlow{
412
428
  0%,100%{filter:blur(1px) brightness(1);}
413
429
  50%{filter:blur(1.5px) brightness(1.28);}
414
430
  }
415
431
  .pbar-track.sheen-on .pbar-sweep{ opacity:1; transition:width 1.1s cubic-bezier(.3,.8,.4,1); }
416
- .pbar-track.sheen-on .pbar-comet{ animation:cometFade 1.1s; }
432
+ .pbar-track.sheen-on .pbar-comet{ animation:cometFade 1.1s ease-out both; }
417
433
  .pbar-track.sheen-on .pbar-comet::after{ animation:tailGlow 2.4s ease-in-out infinite; }
418
- .pbar-track.sheen-on .pbar-comet::before{ animation:glowPulse 2.4s ease-in-out infinite; }
434
+ .pbar-track.sheen-on .pbar-comet::before{ animation:glowPulse 1.8s ease-in-out infinite; }
419
435
  @keyframes cometFade{ 0%{opacity:0;} 7%{opacity:1;} 86%{opacity:1;} 100%{opacity:0;} }
420
436
  /* 暂无 */
421
437
  .empty{
@@ -476,6 +492,23 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
476
492
  </div>
477
493
  </div>
478
494
 
495
+ <!-- 本周结论 -->
496
+ <div class="section sec-concl" id="conclCard">
497
+ <div class="card-glow"></div>
498
+ <div class="sec-inner">
499
+ <div class="sec-head">
500
+ <svg viewBox="0 0 18 18" fill="none"><defs><linearGradient id="conclGrad" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#a78bfa"/><stop offset="1" stop-color="#6366f1"/></linearGradient></defs><circle cx="9" cy="9" r="6.4" stroke="url(#conclGrad)" stroke-width="1.5"/><circle cx="9" cy="9" r="2.4" fill="url(#conclGrad)"/><path d="M9 1.2v2.6M9 14.2v2.6M1.2 9h2.6M14.2 9h2.6" stroke="url(#conclGrad)" stroke-width="1.3" stroke-linecap="round"/></svg>
501
+ <h2>本周结论</h2>
502
+ <span class="concl-sub">判断优先 · 先结论后流水</span>
503
+ </div>
504
+ <div class="concl-list">
505
+ <div class="concl-row"><span class="concl-tag">最重要的结果</span><span class="concl-text">八项功能全部交付并随 v1.2.2 收口,底部导航顽疾两轮修复后根治。</span></div>
506
+ <div class="concl-row"><span class="concl-tag t2">值得处理的变化</span><span class="concl-text">多端并行交付节奏加速,但需求拆解粒度偏粗,联调集中在周三单日完成。</span></div>
507
+ <div class="concl-row"><span class="concl-tag t3">下周优先的动作</span><span class="concl-text">聚焦配送链路打磨与直播体验优化,联调前移、避免单日集中交付。</span></div>
508
+ </div>
509
+ </div>
510
+ </div>
511
+
479
512
  <!-- 本周概览 -->
480
513
  <div class="overview" id="overviewCard">
481
514
  <div class="card-glow"></div>
@@ -708,7 +741,7 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
708
741
 
709
742
  <script>
710
743
  // 复制纯文本
711
- var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57:02\n\nTL;DR:本周 11 次提交覆盖客户端/服务端/网关三端,周三单日 8 次提交集中交付直播、礼物、登录、互动等多线功能;底部导航两轮修复后随 v1.2.2 收口。整体节奏紧凑、无阻塞风险,下周可聚焦配送链路打磨与直播体验优化。\n\n本周任务进度\n1、完成底部导航仿参考图重绘:白栏穹顶拱形与发布按钮凸出,两轮修复根治白条与三角缺口,并发布 v1.2.2(3 次提交、23 文件、+1741/-178 行)- 进度100% - 用时约1.5D\n2、完成订单配送能力深化:客户端配送费预估与骑手状态展示,服务端 DISPATCHING 状态机与骑手通道抽象(2 次提交、15 文件、+507/-35 行)- 进度100% - 用时约1.5D\n3、完成对外号正名为产品级主账号邻音号,我的页/账号中心/联系人/群聊全面去内部术语(1 次提交、4 文件、+25/-25 行)- 进度100% - 用时约0.5D\n4、完成萤火虚拟币礼物体系:钱包/充值/16 款四档礼物/原子扣款与 43001 拦截、WS 房间广播、模拟观众自动送礼(1 次提交、22 文件、+1246/-3 行)- 进度100% - 用时约1D\n5、完成帖子互动闭环与媒体上传:评论/点赞/收藏/分享四实体与互动快照、30MB 短视频上传接口(1 次提交、22 文件、+1311/-31 行)- 进度100% - 用时约1D\n6、完成登录安全加固与三方登录:短信验证码(回显+限流+签名)、微信/支付宝绑定、换绑手机号、APK 版本门禁(1 次提交、42 文件、+1792/-87 行)- 进度100% - 用时约1.5D\n7、完成网关 V2 二进制帧协议升级:Protobuf 上下行帧、JWT 握手鉴权与 HMAC 签名、房间索引、wsprobe 冒烟探针(1 次提交、10 文件、+1552/-59 行)- 进度100% - 用时约1D\n8、完成多线功能收束:直播推流与观众端、验证码/三方登录页、短视频录制播放、收藏互动、更新自检、SSL pinning(1 次提交、72 文件、+11.1k/-2.1k 行)- 进度100% - 用时约2D\n\n下周计划\n暂无\n\n风险阻塞点\n暂无";
744
+ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57:02\n\nTL;DR:本周 11 次提交覆盖客户端/服务端/网关三端,周三单日 8 次提交集中交付直播、礼物、登录、互动等多线功能;底部导航两轮修复后随 v1.2.2 收口。整体节奏紧凑、无阻塞风险,下周可聚焦配送链路打磨与直播体验优化。\n\n本周结论\n1、最重要的结果:八项功能全部交付并随 v1.2.2 收口,底部导航顽疾两轮修复后根治\n2、值得处理的变化:多端并行交付节奏加速,需求拆解粒度偏粗、联调集中在周三单日\n3、下周优先的动作:聚焦配送链路打磨与直播体验优化,联调前移、避免单日集中交付\n\n本周任务进度\n1、完成底部导航仿参考图重绘:白栏穹顶拱形与发布按钮凸出,两轮修复根治白条与三角缺口,并发布 v1.2.2(3 次提交、23 文件、+1741/-178 行)- 进度100% - 用时约1.5D\n2、完成订单配送能力深化:客户端配送费预估与骑手状态展示,服务端 DISPATCHING 状态机与骑手通道抽象(2 次提交、15 文件、+507/-35 行)- 进度100% - 用时约1.5D\n3、完成对外号正名为产品级主账号邻音号,我的页/账号中心/联系人/群聊全面去内部术语(1 次提交、4 文件、+25/-25 行)- 进度100% - 用时约0.5D\n4、完成萤火虚拟币礼物体系:钱包/充值/16 款四档礼物/原子扣款与 43001 拦截、WS 房间广播、模拟观众自动送礼(1 次提交、22 文件、+1246/-3 行)- 进度100% - 用时约1D\n5、完成帖子互动闭环与媒体上传:评论/点赞/收藏/分享四实体与互动快照、30MB 短视频上传接口(1 次提交、22 文件、+1311/-31 行)- 进度100% - 用时约1D\n6、完成登录安全加固与三方登录:短信验证码(回显+限流+签名)、微信/支付宝绑定、换绑手机号、APK 版本门禁(1 次提交、42 文件、+1792/-87 行)- 进度100% - 用时约1.5D\n7、完成网关 V2 二进制帧协议升级:Protobuf 上下行帧、JWT 握手鉴权与 HMAC 签名、房间索引、wsprobe 冒烟探针(1 次提交、10 文件、+1552/-59 行)- 进度100% - 用时约1D\n8、完成多线功能收束:直播推流与观众端、验证码/三方登录页、短视频录制播放、收藏互动、更新自检、SSL pinning(1 次提交、72 文件、+11.1k/-2.1k 行)- 进度100% - 用时约2D\n\n下周计划\n暂无\n\n风险阻塞点\n暂无";
712
745
  (function(){
713
746
  var btn = document.getElementById('copyBtn');
714
747
  btn.addEventListener('click', function(){
@@ -759,16 +792,16 @@ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57
759
792
  [ 6, 2.2, 4.0, 2.9, 6, -0.95, 0.96, -86, 2.2],
760
793
  [ 3, 3.6, 3.4, 2.4, 12, -0.10, 0.94, -82, 2.8],
761
794
  [ 7, 4.8, 2.8, 2.0, -5, -0.35, 0.92, -92, 3.2],
762
- [ 5, 5.6, 2.2, 1.6, 9, -0.50, 0.90, -94, 3.5],
795
+ [ 5, 5.2, 2.2, 1.6, 9, -0.50, 0.90, -94, 3.5],
763
796
  [ 8, 1.2, 2.0, 1.4, -7, -0.60, 0.92, -90, 1.5],
764
- // 深蓝带 7 粒(by +7~+9.5=光核下缘下 1~3.5px 贴缘出生,dy +5~+7 向后甩出下散展开,cp-deep 深蓝渐变+深蓝光晕,dur 1.06~1.25s 更久停留)
765
- [ 6, 7.0, 5.0, 3.6, -8, -0.15, 1.20, -90, 5.5],
766
- [ 3, 8.0, 4.4, 3.2, 6, -0.45, 1.25, -98, 6.2],
767
- [ 7, 9.0, 3.8, 2.7, 12, -0.70, 1.12, -94, 5.6],
768
- [ 4, 9.5, 3.3, 2.4, -5, -0.05, 1.18, -106, 6.8],
769
- [ 6, 7.8, 2.9, 2.1, 9, -0.25, 1.08, -102, 6.5],
770
- [ 3, 8.8, 2.5, 1.8, -10, -0.55, 1.10, -110, 6.8],
771
- [ 8, 7.4, 2.1, 1.5, 7, -0.80, 1.06, -112, 5.0]
797
+ // 深蓝带 7 粒(by +5.5~+8=光核下缘外 0.5~3px 贴缘出生(与上方贴缘距离一致),dy +5~+7 向后甩出下散展开,cp-deep 深蓝渐变+深蓝光晕,dur 1.06~1.25s 更久停留)
798
+ [ 6, 5.5, 5.0, 3.6, -8, -0.15, 1.20, -90, 5.5],
799
+ [ 3, 6.5, 4.4, 3.2, 6, -0.45, 1.25, -98, 6.2],
800
+ [ 7, 7.5, 3.8, 2.7, 12, -0.70, 1.12, -94, 5.6],
801
+ [ 4, 8.0, 3.3, 2.4, -5, -0.05, 1.18, -106, 6.8],
802
+ [ 6, 6.3, 2.9, 2.1, 9, -0.25, 1.08, -102, 6.5],
803
+ [ 3, 7.3, 2.5, 1.8, -10, -0.55, 1.10, -110, 6.8],
804
+ [ 8, 5.9, 2.1, 1.5, 7, -0.80, 1.06, -112, 5.0]
772
805
  ];
773
806
  document.querySelectorAll('.pbar-comet').forEach(function(comet){
774
807
  for (var i = 0; i < CP.length; i++){
@@ -784,7 +817,7 @@ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57
784
817
  p.style.animationDuration = c[6] + 's';
785
818
  p.style.setProperty('--dx', c[7] + 'px');
786
819
  p.style.setProperty('--dy', c[8] + 'px');
787
- if (c[1] >= 7){
820
+ if (c[1] >= 5.5){
788
821
  p.className = 'cp cp-deep';
789
822
  p.style.background = 'linear-gradient(90deg, rgba(2,132,199,.4), rgba(56,189,248,.95) 45%, #e0f2fe 86%)';
790
823
  p.style.boxShadow = '0 0 6px 2.5px rgba(56,189,248,.9)';
@@ -12,7 +12,7 @@
12
12
  - 同一周重复生成会直接覆盖原文件;说「保留之前的」→ 文件名追加时间戳另存不覆盖
13
13
  - 说「日报和周报都要」→ 日报、周报按各自流程分别生成,同日数据自动去重
14
14
  - 说「打开/查看本周周报」→ 该报告文件已存在时直接打开不重新生成;不存在则按正常流程生成
15
- - 说「只算我的提交」→ 只聚合本人提交(git log 加 --author=<用户名>);默认仓库内全部提交都计入
15
+ - 开发类用户可说「只算我的提交」→ 只聚合本人提交;默认仓库内全部提交都计入
16
16
  - 说「只写 xxx 的周报 / 只聚合 xxx 仓库」→ 只收集指定仓库的提交,跳过其它仓库
17
17
  - 落盘子目录用当周最后一天(WEEK_END)的日期命名;改顶部 WEEK_END(friday/sunday 等)可改变周结束日;临时说「这周按周日收尾/这周算到周日」→ 当次按周日算(仅当次生效)
18
18
 
@@ -20,10 +20,10 @@
20
20
  - 说「补充一下:这周处理了两天的支付问题」→ 自动按语义拆成多条任务,润色为规范格式并入「本周任务进度」
21
21
  - 拆分信号:时间词(周几/上几天)、连接词(还有/另外/以及)、分号顿号列举、数字列举
22
22
  - 补充内容带分段词时按段并入:「下周计划:xxx」→ 下周计划段;「风险:xxx」→ 风险阻塞点段(说「风险暂无/无风险」→ 风险段写「暂无」);不带分段词默认并入「本周任务进度」
23
- - 与 git 提交聚合出的任务自动去重,同一件事只保留一条
23
+ - 与提交记录聚合出的任务自动去重,同一件事只保留一条
24
24
 
25
- ## 贴文字 / 发图片 / 给文件整理周报(无 git 提交也适用)
26
- - 直接贴一段文字说「整理成周报 / 把这段文字整理成周报」→ 以文字为主源生成,不依赖 git 提交(非开发岗位也可用);说「只整理这段文字 / 只按这段 / 不用 git」同样跳过 git 与会话上下文
25
+ ## 贴文字 / 发图片 / 给文件整理周报(没有提交记录也适用)
26
+ - 直接贴一段文字说「整理成周报 / 把这段文字整理成周报」→ 以文字为主源生成,不依赖提交记录(非开发岗位也可用);说「只整理这段文字 / 只按这段」同样跳过其它来源与会话上下文
27
27
  - 发图片(截图/照片等 jpg/png/webp)或给文件(md/txt/docx/pdf 等)说「整理成周报」→ 先用 Read 读取:图片按视觉理解提取图中文字信息,md/txt 直接读文本,docx/pdf 优先尝试 pandoc 转文本(无 pandoc 则请用户粘贴文字),再按纯文字模式整理
28
28
  - 图片模糊/内容读不清时:先把已提取的部分展示给用户确认或补充,不瞎编没读到的内容
29
29
  - 自动分段归类:文字里写「下周/接下来/计划…」→ 下周计划;「风险/阻塞/问题/卡住…」→ 风险阻塞点;其余 → 本周任务进度(用户已明确分段则按用户分段)
@@ -34,7 +34,7 @@
34
34
  - 说「不落盘/别写文件」时跳过确认,直接对话输出
35
35
 
36
36
  ## 自定义模板(适配各类岗位)
37
- - 内置模板为三段式(本周任务进度/下周计划/风险阻塞点),适合开发岗位;其他岗位可自定义模板
37
+ - 内置模板为四段式(本周结论 + 本周任务进度/下周计划/风险阻塞点),适合开发岗位;其他岗位可自定义模板
38
38
  - 临时换模板:说「这次按 xxx 来」→ 口头描述结构(如"按四段:工作内容/存在问题/下周计划/需要支持"),当次按该结构生成,不改配置
39
39
  - 永久换模板:把顶部配置 TEMPLATE 改为 custom,并按 SKILL.md 的「📝 自定义模板」节说明修改段结构,之后默认按新模板生成
40
40
  - 说「以后都用这个模板」→ 自动把当前口述的结构写入「📝 自定义模板」节并把 TEMPLATE 改为 custom
@@ -62,7 +62,7 @@
62
62
  | DIR | 落盘根目录 | auto(按当前系统自动选 DIR_MAC / DIR_WIN,默认);DIR_MAC = macOS 根目录(/Users/luzhaosheng/MyWork/reports);DIR_WIN = Windows 根目录(d:\Workspace_QCoder\reports) |
63
63
  | OPEN_HTML | 落盘后是否自动打开 html | true(自动打开,默认)/ false(不打开) |
64
64
  | WEEK_END | 周结束日(当周最后一天,决定周范围与落盘目录名) | friday(默认)/ sunday / saturday 等 |
65
- | TEMPLATE | 报告模板 | default(内置三段式,默认)/ custom(按「📝 自定义模板」节的结构生成) |
65
+ | TEMPLATE | 报告模板 | default(内置四段式,默认)/ custom(按「📝 自定义模板」节的结构生成) |
66
66
  | CONFIRM | 落盘前先出效果确认 | never(直接生成不确认,默认)/ text(纯文字整理模式确认)/ always(所有生成都确认) |
67
67
  - 优先级:临时口头要求(不落盘/写到桌面/只要 md/只要内容区截图/这次不截图/别开浏览器/临时换模板/临时改周结束日等)永远优先于默认配置,仅对当次生效、不改配置
68
68
  - DIR(按系统解析)指向的目录/盘符不存在时,自动回退到用户主目录下 reports(macOS=~/reports、Windows=%USERPROFILE%\reports)
@@ -16,13 +16,13 @@ DIR: auto # 落盘根目录:auto = 按当前系统自动
16
16
  DIR_MAC: /Users/luzhaosheng/MyWork/智慧食堂/reports # macOS 落盘根目录(日报按目标日期、周报按当周最后一天建子目录;目录不存在时回退用户主目录下 reports)
17
17
  DIR_WIN: d:\Workspace_QCoder\reports # Windows 落盘根目录(日报按目标日期、周报按当周最后一天建子目录;目录/盘符不存在时回退用户主目录下 reports)
18
18
  OPEN_HTML: true # 落盘后是否自动用浏览器打开 html(FORMATS 不含 html 时忽略)
19
- TEMPLATE: default # 报告模板:default = 内置三段式(本周任务进度/下周计划/风险阻塞点);custom = 使用下方「📝 自定义模板」节;口头临时指定模板仅当次生效
19
+ TEMPLATE: default # 报告模板:default = 内置四段式(本周结论 + 本周任务进度/下周计划/风险阻塞点);custom = 使用下方「📝 自定义模板」节;口头临时指定模板仅当次生效
20
20
  ROLE: 全栈开发工程师(企业内技术开发) # 用户默认职业角色与主要工作内容(两者并存:职业名 + 括号内工作内容,生成内容/术语/量化指标/热力图/柱图/风险话术全部按此画像走);用户随口描述职业时(如「我搞装修的,天天跑工地」)→ AI 提炼为规范表述(装修项目经理(负责工地现场管理、施工进度与质量巡检))更新此处;说「以 XX 的身份写」→ 当次临时换角色不改配置;说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 永久更新此处
21
21
  WEEK_END: friday # 周结束日(当周最后一天):friday = 每周五(默认);可改 sunday = 每周日、saturday 等;周范围、落盘子目录名均按该天日期
22
22
  CONFIRM: never # 落盘前确认:never = 直接生成落盘不确认(默认);text = 纯文字整理模式先出效果确认后再落盘;always = 任何方式生成都先确认;临时说「先看看效果」当次先确认、说「不用确认」当次跳过
23
23
  ```
24
24
 
25
- > 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集 git、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这周按周日收尾/这周算到周日」→ 当次 WEEK_END=sunday(当次周范围与目录名跟随);说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。
25
+ > 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集数据、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这周按周日收尾/这周算到周日」→ 当次 WEEK_END=sunday(当次周范围与目录名跟随);说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。
26
26
 
27
27
  ## 📝 自定义模板(TEMPLATE: custom 时启用,用户可手改,适配各类岗位)
28
28