skill-forge-hub 0.4.0 → 0.5.1
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.
- package/CHANGELOG.md +61 -0
- package/README.md +77 -22
- package/annual-report/SKILL.md +10 -3
- package/annual-report/resources/disk-and-html.md +7 -7
- package/annual-report/resources/reference.html +135 -41
- package/annual-report/user-config.md +3 -2
- package/article-to-html/SKILL.md +23 -0
- package/article-to-html/design-system.md +86 -21
- package/article-to-html/user-config.md +18 -0
- package/cli.js +71 -23
- package/daily-report/SKILL.md +10 -3
- package/daily-report/resources/disk-and-html.md +2 -2
- package/daily-report/resources/reference.html +163 -65
- package/daily-report/user-config.md +3 -2
- package/deck-stage/SKILL.md +80 -0
- package/deck-stage/package-lock.json +172 -0
- package/deck-stage/package.json +15 -0
- package/deck-stage/resources/cover-template.html +139 -0
- package/deck-stage/resources/data-schema.md +111 -0
- package/deck-stage/resources/pptx-builder.js +394 -0
- package/deck-stage/resources/usage-guide.md +20 -0
- package/deck-stage/user-config.md +26 -0
- package/magic-deck/SKILL.md +27 -13
- package/magic-deck/resources/content-guide.md +58 -0
- package/magic-deck/resources/deck-spec.md +380 -30
- package/magic-deck/resources/reference.html +1803 -82
- package/magic-deck/resources/usage-guide.md +42 -0
- package/magic-deck/user-config.md +10 -7
- package/meta-forge/SKILL.md +2 -0
- package/meta-forge/resources/forge-rules.md +1 -0
- package/package.json +16 -4
- package/prompt-pouch/SKILL.md +81 -0
- package/prompt-pouch/resources/data-format.md +67 -0
- package/prompt-pouch/resources/reference.html +2038 -0
- package/prompt-pouch/resources/usage-guide.md +32 -0
- package/prompt-pouch/user-config.md +22 -0
- package/template/SKILL.md +1 -0
- package/weekly-report/SKILL.md +10 -3
- package/weekly-report/resources/disk-and-html.md +2 -2
- package/weekly-report/resources/reference.html +184 -95
- package/weekly-report/user-config.md +3 -2
|
@@ -5,11 +5,53 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>本周周报 - 20261102 ~ 20261106</title>
|
|
7
7
|
<style>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
|
|
8
|
+
/* ═══ 四主题令牌:12 核心契约(与 magic-deck 一致)+ 报告扩展(发光/氛围/热力/语义色);html[data-theme] 运行时切换,THEME 生成时定默认 ═══ */
|
|
9
|
+
:root, [data-theme="tech"]{
|
|
10
|
+
--bg:#0a1929; --bg2:#071525; --panel:rgba(11,30,55,.9); --panel-solid:#0b1e37;
|
|
11
|
+
--card-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 12px 32px rgba(1,6,16,.5), 0 0 24px rgba(14,165,233,.15);
|
|
12
|
+
--text:#bae6fd; --muted:#5b7fa5; --accent:#0ea5e9; --accent2:#14b8a6;
|
|
13
|
+
--border:rgba(14,165,233,.18); --glow:rgba(14,165,233,.35); --glow-soft:rgba(14,165,233,.15);
|
|
14
|
+
--title-grad:linear-gradient(90deg,#7dd3fc,#0ea5e9 45%,#818cf8);
|
|
15
|
+
--tag-bg:rgba(14,165,233,.12);
|
|
16
|
+
--scan:rgba(0,240,255,.2); --scan-dim:rgba(0,240,255,.05);
|
|
17
|
+
--heat:rgba(14,165,233,.55);
|
|
18
|
+
--green:#14b8a6; --orange:#f97316; --rose:#f43f5e; --cp-a:rgba(186,230,253,.15); --cp-b:rgba(240,252,255,.92); --cp-tip:#fff; --cp-glow0:0 0 5px 2px rgba(186,230,253,.6); --cp-glow1:0 0 7px 2.5px rgba(224,254,255,.85); --cpd-a:rgba(224,254,255,.25); --cpd-b:rgba(255,255,255,.96); --cpd-tip:#fff; --cpd-glow0:0 0 6px 2.5px rgba(224,254,255,.7); --cpd-glow1:0 0 8px 3px rgba(255,255,255,.85); --cm-f0: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(224,254,255,.3)); --cm-f1: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(224,254,255,.45));
|
|
19
|
+
}
|
|
20
|
+
[data-theme="biz"]{
|
|
21
|
+
--bg:#e8ecf5; --bg2:#dde3ef; --panel:rgba(255,255,255,.97); --panel-solid:#ffffff;
|
|
22
|
+
--card-shadow:0 1px 2px rgba(15,23,42,.05), 0 10px 28px rgba(15,23,42,.12);
|
|
23
|
+
--text:#1e293b; --muted:#64748b; --accent:#2563eb; --accent2:#0891b2;
|
|
24
|
+
--border:rgba(37,99,235,.14); --glow:rgba(37,99,235,.18); --glow-soft:rgba(37,99,235,.12);
|
|
25
|
+
--title-grad:linear-gradient(90deg,#1e40af,#2563eb 55%,#0891b2);
|
|
26
|
+
--tag-bg:rgba(37,99,235,.08);
|
|
27
|
+
--scan:rgba(37,99,235,.14); --scan-dim:rgba(37,99,235,.04);
|
|
28
|
+
--heat:rgba(37,99,235,.55);
|
|
29
|
+
--green:#0d9488; --orange:#ea580c; --rose:#e11d48;
|
|
30
|
+
}
|
|
31
|
+
[data-theme="mono"]{
|
|
32
|
+
--bg:#f2f2f4; --bg2:#e4e4e8; --panel:rgba(255,255,255,.98); --panel-solid:#ffffff;
|
|
33
|
+
--card-shadow:0 1px 2px rgba(0,0,0,.06), 0 10px 28px rgba(0,0,0,.1);
|
|
34
|
+
--text:#16181d; --muted:#6b7280; --accent:#111111; --accent2:#4b5563;
|
|
35
|
+
--border:rgba(17,17,17,.14); --glow:rgba(17,17,17,.08); --glow-soft:rgba(17,17,17,.1);
|
|
36
|
+
--title-grad:linear-gradient(90deg,#111,#333 60%,#666);
|
|
37
|
+
--tag-bg:rgba(17,17,17,.06);
|
|
38
|
+
--scan:rgba(17,17,17,.1); --scan-dim:rgba(17,17,17,.04);
|
|
39
|
+
--heat:rgba(17,17,17,.55);
|
|
40
|
+
--green:#0f766e; --orange:#c2410c; --rose:#be123c;
|
|
41
|
+
}
|
|
42
|
+
[data-theme="warm"]{
|
|
43
|
+
--bg:#f7ebd9; --bg2:#efe0c8; --panel:rgba(255,250,243,.97); --panel-solid:#fffaf3;
|
|
44
|
+
--card-shadow:0 1px 2px rgba(120,72,24,.07), 0 10px 28px rgba(120,72,24,.13);
|
|
45
|
+
--text:#43301f; --muted:#8a7565; --accent:#d97706; --accent2:#ea580c;
|
|
46
|
+
--border:rgba(217,119,6,.18); --glow:rgba(217,119,6,.22); --glow-soft:rgba(217,119,6,.14);
|
|
47
|
+
--title-grad:linear-gradient(90deg,#b45309,#d97706 50%,#ea580c);
|
|
48
|
+
--tag-bg:rgba(217,119,6,.1);
|
|
49
|
+
--scan:rgba(217,119,6,.16); --scan-dim:rgba(217,119,6,.04);
|
|
50
|
+
--heat:rgba(217,119,6,.55);
|
|
51
|
+
--green:#0d9488; --orange:#c2410c; --rose:#be123c;
|
|
52
|
+
}
|
|
53
|
+
/* 浅色主题下星点氛围自然退隐 */
|
|
54
|
+
[data-theme="biz"] .stars, [data-theme="mono"] .stars, [data-theme="warm"] .stars{ opacity:.28; }
|
|
13
55
|
*{margin:0;padding:0;box-sizing:border-box;}
|
|
14
56
|
html,body{background:var(--bg);}
|
|
15
57
|
body{
|
|
@@ -25,7 +67,7 @@ body::before{
|
|
|
25
67
|
/* 网格底纹 */
|
|
26
68
|
.grid-pattern{
|
|
27
69
|
position:fixed; inset:0; z-index:0; pointer-events:none;
|
|
28
|
-
background-image:linear-gradient(
|
|
70
|
+
background-image:linear-gradient(var(--scan-dim) 1px, transparent 1px),linear-gradient(90deg, var(--scan-dim) 1px, transparent 1px);
|
|
29
71
|
background-size:60px 60px;
|
|
30
72
|
}
|
|
31
73
|
/* 星点层 */
|
|
@@ -44,12 +86,12 @@ body::before{
|
|
|
44
86
|
/* 扫描线 */
|
|
45
87
|
.scanlines{
|
|
46
88
|
position:fixed; inset:0; z-index:999; pointer-events:none;
|
|
47
|
-
background:repeating-linear-gradient(0deg, transparent 0 2px,
|
|
89
|
+
background:repeating-linear-gradient(0deg, transparent 0 2px, var(--scan-dim) 2px 4px);
|
|
48
90
|
}
|
|
49
91
|
/* CRT 光带 */
|
|
50
92
|
.scanband{
|
|
51
93
|
position:fixed; left:0; right:0; height:150px; z-index:998; pointer-events:none;
|
|
52
|
-
background:linear-gradient(180deg, transparent,
|
|
94
|
+
background:linear-gradient(180deg, transparent, var(--scan-dim) 50%, transparent);
|
|
53
95
|
animation:scanMove 11s linear infinite;
|
|
54
96
|
}
|
|
55
97
|
@keyframes scanMove{ from{top:-22%;} to{top:112%;} }
|
|
@@ -58,23 +100,23 @@ body::before{
|
|
|
58
100
|
}
|
|
59
101
|
/* ============ 头部卡片 ============ */
|
|
60
102
|
.header-card{
|
|
61
|
-
position:relative; background:var(--
|
|
103
|
+
position:relative; background:var(--panel-solid);
|
|
62
104
|
background-image:repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px);
|
|
63
|
-
border-top:1px solid var(--
|
|
105
|
+
border-top:1px solid var(--border); border-bottom:1px solid var(--border);
|
|
64
106
|
border-radius:6px; padding:38px 36px 26px; text-align:center; overflow:hidden;
|
|
65
|
-
box-shadow:
|
|
107
|
+
box-shadow:var(--card-shadow);
|
|
66
108
|
margin-bottom:18px;
|
|
67
109
|
}
|
|
68
110
|
.card-glow{
|
|
69
111
|
position:absolute; inset:0; pointer-events:none; transform-origin:top center;
|
|
70
|
-
background:radial-gradient(ellipse at 50% 10%,
|
|
112
|
+
background:radial-gradient(ellipse at 50% 10%, var(--glow), transparent 70%);
|
|
71
113
|
opacity:.5; animation:cardGlow 3s ease-in-out infinite;
|
|
72
114
|
}
|
|
73
115
|
@keyframes cardGlow{ 0%,100%{opacity:.5; transform:scale(1);} 50%{opacity:1; transform:scale(1.6);} }
|
|
74
116
|
/* 四边扫描线 */
|
|
75
117
|
.scanline-el{ position:absolute; pointer-events:none; z-index:3; }
|
|
76
|
-
.scan-x{ left:0; right:0; height:1px; background:linear-gradient(90deg, transparent, var(--
|
|
77
|
-
.scan-y{ top:0; bottom:0; width:1px; background:linear-gradient(180deg, transparent, var(--
|
|
118
|
+
.scan-x{ left:0; right:0; height:1px; background:linear-gradient(90deg, transparent, var(--accent), transparent); }
|
|
119
|
+
.scan-y{ top:0; bottom:0; width:1px; background:linear-gradient(180deg, transparent, var(--accent), transparent); }
|
|
78
120
|
.scan-top{ top:0; animation:scanX 3s linear infinite; }
|
|
79
121
|
.scan-right{ right:0; animation:scanY 3s linear infinite; }
|
|
80
122
|
.scan-bottom{ bottom:0; animation:scanXrev 3s linear infinite; }
|
|
@@ -85,29 +127,29 @@ body::before{
|
|
|
85
127
|
@keyframes scanYrev{ from{transform:translateY(100%);} to{transform:translateY(-100%);} }
|
|
86
128
|
h1{
|
|
87
129
|
position:relative; z-index:2; font-size:30px; font-weight:900; letter-spacing:1px;
|
|
88
|
-
background:
|
|
130
|
+
background:var(--title-grad);
|
|
89
131
|
-webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
|
|
90
|
-
text-shadow:0 0 20px
|
|
132
|
+
text-shadow:0 0 20px var(--glow), 0 0 60px var(--glow-soft);
|
|
91
133
|
animation:titleGlow 3s ease-in-out infinite;
|
|
92
134
|
}
|
|
93
135
|
@keyframes titleGlow{
|
|
94
|
-
0%,100%{ filter:drop-shadow(0 0 20px
|
|
95
|
-
50%{ filter:drop-shadow(0 0 30px
|
|
136
|
+
0%,100%{ filter:drop-shadow(0 0 20px var(--glow)) drop-shadow(0 0 60px var(--glow-soft)); }
|
|
137
|
+
50%{ filter:drop-shadow(0 0 30px var(--glow)) drop-shadow(0 0 80px var(--glow-soft)); }
|
|
96
138
|
}
|
|
97
139
|
.header-sub{ position:relative; z-index:2; font-size:13px; color:var(--muted); margin-top:10px; letter-spacing:2px; }
|
|
98
140
|
.header-badge{
|
|
99
|
-
position:relative; z-index:2; display:inline-block; margin-top:12px; font-size:11px; color:var(--
|
|
100
|
-
border:1px solid
|
|
101
|
-
background:
|
|
141
|
+
position:relative; z-index:2; display:inline-block; margin-top:12px; font-size:11px; color:var(--accent);
|
|
142
|
+
border:1px solid var(--border); border-radius:999px; padding:3px 12px;
|
|
143
|
+
background:var(--tag-bg); text-shadow:0 0 6px var(--glow); letter-spacing:1px;
|
|
102
144
|
}
|
|
103
145
|
.summary-line{
|
|
104
146
|
position:relative; z-index:2; display:flex; gap:10px; max-width:540px; margin:18px auto 0;
|
|
105
147
|
align-items:flex-start;
|
|
106
148
|
}
|
|
107
149
|
.summary-tag{
|
|
108
|
-
flex:0 0 auto; font-size:10px; font-weight:700; color:var(--
|
|
109
|
-
border:1px solid
|
|
110
|
-
background:
|
|
150
|
+
flex:0 0 auto; font-size:10px; font-weight:700; color:var(--accent); letter-spacing:1px;
|
|
151
|
+
border:1px solid var(--border); border-radius:4px; padding:2px 6px;
|
|
152
|
+
background:var(--tag-bg); text-shadow:0 0 6px var(--glow); margin-top:2px;
|
|
111
153
|
}
|
|
112
154
|
.summary-text{ font-size:12.5px; color:var(--text); line-height:1.75; text-align:left; }
|
|
113
155
|
/* 复制按钮 */
|
|
@@ -115,10 +157,10 @@ h1{
|
|
|
115
157
|
.copy-btn{
|
|
116
158
|
display:flex; align-items:center; gap:8px; cursor:pointer; border:none; border-radius:999px;
|
|
117
159
|
padding:10px 28px; font-family:inherit; font-size:14px; color:#fff; letter-spacing:1px;
|
|
118
|
-
background:linear-gradient(90deg, var(--
|
|
119
|
-
box-shadow:0 0 30px
|
|
160
|
+
background:linear-gradient(90deg, var(--accent), var(--accent2));
|
|
161
|
+
box-shadow:0 0 30px var(--glow); transition:box-shadow .25s, transform .15s;
|
|
120
162
|
}
|
|
121
|
-
.copy-btn:hover{ box-shadow:0 0 45px
|
|
163
|
+
.copy-btn:hover{ box-shadow:0 0 45px var(--glow); transform:translateY(-1px); }
|
|
122
164
|
.copy-btn:active{ transform:scale(.97); }
|
|
123
165
|
.copy-btn svg{ width:16px; height:16px; flex:0 0 auto; }
|
|
124
166
|
.copy-btn .check{ display:none; }
|
|
@@ -126,16 +168,16 @@ h1{
|
|
|
126
168
|
.copy-btn.copied .check{ display:block; }
|
|
127
169
|
/* ============ 概览 Bento ============ */
|
|
128
170
|
.overview{
|
|
129
|
-
position:relative; background:var(--
|
|
171
|
+
position:relative; background:var(--panel-solid);
|
|
130
172
|
background-image:repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px);
|
|
131
|
-
border-top:1px solid var(--
|
|
173
|
+
border-top:1px solid var(--border); border-bottom:1px solid var(--border);
|
|
132
174
|
border-radius:6px; overflow:hidden; margin-bottom:18px;
|
|
133
|
-
box-shadow:
|
|
175
|
+
box-shadow:var(--card-shadow);
|
|
134
176
|
}
|
|
135
177
|
.overview::before{
|
|
136
178
|
content:''; position:absolute; left:0; top:0; bottom:0; width:8px; z-index:2;
|
|
137
|
-
background:linear-gradient(180deg
|
|
138
|
-
box-shadow:0 0 12px
|
|
179
|
+
background:linear-gradient(180deg,var(--accent2),var(--accent));
|
|
180
|
+
box-shadow:0 0 12px var(--glow);
|
|
139
181
|
}
|
|
140
182
|
.ov-bento{
|
|
141
183
|
position:relative; z-index:1; display:grid; padding:20px 20px 16px 28px; gap:10px;
|
|
@@ -143,13 +185,13 @@ h1{
|
|
|
143
185
|
}
|
|
144
186
|
.ov-title{
|
|
145
187
|
grid-column:1/4; display:flex; align-items:center; gap:10px;
|
|
146
|
-
font-size:16px; font-weight:900; color:var(--
|
|
147
|
-
text-shadow:0 0 14px
|
|
188
|
+
font-size:16px; font-weight:900; color:var(--accent); letter-spacing:2px;
|
|
189
|
+
text-shadow:0 0 14px var(--glow), 0 0 40px var(--glow-soft);
|
|
148
190
|
animation:secGlowCyan 3s ease-in-out infinite;
|
|
149
191
|
}
|
|
150
192
|
@keyframes secGlowCyan{
|
|
151
|
-
0%,100%{ text-shadow:0 0 14px
|
|
152
|
-
50%{ text-shadow:0 0 22px
|
|
193
|
+
0%,100%{ text-shadow:0 0 14px var(--glow), 0 0 40px var(--glow-soft); }
|
|
194
|
+
50%{ text-shadow:0 0 22px var(--glow), 0 0 60px var(--glow-soft); }
|
|
153
195
|
}
|
|
154
196
|
/* 圆环 */
|
|
155
197
|
.ring-box{
|
|
@@ -158,36 +200,36 @@ h1{
|
|
|
158
200
|
}
|
|
159
201
|
.ring{ position:relative; width:88px; height:88px; }
|
|
160
202
|
.ring svg{ transform:rotate(-90deg); }
|
|
161
|
-
.ring .track{ fill:none; stroke:
|
|
203
|
+
.ring .track{ fill:none; stroke:var(--tag-bg); stroke-width:7; }
|
|
162
204
|
.ring .val{
|
|
163
205
|
fill:none; stroke:url(#ringGrad); stroke-width:7; stroke-linecap:round;
|
|
164
206
|
stroke-dasharray:226.19; stroke-dashoffset:0;
|
|
165
|
-
filter:drop-shadow(0 0 6px
|
|
207
|
+
filter:drop-shadow(0 0 6px var(--glow));
|
|
166
208
|
}
|
|
167
209
|
.ring-num{
|
|
168
210
|
position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
|
|
169
|
-
font-size:22px; font-weight:900; color:var(--
|
|
170
|
-
text-shadow:0 0 12px
|
|
211
|
+
font-size:22px; font-weight:900; color:var(--accent);
|
|
212
|
+
text-shadow:0 0 12px var(--glow);
|
|
171
213
|
}
|
|
172
214
|
.ring-label{ font-size:11px; color:var(--muted); text-align:center; line-height:1.5; }
|
|
173
215
|
/* 热力图 */
|
|
174
216
|
.heat-card{
|
|
175
217
|
grid-column:2/4; grid-row:2; display:flex; align-items:center; gap:14px;
|
|
176
|
-
border:1px solid
|
|
218
|
+
border:1px solid var(--border); border-radius:6px; background:var(--scan-dim);
|
|
177
219
|
padding:12px 14px; flex-wrap:wrap;
|
|
178
220
|
}
|
|
179
221
|
.heat-title{ font-size:12px; font-weight:700; color:var(--text); letter-spacing:1px; white-space:nowrap; }
|
|
180
222
|
.heat-grid{ display:grid; grid-template-columns:repeat(3, 14px); grid-auto-flow:column; grid-template-rows:repeat(5, 14px); gap:4px; }
|
|
181
223
|
.hm{
|
|
182
224
|
width:14px; height:14px; border-radius:3px; position:relative; cursor:default;
|
|
183
|
-
background:
|
|
225
|
+
background:var(--tag-bg);
|
|
184
226
|
}
|
|
185
|
-
.hm[data-v="1"]{ background:
|
|
186
|
-
.hm[data-v="2"]{ background:
|
|
187
|
-
.hm[data-v="3"]{ background:
|
|
227
|
+
.hm[data-v="1"]{ background:var(--glow); }
|
|
228
|
+
.hm[data-v="2"]{ background:var(--heat); }
|
|
229
|
+
.hm[data-v="3"]{ background:var(--accent2); box-shadow:0 0 8px var(--glow); }
|
|
188
230
|
.hm::after{
|
|
189
231
|
content:attr(data-tip); position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%);
|
|
190
|
-
background:var(--
|
|
232
|
+
background:var(--panel-solid); border:1px solid var(--border); border-radius:4px;
|
|
191
233
|
color:var(--text); font-size:10px; padding:3px 8px; white-space:nowrap; z-index:5;
|
|
192
234
|
opacity:0; pointer-events:none; transition:opacity .15s;
|
|
193
235
|
}
|
|
@@ -199,14 +241,14 @@ h1{
|
|
|
199
241
|
/* 指标胶囊 */
|
|
200
242
|
.ov-item{
|
|
201
243
|
display:flex; align-items:center; gap:10px; padding:10px 14px;
|
|
202
|
-
border:1px solid
|
|
244
|
+
border:1px solid var(--border); border-radius:6px; background:var(--scan-dim);
|
|
203
245
|
}
|
|
204
246
|
.ov-num{
|
|
205
|
-
font-size:24px; font-weight:900; color:var(--
|
|
206
|
-
text-shadow:0 0 12px
|
|
247
|
+
font-size:24px; font-weight:900; color:var(--accent); letter-spacing:1px;
|
|
248
|
+
text-shadow:0 0 12px var(--glow);
|
|
207
249
|
}
|
|
208
250
|
.ov-num-static{ display:flex; flex-direction:column; line-height:1.2; }
|
|
209
|
-
.ov-num-static .main{ font-size:22px; font-weight:900; color:var(--
|
|
251
|
+
.ov-num-static .main{ font-size:22px; font-weight:900; color:var(--accent); text-shadow:0 0 12px var(--glow); }
|
|
210
252
|
.ov-num-static .small{ font-size:10px; color:var(--rose); }
|
|
211
253
|
.ov-label{ font-size:11px; color:var(--muted); }
|
|
212
254
|
.ov-item .ov-num.small-num{ font-size:20px; }
|
|
@@ -220,35 +262,35 @@ h1{
|
|
|
220
262
|
/* 柱图 */
|
|
221
263
|
.cb-row{
|
|
222
264
|
grid-column:2/4; grid-row:6; display:flex; align-items:flex-end; justify-content:space-around;
|
|
223
|
-
height:86px; padding:0 6px; border-top:1px dashed
|
|
265
|
+
height:86px; padding:0 6px; border-top:1px dashed var(--border); padding-top:10px; position:relative;
|
|
224
266
|
}
|
|
225
267
|
.cb-col{ position:relative; display:flex; flex-direction:column; align-items:center; gap:6px; height:100%; justify-content:flex-end; }
|
|
226
268
|
.cb-bar{
|
|
227
269
|
width:32px; border-radius:4px 4px 0 0;
|
|
228
|
-
background:linear-gradient(180deg,
|
|
229
|
-
box-shadow:0 0 10px
|
|
270
|
+
background:linear-gradient(180deg, var(--accent2), var(--accent) 60%, var(--accent2));
|
|
271
|
+
box-shadow:0 0 10px var(--glow);
|
|
230
272
|
min-height:3px; animation:cbGrow 1s ease-out both;
|
|
231
273
|
}
|
|
232
274
|
@keyframes cbGrow{ from{height:0;} }
|
|
233
275
|
.cb-col .cb-day{ font-size:9.5px; color:var(--muted); }
|
|
234
276
|
.cb-col .cb-tip{
|
|
235
277
|
position:absolute; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%);
|
|
236
|
-
background:var(--
|
|
278
|
+
background:var(--panel-solid); border:1px solid var(--border); border-radius:4px;
|
|
237
279
|
color:var(--text); font-size:10px; padding:4px 8px; white-space:nowrap; z-index:5;
|
|
238
280
|
opacity:0; pointer-events:none; transition:opacity .15s;
|
|
239
281
|
}
|
|
240
282
|
.cb-col:hover .cb-tip{ opacity:1; }
|
|
241
|
-
.cb-count{ font-size:11px; font-weight:900; color:var(--
|
|
283
|
+
.cb-count{ font-size:11px; font-weight:900; color:var(--accent); text-shadow:0 0 8px var(--glow); }
|
|
242
284
|
/* ============ 分节卡片 ============ */
|
|
243
285
|
.section{
|
|
244
|
-
position:relative; background:var(--
|
|
286
|
+
position:relative; background:var(--panel-solid);
|
|
245
287
|
background-image:repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px);
|
|
246
|
-
border-top:1px solid var(--
|
|
288
|
+
border-top:1px solid var(--border); border-bottom:1px solid var(--border);
|
|
247
289
|
border-radius:6px; overflow:hidden; margin-bottom:18px;
|
|
248
|
-
box-shadow:
|
|
290
|
+
box-shadow:var(--card-shadow);
|
|
249
291
|
transition:transform .2s, box-shadow .2s;
|
|
250
292
|
}
|
|
251
|
-
.section:hover{ transform:perspective(900px) translateY(-2px) rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg)); box-shadow:
|
|
293
|
+
.section:hover{ transform:perspective(900px) translateY(-2px) rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg)); box-shadow:var(--card-shadow), 0 0 28px var(--glow-soft); }
|
|
252
294
|
.header-card,.overview{transition:transform .18s ease-out}
|
|
253
295
|
.header-card:hover,.overview:hover{transform:perspective(900px) rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))}
|
|
254
296
|
.section::before{
|
|
@@ -264,8 +306,8 @@ h1{
|
|
|
264
306
|
50%{ text-shadow:0 0 22px rgba(167,139,250,.75), 0 0 60px rgba(99,102,241,.3); }
|
|
265
307
|
}
|
|
266
308
|
.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
|
|
268
|
-
.concl-row:hover{ background:
|
|
309
|
+
.concl-row{ display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:6px; background:var(--scan-dim); transition:background .2s; }
|
|
310
|
+
.concl-row:hover{ background:var(--tag-bg); }
|
|
269
311
|
.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
312
|
.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
313
|
.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); }
|
|
@@ -295,17 +337,17 @@ h1{
|
|
|
295
337
|
}
|
|
296
338
|
.sec-date{
|
|
297
339
|
margin-left:auto; flex:0 0 auto; font-size:11px; color:var(--muted); padding:3px 10px;
|
|
298
|
-
border-radius:999px; border:1px solid
|
|
340
|
+
border-radius:999px; border:1px solid var(--border); background:var(--tag-bg);
|
|
299
341
|
letter-spacing:1px;
|
|
300
342
|
}
|
|
301
343
|
ol{ list-style:none; padding:0 12px; }
|
|
302
344
|
li{
|
|
303
345
|
display:flex; align-items:flex-start; gap:10px; padding:10px;
|
|
304
|
-
border-bottom:1px dashed
|
|
346
|
+
border-bottom:1px dashed var(--border); border-radius:4px;
|
|
305
347
|
transition:background .15s;
|
|
306
348
|
}
|
|
307
349
|
li:last-child{ border-bottom:none; }
|
|
308
|
-
li:hover{ background:
|
|
350
|
+
li:hover{ background:var(--tag-bg); }
|
|
309
351
|
.idx{
|
|
310
352
|
flex:0 0 auto; width:28px; height:28px; border-radius:50%; position:relative;
|
|
311
353
|
display:flex; align-items:center; justify-content:center; color:#fff;
|
|
@@ -338,15 +380,15 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
338
380
|
.desc{ font-size:15px; line-height:1.65; color:var(--text); }
|
|
339
381
|
.meta{ font-size:12px; color:var(--muted); margin-top:5px; }
|
|
340
382
|
.meta .qt{ color:#7fa8cc; }
|
|
341
|
-
.meta b{ color:var(--
|
|
342
|
-
.advice{ font-size:12px; color:var(--
|
|
383
|
+
.meta b{ color:var(--accent); font-weight:900; margin:0 2px; text-shadow:0 0 8px var(--glow); }
|
|
384
|
+
.advice{ font-size:12px; color:var(--accent); margin-top:6px; }
|
|
343
385
|
.owner{ font-size:12px; color:#a78bfa; margin-top:4px; }
|
|
344
386
|
.owner b{ font-weight:900; }
|
|
345
387
|
.advice b{ font-weight:900; }
|
|
346
388
|
/* 进度条 */
|
|
347
389
|
.pbar-track{
|
|
348
390
|
position:relative; margin-top:9px; height:5px; border-radius:999px;
|
|
349
|
-
background:
|
|
391
|
+
background:var(--tag-bg);
|
|
350
392
|
}
|
|
351
393
|
.pbar-fill{
|
|
352
394
|
display:block; position:relative; height:100%; border-radius:999px;
|
|
@@ -368,8 +410,10 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
368
410
|
background:radial-gradient(circle at 35% 30%, #fed7aa, #fdba74 55%, #fb923c 100%);
|
|
369
411
|
box-shadow:0 0 8px rgba(249,115,22,.7);
|
|
370
412
|
}
|
|
371
|
-
.pbar-track.sheen-on .pbar-fill::before{ animation:
|
|
372
|
-
|
|
413
|
+
.pbar-done .pbar-track.sheen-on .pbar-fill::before{ animation:dotPulseDone 1.1s; }
|
|
414
|
+
.pbar-plan .pbar-track.sheen-on .pbar-fill::before{ animation:dotPulsePlan 1.1s; }
|
|
415
|
+
@keyframes dotPulseDone{ 90%{ filter:brightness(2) drop-shadow(0 0 6px rgba(45,212,191,.85)); } }
|
|
416
|
+
@keyframes dotPulsePlan{ 90%{ filter:brightness(2) drop-shadow(0 0 6px rgba(249,115,22,.85)); } }
|
|
373
417
|
.pbar-sweep{
|
|
374
418
|
position:absolute; left:0; top:50%; transform:translateY(-50%); height:16px; width:0;
|
|
375
419
|
z-index:1; pointer-events:none; opacity:0;
|
|
@@ -381,15 +425,15 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
381
425
|
content:''; position:absolute; inset:0; z-index:2;
|
|
382
426
|
clip-path:polygon(0% 50%, 3% 36%, 10% 18%, 24% 4%, 42% 0%, 60% 1%, 78% 6%, 92% 17%, 99% 33%, 100% 50%, 99% 67%, 92% 83%, 78% 94%, 60% 99%, 42% 100%, 24% 96%, 10% 82%, 3% 64%);
|
|
383
427
|
background:
|
|
384
|
-
linear-gradient(90deg,
|
|
385
|
-
radial-gradient(circle 2px at 40% 50
|
|
386
|
-
filter:
|
|
428
|
+
linear-gradient(90deg,var(--cp-a),var(--cp-b) 30%,var(--cp-tip) 46%,var(--cp-tip) 58%,var(--cp-b) 72%,var(--cp-a)),
|
|
429
|
+
radial-gradient(circle 2px at 40% 50%,var(--cp-tip),var(--cp-b) 55%,var(--cp-a) 85%,transparent);
|
|
430
|
+
filter:var(--cm-f0);
|
|
387
431
|
}
|
|
388
432
|
|
|
389
433
|
.pbar-comet::after{
|
|
390
434
|
content:'';position:absolute;right:40%;top:50%;width:68px; height:10px;
|
|
391
435
|
transform:translateY(-50%);
|
|
392
|
-
background:linear-gradient(90deg,
|
|
436
|
+
background:linear-gradient(90deg,transparent,var(--cp-b) 25%,var(--cp-tip) 60%,var(--cp-tip) 100%);
|
|
393
437
|
clip-path:polygon(0 50%, 10% 30%, 100% 0, 100% 100%, 10% 70%);
|
|
394
438
|
mask-image:linear-gradient(90deg, transparent 0%, #000 20%, #000 100%);
|
|
395
439
|
-webkit-mask-image:linear-gradient(90deg, transparent 0%, #000 20%, #000 100%);
|
|
@@ -399,30 +443,34 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
399
443
|
/* 流星剥落粒子:从光核中后部诞生、0~8% 快速渐显、沿水平线加速后飘、渐小渐隐(椭圆各异不规则、明灭发光,与主体 2.4s 呼吸不同频) */
|
|
400
444
|
.pbar-comet .cp-deep{ animation:cpFlowDeep 1.4s linear infinite; }
|
|
401
445
|
@keyframes cpFlowDeep{
|
|
402
|
-
0%{ opacity:0; transform:translate3d(0,0,0) scale(.3) rotate(var(--r,0deg)); box-shadow:
|
|
446
|
+
0%{ opacity:0; transform:translate3d(0,0,0) scale(.3) rotate(var(--r,0deg)); box-shadow:var(--cpd-glow0); }
|
|
403
447
|
8%{ opacity:1; transform:translate3d(calc(var(--dx,-60px)*.01), calc(var(--dy,0)*.01), 0) scale(1) rotate(var(--r,0deg)); }
|
|
404
448
|
35%{ transform:translate3d(calc(var(--dx,-60px)*.08), calc(var(--dy,0)*.30), 0) scale(.78) rotate(var(--r,0deg)); }
|
|
405
|
-
55%{ opacity:.85; transform:translate3d(calc(var(--dx,-60px)*.38), calc(var(--dy,0)*.10), 0) scale(.4) rotate(var(--r,0deg)); box-shadow:
|
|
406
|
-
100%{ opacity:0; transform:translate3d(var(--dx,-60px), calc(var(--dy,0)*.05), 0) scale(.06) rotate(var(--r,0deg)); box-shadow:0 0 1px 0
|
|
449
|
+
55%{ opacity:.85; transform:translate3d(calc(var(--dx,-60px)*.38), calc(var(--dy,0)*.10), 0) scale(.4) rotate(var(--r,0deg)); box-shadow:var(--cpd-glow1); }
|
|
450
|
+
100%{ opacity:0; transform:translate3d(var(--dx,-60px), calc(var(--dy,0)*.05), 0) scale(.06) rotate(var(--r,0deg)); box-shadow:0 0 1px 0 transparent; }
|
|
407
451
|
}
|
|
408
452
|
.cp{
|
|
409
453
|
position:absolute; border-radius:50%; opacity:0; z-index:1; pointer-events:none;
|
|
410
|
-
background:linear-gradient(90deg,
|
|
411
|
-
box-shadow:
|
|
454
|
+
background:linear-gradient(90deg, var(--cp-a), var(--cp-b) 45%, var(--cp-tip) 86%);
|
|
455
|
+
box-shadow:var(--cp-glow0);
|
|
412
456
|
animation:cpFlow 1.4s linear infinite;
|
|
413
457
|
}
|
|
458
|
+
.cp-deep{ /* 全白发光带 7 粒:与浅带同为白色系,光晕略强分层,跨主题统一 */
|
|
459
|
+
background:linear-gradient(90deg, var(--cpd-a), var(--cpd-b) 45%, var(--cpd-tip) 86%);
|
|
460
|
+
box-shadow:var(--cpd-glow0);
|
|
461
|
+
}
|
|
414
462
|
@keyframes cpFlow{
|
|
415
|
-
0%{ opacity:0; transform:translate3d(0,0,0) scale(.3) rotate(var(--r,0deg)); box-shadow:
|
|
463
|
+
0%{ opacity:0; transform:translate3d(0,0,0) scale(.3) rotate(var(--r,0deg)); box-shadow:var(--cp-glow0); }
|
|
416
464
|
8%{ opacity:1; transform:translate3d(calc(var(--dx,-60px)*.01), calc(var(--dy,0)*.01), 0) scale(1) rotate(var(--r,0deg)); }
|
|
417
465
|
35%{ transform:translate3d(calc(var(--dx,-60px)*.08), calc(var(--dy,0)*.30), 0) scale(.78) rotate(var(--r,0deg)); }
|
|
418
|
-
52%{ opacity:.7; transform:translate3d(calc(var(--dx,-60px)*.35), calc(var(--dy,0)*.12), 0) scale(.4) rotate(var(--r,0deg)); box-shadow:
|
|
419
|
-
100%{ opacity:0; transform:translate3d(var(--dx,-60px), calc(var(--dy,0)*.05), 0) scale(.06) rotate(var(--r,0deg)); box-shadow:0 0 1px 0
|
|
466
|
+
52%{ opacity:.7; transform:translate3d(calc(var(--dx,-60px)*.35), calc(var(--dy,0)*.12), 0) scale(.4) rotate(var(--r,0deg)); box-shadow:var(--cp-glow1); }
|
|
467
|
+
100%{ opacity:0; transform:translate3d(var(--dx,-60px), calc(var(--dy,0)*.05), 0) scale(.06) rotate(var(--r,0deg)); box-shadow:0 0 1px 0 transparent; }
|
|
420
468
|
}
|
|
421
469
|
|
|
422
470
|
|
|
423
471
|
@keyframes glowPulse{
|
|
424
|
-
0%,100%{filter:
|
|
425
|
-
50%{filter:
|
|
472
|
+
0%,100%{filter:var(--cm-f0);}
|
|
473
|
+
50%{filter:var(--cm-f1);}
|
|
426
474
|
}
|
|
427
475
|
@keyframes tailGlow{
|
|
428
476
|
0%,100%{filter:blur(1px) brightness(1);}
|
|
@@ -436,11 +484,11 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
436
484
|
/* 暂无 */
|
|
437
485
|
.empty{
|
|
438
486
|
font-size:14px; color:var(--muted); padding:16px 12px; letter-spacing:1px;
|
|
439
|
-
border:1px dashed
|
|
487
|
+
border:1px dashed var(--border); border-radius:6px; text-align:center;
|
|
440
488
|
}
|
|
441
489
|
/* 液态玻璃 */
|
|
442
490
|
@supports((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
|
|
443
|
-
.overview, .section{ backdrop-filter:blur(16px) saturate(1.35); background-color:
|
|
491
|
+
.overview, .section{ backdrop-filter:blur(16px) saturate(1.35); background-color:var(--panel); }
|
|
444
492
|
}
|
|
445
493
|
/* 入场 */
|
|
446
494
|
.header-card{ animation:fadeDown .5s ease-out backwards; }
|
|
@@ -455,6 +503,26 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
455
503
|
text-align:center; font-size:10px; color:var(--muted); letter-spacing:1.5px;
|
|
456
504
|
padding:6px 0 2px; position:relative; z-index:1;
|
|
457
505
|
}
|
|
506
|
+
|
|
507
|
+
/* 主题换肤坞:右下角四色点随点随换,记忆上次选择;打印与截图模式隐藏 */
|
|
508
|
+
.theme-dock{
|
|
509
|
+
position:fixed; right:18px; bottom:18px; z-index:1001;
|
|
510
|
+
display:flex; gap:8px; padding:8px 10px; border-radius:999px;
|
|
511
|
+
background:var(--panel-solid); border:1px solid var(--border);
|
|
512
|
+
box-shadow:0 4px 18px rgba(0,0,0,.3);
|
|
513
|
+
}
|
|
514
|
+
.theme-dock .th-dot{
|
|
515
|
+
width:22px; height:22px; border-radius:50%; cursor:pointer;
|
|
516
|
+
border:2px solid transparent; padding:0;
|
|
517
|
+
transition:transform .15s ease, border-color .15s ease;
|
|
518
|
+
}
|
|
519
|
+
.theme-dock .th-dot:hover{ transform:scale(1.18); }
|
|
520
|
+
.theme-dock .th-dot.on{ border-color:var(--text); }
|
|
521
|
+
.theme-dock .th-dot[data-theme="tech"]{ background:#0ea5e9; }
|
|
522
|
+
.theme-dock .th-dot[data-theme="biz"]{ background:#2563eb; }
|
|
523
|
+
.theme-dock .th-dot[data-theme="mono"]{ background:#111; }
|
|
524
|
+
.theme-dock .th-dot[data-theme="warm"]{ background:#d97706; }
|
|
525
|
+
@media print{ .theme-dock{ display:none; } }
|
|
458
526
|
</style>
|
|
459
527
|
</head>
|
|
460
528
|
<body>
|
|
@@ -519,8 +587,8 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
519
587
|
<svg width="88" height="88" viewBox="0 0 88 88">
|
|
520
588
|
<defs>
|
|
521
589
|
<linearGradient id="ringGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
522
|
-
<stop offset="0%" stop-color="
|
|
523
|
-
<stop offset="100%" stop-color="
|
|
590
|
+
<stop offset="0%" stop-color="var(--accent2)"/>
|
|
591
|
+
<stop offset="100%" stop-color="var(--accent)"/>
|
|
524
592
|
</linearGradient>
|
|
525
593
|
</defs>
|
|
526
594
|
<circle class="track" cx="44" cy="44" r="36"/>
|
|
@@ -739,6 +807,14 @@ li:hover .idx{ transform:scale(1.18) rotate(-4deg); font-size:14px; }
|
|
|
739
807
|
<div class="footer">GENERATED BY SPECCORE TEAM · 20261102 ~ 20261106</div>
|
|
740
808
|
</div>
|
|
741
809
|
|
|
810
|
+
<!-- 主题换肤坞(四色点) -->
|
|
811
|
+
<div class="theme-dock" id="themeDock">
|
|
812
|
+
<button class="th-dot" type="button" data-theme="tech" title="深蓝科技"></button>
|
|
813
|
+
<button class="th-dot" type="button" data-theme="biz" title="浅色商务"></button>
|
|
814
|
+
<button class="th-dot" type="button" data-theme="mono" title="极简黑白"></button>
|
|
815
|
+
<button class="th-dot" type="button" data-theme="warm" title="温暖渐变"></button>
|
|
816
|
+
</div>
|
|
817
|
+
|
|
742
818
|
<script>
|
|
743
819
|
// 复制纯文本
|
|
744
820
|
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暂无";
|
|
@@ -765,10 +841,10 @@ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57
|
|
|
765
841
|
})();
|
|
766
842
|
|
|
767
843
|
// 进度条流星
|
|
768
|
-
/* 流星剥落粒子:JS 为每颗彗星注入
|
|
844
|
+
/* 流星剥落粒子:JS 为每颗彗星注入 30 粒椭圆小块(从头部稍后诞生 → 加速后飘 → 渐小渐隐,y 向中心水平线收敛) */
|
|
769
845
|
(function(){
|
|
770
846
|
var CP = [
|
|
771
|
-
// [bx, by, w, h, r, delay, dur, dx, dy] —— 30 粒前大后小剥落:bx 2~8 于光核中后部诞生(不贴尖头)、by -6~+9.5 上下连续散布、0~8% 快速渐显(scale .3→1 绽放淡入);dy 适中(上 -3.5~-7 / 中 +1.5~+3.5 /
|
|
847
|
+
// [bx, by, w, h, r, delay, dur, dx, dy] —— 30 粒前大后小剥落:bx 2~8 于光核中后部诞生(不贴尖头)、by -6~+9.5 上下连续散布、0~8% 快速渐显(scale .3→1 绽放淡入);dy 适中(上 -3.5~-7 / 中 +1.5~+3.5 / 深色带 +5~+7)向后飞行中适度上下展开并向中线收敛(既非贴中线亦非过度发散);dx -72~-112 终点越过彗尾左端(用户要求比彗星尾部更远)
|
|
772
848
|
// 上方飘散带 17 粒(by -6~-0.5,向上飘散,dy -3.5~-7 上飘展开——用户反馈上方粒子少且飘散不够远,13→17 再加密、dy 再扩大,下方相对合适不增)
|
|
773
849
|
[ 7, -6.0, 5.2, 3.7, 6, -0.05, 1.08, -72, -7.0],
|
|
774
850
|
[ 5, -5.8, 4.0, 2.9, -8, -0.10, 1.01, -76, -6.8],
|
|
@@ -794,7 +870,7 @@ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57
|
|
|
794
870
|
[ 7, 4.8, 2.8, 2.0, -5, -0.35, 0.92, -92, 3.2],
|
|
795
871
|
[ 5, 5.2, 2.2, 1.6, 9, -0.50, 0.90, -94, 3.5],
|
|
796
872
|
[ 8, 1.2, 2.0, 1.4, -7, -0.60, 0.92, -90, 1.5],
|
|
797
|
-
//
|
|
873
|
+
// 深色带 7 粒(by +5.5~+8=光核下缘外 0.5~3px 贴缘出生(与上方贴缘距离一致),dy +5~+7 向后甩出下散展开,cp-deep 主题同色渐变+同色光晕(随 html[data-theme] 四令牌换色,白热尖端不变),dur 1.06~1.25s 更久停留)
|
|
798
874
|
[ 6, 5.5, 5.0, 3.6, -8, -0.15, 1.20, -90, 5.5],
|
|
799
875
|
[ 3, 6.5, 4.4, 3.2, 6, -0.45, 1.25, -98, 6.2],
|
|
800
876
|
[ 7, 7.5, 3.8, 2.7, 12, -0.70, 1.12, -94, 5.6],
|
|
@@ -817,11 +893,7 @@ var TXT = "本周周报 - 20261102 ~ 20261106\n\n生成时间:2026-11-06 14:57
|
|
|
817
893
|
p.style.animationDuration = c[6] + 's';
|
|
818
894
|
p.style.setProperty('--dx', c[7] + 'px');
|
|
819
895
|
p.style.setProperty('--dy', c[8] + 'px');
|
|
820
|
-
if (c[1] >= 5.5)
|
|
821
|
-
p.className = 'cp cp-deep';
|
|
822
|
-
p.style.background = 'linear-gradient(90deg, rgba(2,132,199,.4), rgba(56,189,248,.95) 45%, #e0f2fe 86%)';
|
|
823
|
-
p.style.boxShadow = '0 0 6px 2.5px rgba(56,189,248,.9)';
|
|
824
|
-
}
|
|
896
|
+
if (c[1] >= 5.5) p.className = 'cp cp-deep'; // 深色带配色由 .cp-deep 类承接(四主题令牌驱动,勿内联写死)
|
|
825
897
|
comet.appendChild(p);
|
|
826
898
|
}
|
|
827
899
|
});
|
|
@@ -894,6 +966,23 @@ function sheen(track, src){
|
|
|
894
966
|
document.body.style.padding = '40px';
|
|
895
967
|
}
|
|
896
968
|
})();
|
|
969
|
+
|
|
970
|
+
// 主题换肤:四套配色随点随换;记忆上次选择(localStorage,失败静默);?shot 截图模式隐藏坞
|
|
971
|
+
(function(){
|
|
972
|
+
var THEMES = ['tech','biz','mono','warm'];
|
|
973
|
+
var dock = document.getElementById('themeDock');
|
|
974
|
+
if (!dock) return;
|
|
975
|
+
if (location.search.indexOf('shot=') !== -1){ dock.style.display = 'none'; }
|
|
976
|
+
function apply(t){ document.documentElement.setAttribute('data-theme', t);
|
|
977
|
+
dock.querySelectorAll('.th-dot').forEach(function(d){ d.classList.toggle('on', d.getAttribute('data-theme') === t); });
|
|
978
|
+
try{ localStorage.setItem('sf-report-theme', t); }catch(e){} }
|
|
979
|
+
var cur = document.documentElement.getAttribute('data-theme');
|
|
980
|
+
var saved = null; try{ saved = localStorage.getItem('sf-report-theme'); }catch(e){}
|
|
981
|
+
if (saved && THEMES.indexOf(saved) !== -1 && saved !== cur){ apply(saved); }
|
|
982
|
+
else{ dock.querySelectorAll('.th-dot').forEach(function(d){ d.classList.toggle('on', d.getAttribute('data-theme') === (cur || 'tech')); }); }
|
|
983
|
+
dock.querySelectorAll('.th-dot').forEach(function(d){ d.addEventListener('click', function(){ apply(d.getAttribute('data-theme')); }); });
|
|
984
|
+
})();
|
|
985
|
+
|
|
897
986
|
</script>
|
|
898
987
|
</body>
|
|
899
988
|
</html>
|
|
@@ -10,19 +10,20 @@
|
|
|
10
10
|
|
|
11
11
|
```yaml
|
|
12
12
|
DISK: true # 是否落盘写文件;false = 默认只在对话输出,不写文件不开浏览器
|
|
13
|
-
CONFIG_VERSION:
|
|
13
|
+
CONFIG_VERSION: 2 # 配置结构版本:skill 升级时若配置结构变化会递增;AI 每次执行前对比 SKILL.md「配置版本机制」节声明的当前版本,不一致时按 SKILL.md 的迁移规则处理(先备份本文件为带时间戳 .bak,再迁移,最后对话告知用户)
|
|
14
14
|
FORMATS: [md, txt, html, content-png] # 落盘哪些格式(数组,可删减/增,如 [md, html] / [md, txt, html](不截图);content-png = 整页内容区截图(头部标题卡片 + 本周概览卡片与本周任务进度/下周计划/风险阻塞点分节卡片整体截出,头部卡片必须带上),删除该项即不截图;不影响对话中的 md 正文输出)
|
|
15
15
|
DIR: auto # 落盘根目录:auto = 按当前系统自动选 DIR_MAC / DIR_WIN(也可直接写死某个绝对路径)
|
|
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
|
+
THEME: tech # html 页面主题:tech 深蓝科技(默认)/ biz 浅色商务 / mono 极简黑白 / warm 温暖渐变;生成时写 <html data-theme="THEME值"> 定默认,页面右下角换肤坞四色点随点随换(浏览器本地记忆,?shot 截图模式自动隐藏,打印隐藏)
|
|
19
20
|
TEMPLATE: default # 报告模板:default = 内置四段式(本周结论 + 本周任务进度/下周计划/风险阻塞点);custom = 使用下方「📝 自定义模板」节;口头临时指定模板仅当次生效
|
|
20
21
|
ROLE: 全栈开发工程师(企业内技术开发) # 用户默认职业角色与主要工作内容(两者并存:职业名 + 括号内工作内容,生成内容/术语/量化指标/热力图/柱图/风险话术全部按此画像走);用户随口描述职业时(如「我搞装修的,天天跑工地」)→ AI 提炼为规范表述(装修项目经理(负责工地现场管理、施工进度与质量巡检))更新此处;说「以 XX 的身份写」→ 当次临时换角色不改配置;说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 永久更新此处
|
|
21
22
|
WEEK_END: friday # 周结束日(当周最后一天):friday = 每周五(默认);可改 sunday = 每周日、saturday 等;周范围、落盘子目录名均按该天日期
|
|
22
23
|
CONFIRM: never # 落盘前确认:never = 直接生成落盘不确认(默认);text = 纯文字整理模式先出效果确认后再落盘;always = 任何方式生成都先确认;临时说「先看看效果」当次先确认、说「不用确认」当次跳过
|
|
23
24
|
```
|
|
24
25
|
|
|
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
|
+
> 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集数据、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这周按周日收尾/这周算到周日」→ 当次 WEEK_END=sunday(当次周范围与目录名跟随);说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。说「页面用浅色商务主题/浅色主题」→ 当次 THEME=biz;说「以后默认用暖色主题」→ 永久改 THEME=warm。
|
|
26
27
|
|
|
27
28
|
## 📝 自定义模板(TEMPLATE: custom 时启用,用户可手改,适配各类岗位)
|
|
28
29
|
|