Skip to content

Commit cac7416

Browse files
committed
docs(diagram): 架构图重生成,补 B1–B4 能力(协议出口 / 调度 / 后台任务 / 表数量)
图停在 f6045c8(余额端点那次),之后 B1–B4 全部没进图,属实质漂移。 按实际代码重写 diagrams/architecture.json 后用 archify deliver 重出 HTML: - 协议出口:`OpenAI 协议层 /v1/chat/completions` → `OpenAI 协议出口 chat/completions + responses`(补 B2.1 Responses 出口) - 执行引擎:`调度器 + 冷却状态机` → `选号 + 冷却状态机 + 粘性/续写` (补 B1.4 截断续写、B1.5 会话粘性) - 后台任务:`签到 / 探测 / 刷新` → `探测 / 签到 / 成长 / 清理` (补成长中心与明细清理;活跃上报在视图说明里点名) - CodeBuddy Provider 补「成长」;管理台副标 `凭证 / Key / 仪表盘` → `凭证 / 统计 / 任务与配置`(补 B3 统计与 B4 合并页) - SQLite 副标补「配置」,tag `WAL` → `WAL · 8 表`(B3.2 起 8 张表) - 后台任务引导视图说明补 6 类任务与运行态去向 - 复用原 3 张卡片(曾试 4 张,1440×900 视口因卡片换行溢出 12px, 回退为 3 张并改写条目),卡片内容改为当前事实:Responses / balance / healthz 出口、pin→粘性→到期积分→三态健康度、模型级冷却隔离、 6 任务汇总、8 表、13 项配置热更、渠道绑定 / IP 白名单 校验(archify 2.17):validate 9/9 checks、composition pass(0 error 0 warning); deliver ok(spec sha256 f0…、artifact 814KB);visual-check 1440×900 / 1600×1000 / 1920×1080 / 2048×1320 四个视口 scrollHeight == innerHeight,无溢出。 浅色与深色截图人工过目,无孤字换行、无重叠。 后端门槛:ruff + pytest 100%(1329 passed)。
1 parent 0611ea8 commit cac7416

7 files changed

Lines changed: 97 additions & 97 deletions

‎diagrams/architecture.json‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"cb",
4545
"trae"
4646
],
47-
"note": "签到、额度探测与 token 预刷新经 provider 客户端触达上游。"
47+
"note": "签到、额度探测、token 预刷新、成长中心、活跃上报与明细清理经 provider 客户端触达上游,运行态汇总到「任务与配置」页。"
4848
}
4949
]
5050
},
@@ -68,7 +68,7 @@
6868
"id": "admin-ui",
6969
"type": "frontend",
7070
"label": "React 管理台",
71-
"sublabel": "凭证 / Key / 仪表盘",
71+
"sublabel": "凭证 / 统计 / 任务与配置",
7272
"pos": [
7373
260,
7474
70
@@ -109,8 +109,8 @@
109109
{
110110
"id": "openai",
111111
"type": "backend",
112-
"label": "OpenAI 协议层",
113-
"sublabel": "/v1/chat/completions",
112+
"label": "OpenAI 协议出口",
113+
"sublabel": "chat/completions + responses",
114114
"pos": [
115115
260,
116116
280
@@ -125,7 +125,7 @@
125125
"id": "engine",
126126
"type": "backend",
127127
"label": "执行引擎",
128-
"sublabel": "调度器 + 冷却状态机",
128+
"sublabel": "选号 + 冷却状态机 + 粘性/续写",
129129
"pos": [
130130
500,
131131
280
@@ -140,7 +140,7 @@
140140
"id": "cb",
141141
"type": "backend",
142142
"label": "CodeBuddy Provider",
143-
"sublabel": "OAuth / 额度 / 签到",
143+
"sublabel": "OAuth / 额度 / 签到 / 成长",
144144
"pos": [
145145
760,
146146
150
@@ -154,7 +154,7 @@
154154
"id": "bg",
155155
"type": "backend",
156156
"label": "后台任务",
157-
"sublabel": "签到 / 探测 / 刷新",
157+
"sublabel": "探测 / 签到 / 成长 / 清理",
158158
"pos": [
159159
760,
160160
280
@@ -211,7 +211,7 @@
211211
"id": "db",
212212
"type": "database",
213213
"label": "SQLite",
214-
"sublabel": "加密凭证 + 脱敏统计",
214+
"sublabel": "加密凭证 + 统计 + 配置",
215215
"pos": [
216216
500,
217217
520
@@ -220,7 +220,7 @@
220220
140,
221221
64
222222
],
223-
"tag": "WAL"
223+
"tag": "WAL · 8 表"
224224
}
225225
],
226226
"boundaries": [
@@ -394,27 +394,27 @@
394394
"dot": "cyan",
395395
"title": "对外契约",
396396
"items": [
397-
"OpenAI 兼容:/v1/chat/completions + /v1/models",
398-
"扁平模型名 + model@provider 后缀强制指定上游",
399-
"非流式请求由服务端聚合 SSE 后返回"
397+
"/v1/chat/completions、/v1/responses",
398+
"/v1/models + 黑名单;/v1/user/balance",
399+
"/healthz 池健康、model@provider 选上游"
400400
]
401401
},
402402
{
403403
"dot": "emerald",
404404
"title": "调度与弹性",
405405
"items": [
406-
"三态健康度:known / unknown / exhausted",
407-
"三级冷却:权益耗尽 12h、限流 60s、连续错误 10m",
408-
"单请求最多轮换 3 个凭证,流内错误注入 SSE"
406+
"选号:pin → 粘性 → 到期积分 → 三态健康度",
407+
"模型级冷却隔离到单个模型,不牵连整条凭证",
408+
"6 个后台任务汇总进「任务与配置」页"
409409
]
410410
},
411411
{
412412
"dot": "rose",
413413
"title": "数据与安全",
414414
"items": [
415-
"SQLite WAL:凭证加密列、API Key 摘要、脱敏统计",
416-
"统计不存提示词 / Token,明细保留 90 天"
415+
"SQLite WAL 8 表;13 项配置热更(DB 覆盖 .env)",
416+
"API Key 摘要 + 渠道绑定 / IP 白名单;明细留 90 天"
417417
]
418418
}
419419
]
420-
}
420+
}

‎diagrams/coding2api-architecture.html‎

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.
-876 Bytes
Loading
252 Bytes
Loading
-1.47 KB
Loading
-1.09 KB
Loading

‎diagrams/coding2api-architecture.visual-check.json‎

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"visualReview": "pending",
88
"artifact": {
99
"path": "/Users/robbs/Develpment/PartTimeJob/coding2api/diagrams/coding2api-architecture.html",
10-
"sha256": "127de55ec7b57c1316993e073f45dc543f05a04eb76765af82ba14bac2783d09",
11-
"bytes": 813772
10+
"sha256": "7c11454f1f6ea6a0ecbb6cc56a4c9ab45980a2dbad91ffa22e324c89623b05b9",
11+
"bytes": 814094
1212
},
1313
"state": {
1414
"detail": "read",
@@ -33,11 +33,11 @@
3333
"overflowX": false,
3434
"overflowY": false,
3535
"ok": true,
36-
"readerWidth": 960,
37-
"diagramWidth": 930,
36+
"readerWidth": 987,
37+
"diagramWidth": 957,
3838
"viewBoxWidth": 1120,
39-
"minimumProjectedNodeTextPx": 7.4732142857142865,
40-
"minimumProjectedNodeText": "sk- 摘要校验",
39+
"minimumProjectedNodeTextPx": 6.408482142857142,
40+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
4141
"minimumProjectedNodeTextDetail": "context",
4242
"minimumRequiredNodeTextPx": 6,
4343
"readabilityOk": true,
@@ -64,11 +64,11 @@
6464
"overflowX": false,
6565
"overflowY": false,
6666
"ok": true,
67-
"readerWidth": 980,
68-
"diagramWidth": 950,
67+
"readerWidth": 1019,
68+
"diagramWidth": 989,
6969
"viewBoxWidth": 1120,
70-
"minimumProjectedNodeTextPx": 7.633928571428571,
71-
"minimumProjectedNodeText": "sk- 摘要校验",
70+
"minimumProjectedNodeTextPx": 6.622767857142857,
71+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
7272
"minimumProjectedNodeTextDetail": "context",
7373
"minimumRequiredNodeTextPx": 6,
7474
"readabilityOk": true,
@@ -98,8 +98,8 @@
9898
"readerWidth": 1178,
9999
"diagramWidth": 1148,
100100
"viewBoxWidth": 1120,
101-
"minimumProjectedNodeTextPx": 9,
102-
"minimumProjectedNodeText": "sk- 摘要校验",
101+
"minimumProjectedNodeTextPx": 7.5,
102+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
103103
"minimumProjectedNodeTextDetail": "context",
104104
"minimumRequiredNodeTextPx": 6,
105105
"readabilityOk": true,
@@ -129,8 +129,8 @@
129129
"readerWidth": 1545,
130130
"diagramWidth": 1495,
131131
"viewBoxWidth": 1120,
132-
"minimumProjectedNodeTextPx": 9,
133-
"minimumProjectedNodeText": "sk- 摘要校验",
132+
"minimumProjectedNodeTextPx": 7.5,
133+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
134134
"minimumProjectedNodeTextDetail": "context",
135135
"minimumRequiredNodeTextPx": 6,
136136
"readabilityOk": true,
@@ -163,11 +163,11 @@
163163
"overflowX": false,
164164
"overflowY": false,
165165
"ok": true,
166-
"readerWidth": 960,
167-
"diagramWidth": 930,
166+
"readerWidth": 987,
167+
"diagramWidth": 957,
168168
"viewBoxWidth": 1120,
169-
"minimumProjectedNodeTextPx": 7.4732142857142865,
170-
"minimumProjectedNodeText": "sk- 摘要校验",
169+
"minimumProjectedNodeTextPx": 6.408482142857142,
170+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
171171
"minimumProjectedNodeTextDetail": "context",
172172
"minimumRequiredNodeTextPx": 6,
173173
"readabilityOk": true,
@@ -194,11 +194,11 @@
194194
"overflowX": false,
195195
"overflowY": false,
196196
"ok": true,
197-
"readerWidth": 980,
198-
"diagramWidth": 950,
197+
"readerWidth": 1019,
198+
"diagramWidth": 989,
199199
"viewBoxWidth": 1120,
200-
"minimumProjectedNodeTextPx": 7.633928571428571,
201-
"minimumProjectedNodeText": "sk- 摘要校验",
200+
"minimumProjectedNodeTextPx": 6.622767857142857,
201+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
202202
"minimumProjectedNodeTextDetail": "context",
203203
"minimumRequiredNodeTextPx": 6,
204204
"readabilityOk": true,
@@ -228,8 +228,8 @@
228228
"readerWidth": 1178,
229229
"diagramWidth": 1148,
230230
"viewBoxWidth": 1120,
231-
"minimumProjectedNodeTextPx": 9,
232-
"minimumProjectedNodeText": "sk- 摘要校验",
231+
"minimumProjectedNodeTextPx": 7.5,
232+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
233233
"minimumProjectedNodeTextDetail": "context",
234234
"minimumRequiredNodeTextPx": 6,
235235
"readabilityOk": true,
@@ -259,8 +259,8 @@
259259
"readerWidth": 1545,
260260
"diagramWidth": 1495,
261261
"viewBoxWidth": 1120,
262-
"minimumProjectedNodeTextPx": 9,
263-
"minimumProjectedNodeText": "sk- 摘要校验",
262+
"minimumProjectedNodeTextPx": 7.5,
263+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
264264
"minimumProjectedNodeTextDetail": "context",
265265
"minimumRequiredNodeTextPx": 6,
266266
"readabilityOk": true,
@@ -292,11 +292,11 @@
292292
"overflowX": false,
293293
"overflowY": false,
294294
"ok": true,
295-
"readerWidth": 960,
296-
"diagramWidth": 930,
295+
"readerWidth": 987,
296+
"diagramWidth": 957,
297297
"viewBoxWidth": 1120,
298-
"minimumProjectedNodeTextPx": 7.4732142857142865,
299-
"minimumProjectedNodeText": "sk- 摘要校验",
298+
"minimumProjectedNodeTextPx": 6.408482142857142,
299+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
300300
"minimumProjectedNodeTextDetail": "context",
301301
"minimumRequiredNodeTextPx": 6,
302302
"readabilityOk": true,
@@ -323,11 +323,11 @@
323323
"overflowX": false,
324324
"overflowY": false,
325325
"ok": true,
326-
"readerWidth": 980,
327-
"diagramWidth": 950,
326+
"readerWidth": 1019,
327+
"diagramWidth": 989,
328328
"viewBoxWidth": 1120,
329-
"minimumProjectedNodeTextPx": 7.633928571428571,
330-
"minimumProjectedNodeText": "sk- 摘要校验",
329+
"minimumProjectedNodeTextPx": 6.622767857142857,
330+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
331331
"minimumProjectedNodeTextDetail": "context",
332332
"minimumRequiredNodeTextPx": 6,
333333
"readabilityOk": true,
@@ -357,8 +357,8 @@
357357
"readerWidth": 1178,
358358
"diagramWidth": 1148,
359359
"viewBoxWidth": 1120,
360-
"minimumProjectedNodeTextPx": 9,
361-
"minimumProjectedNodeText": "sk- 摘要校验",
360+
"minimumProjectedNodeTextPx": 7.5,
361+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
362362
"minimumProjectedNodeTextDetail": "context",
363363
"minimumRequiredNodeTextPx": 6,
364364
"readabilityOk": true,
@@ -388,8 +388,8 @@
388388
"readerWidth": 1545,
389389
"diagramWidth": 1495,
390390
"viewBoxWidth": 1120,
391-
"minimumProjectedNodeTextPx": 9,
392-
"minimumProjectedNodeText": "sk- 摘要校验",
391+
"minimumProjectedNodeTextPx": 7.5,
392+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
393393
"minimumProjectedNodeTextDetail": "context",
394394
"minimumRequiredNodeTextPx": 6,
395395
"readabilityOk": true,
@@ -421,11 +421,11 @@
421421
"overflowX": false,
422422
"overflowY": false,
423423
"ok": true,
424-
"readerWidth": 960,
425-
"diagramWidth": 930,
424+
"readerWidth": 987,
425+
"diagramWidth": 957,
426426
"viewBoxWidth": 1120,
427-
"minimumProjectedNodeTextPx": 7.4732142857142865,
428-
"minimumProjectedNodeText": "sk- 摘要校验",
427+
"minimumProjectedNodeTextPx": 6.408482142857142,
428+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
429429
"minimumProjectedNodeTextDetail": "context",
430430
"minimumRequiredNodeTextPx": 6,
431431
"readabilityOk": true,
@@ -453,11 +453,11 @@
453453
"overflowX": false,
454454
"overflowY": false,
455455
"ok": true,
456-
"readerWidth": 960,
457-
"diagramWidth": 930,
456+
"readerWidth": 987,
457+
"diagramWidth": 957,
458458
"viewBoxWidth": 1120,
459-
"minimumProjectedNodeTextPx": 7.4732142857142865,
460-
"minimumProjectedNodeText": "sk- 摘要校验",
459+
"minimumProjectedNodeTextPx": 6.408482142857142,
460+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
461461
"minimumProjectedNodeTextDetail": "context",
462462
"minimumRequiredNodeTextPx": 6,
463463
"readabilityOk": true,
@@ -488,8 +488,8 @@
488488
"readerWidth": 1545,
489489
"diagramWidth": 1495,
490490
"viewBoxWidth": 1120,
491-
"minimumProjectedNodeTextPx": 9,
492-
"minimumProjectedNodeText": "sk- 摘要校验",
491+
"minimumProjectedNodeTextPx": 7.5,
492+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
493493
"minimumProjectedNodeTextDetail": "context",
494494
"minimumRequiredNodeTextPx": 6,
495495
"readabilityOk": true,
@@ -520,8 +520,8 @@
520520
"readerWidth": 1545,
521521
"diagramWidth": 1495,
522522
"viewBoxWidth": 1120,
523-
"minimumProjectedNodeTextPx": 9,
524-
"minimumProjectedNodeText": "sk- 摘要校验",
523+
"minimumProjectedNodeTextPx": 7.5,
524+
"minimumProjectedNodeText": "选号 + 冷却状态机 + 粘性/续写",
525525
"minimumProjectedNodeTextDetail": "context",
526526
"minimumRequiredNodeTextPx": 6,
527527
"readabilityOk": true,

0 commit comments

Comments
 (0)