cardbuddy 0.19.3 → 0.21.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.
- package/README.md +8 -8
- package/dist/cli.js +21 -8
- package/dist/init.js +3 -3
- package/dist/preview-editor/assets/codeBridgeHeartbeat.worker-Zb_A5RUd.js +1 -0
- package/dist/preview-editor/assets/index-C8VLzU18.css +1 -0
- package/dist/preview-editor/assets/index-CpDojF__.js +383 -0
- package/dist/preview-editor/index.html +2 -2
- package/dist/skills-upgrade.js +64 -25
- package/dist/standalone.js +49 -0
- package/dist/vendored/card-editor/components/MultiColumn.vue +19 -10
- package/dist/vendored/card-editor/runtime/card-runtime.js +1 -1
- package/dist/vendored/mcp/client.mjs +22 -3
- package/dist/vendored/server/core/ai-chat.js +92 -12
- package/dist/vendored/server/core/cardExport.js +831 -0
- package/dist/vendored/server/core/cardHistoryRemote.js +203 -0
- package/dist/vendored/server/core/cardImportMeta.js +6 -1
- package/dist/vendored/server/core/cardPublishVersions.js +91 -0
- package/dist/vendored/server/core/cardSave.js +143 -6
- package/dist/vendored/server/core/cardSync.js +467 -95
- package/dist/vendored/server/core/codeBridge.js +4 -2
- package/dist/vendored/server/core/index.js +16 -0
- package/dist/vendored/skills/finmall-card-sync/SKILL.md +46 -0
- package/dist/vendored/skills/finmall-card-sync/scripts/api_batch_sync.mjs +657 -15
- package/dist/vendored/skills/finmall-session-navigator/scripts/finmall_login.mjs +79 -8
- package/dist/vendored/skills/finmall-session-navigator/scripts/session-manager.mjs +25 -1
- package/dist/vendored/skills/mbank-design-gen/tools/screenshot.mjs +10 -1
- package/package.json +1 -1
- package/dist/preview-editor/assets/index-C_uqjKqI.css +0 -1
- package/dist/preview-editor/assets/index-DRzBK4qj.js +0 -347
|
@@ -13,8 +13,11 @@
|
|
|
13
13
|
import { createSyncMiddleware, createPreviewMiddleware, createLoginCredentialsMiddleware } from './cardSync.js'
|
|
14
14
|
import { createPublishMiddleware } from './cardPublish.js'
|
|
15
15
|
import { createCardVersionMiddleware } from './cardVersion.js'
|
|
16
|
+
import { createCardHistoryMiddleware } from './cardHistoryRemote.js'
|
|
17
|
+
import { createCardPublishVersionsMiddleware } from './cardPublishVersions.js'
|
|
16
18
|
import { createSliceUploadMiddleware } from './sliceUpload.js'
|
|
17
19
|
import { createCardFilesMiddleware, refreshCardList } from './cardFiles.js'
|
|
20
|
+
import { createExportMiddleware } from './cardExport.js'
|
|
18
21
|
import { createSaveMiddleware } from './cardSave.js'
|
|
19
22
|
import { createImportMetaMiddleware } from './cardImportMeta.js'
|
|
20
23
|
import { createHistoryMiddleware } from './cardHistory.js'
|
|
@@ -46,10 +49,13 @@ export {
|
|
|
46
49
|
createLoginCredentialsMiddleware,
|
|
47
50
|
createPublishMiddleware,
|
|
48
51
|
createCardVersionMiddleware,
|
|
52
|
+
createCardHistoryMiddleware,
|
|
53
|
+
createCardPublishVersionsMiddleware,
|
|
49
54
|
createSliceUploadMiddleware,
|
|
50
55
|
createCardFilesMiddleware,
|
|
51
56
|
createSaveMiddleware,
|
|
52
57
|
createImportMetaMiddleware,
|
|
58
|
+
createExportMiddleware,
|
|
53
59
|
createHistoryMiddleware,
|
|
54
60
|
createValidateMiddleware,
|
|
55
61
|
createRenderStatusMiddleware,
|
|
@@ -98,12 +104,22 @@ export function mountCoreMiddlewares(app, { root, viteServer = null, upstream =
|
|
|
98
104
|
// 卡片来源 tab 的「远端最新版本」查询(只读):GET /__card-version/:id 取 IDC10004 的 maxVersion,
|
|
99
105
|
// 复用 finmall-card-sync 的 fetchCardLatestVersion,与发布/同步/保存共用同一后台 FinMall 会话。
|
|
100
106
|
app.use(createCardVersionMiddleware({ root }))
|
|
107
|
+
// 「卡片历史记录」tab 的远端版本时间线(只读):GET /__card-history/:cardCode 取 IDC10013 的
|
|
108
|
+
// schemaValueList(新→旧,含预览图 / 变更标签),复用 finmall-card-sync 的 fetchCardHistory。
|
|
109
|
+
app.use(createCardHistoryMiddleware({ root }))
|
|
110
|
+
// 「导入信息」tab「发布版本记录」弹框的数据源(只读):GET /__card-publish-versions/:cardCode
|
|
111
|
+
// 取 IDC10004 的 versionList(新→旧,版本号 / 平台 / 发布状态 / 发布时间),滚动到底懒加载下一页。
|
|
112
|
+
app.use(createCardPublishVersionsMiddleware({ root }))
|
|
101
113
|
// 切图上传(顶栏「远端 → 切图上传」):把当前卡引用的 src/slices 切图传到 FinMall 图片库,
|
|
102
114
|
// 写 src/slices/manifest.json 映射并把卡片里的 /slices/ 引用改写为 @filestore/ 线上地址。
|
|
103
115
|
// 仅在用户点击时触发,没有任何自动上传路径。
|
|
104
116
|
app.use(createSliceUploadMiddleware({ root }))
|
|
105
117
|
app.use(createCardFilesMiddleware({ root, notify }))
|
|
106
118
|
app.use(createSaveMiddleware({ root }))
|
|
119
|
+
// 卡片导出(编辑器「网格预览 → 勾选 → 导出」):产物契约见 server/core/cardExport.js 头注释
|
|
120
|
+
// 与 docs/卡片导出产物逆向分析与导出功能.md;previewSchema 经 viteServer.ssrLoadModule 复用
|
|
121
|
+
// 编辑器同源 buildPreview,故本中间件需要 viteServer(无则退化为 schema 原样序列化)。
|
|
122
|
+
app.use(createExportMiddleware({ root, viteServer, upstream }))
|
|
107
123
|
app.use(createHistoryMiddleware({ root }))
|
|
108
124
|
app.use(createValidateMiddleware({ root }))
|
|
109
125
|
app.use(createRenderStatusMiddleware({ root, viteServer }))
|
|
@@ -212,6 +212,52 @@ headers: token / iCIFID / eCIFID = localStorage._sessionId(只在页面上下
|
|
|
212
212
|
| CLI 跑完进程不退出 | 已修:CLI 末尾显式 `process.exit`(后台 Chrome 的 CDP 连接会挂住事件循环);Chrome 进程本身按约定常驻不关 |
|
|
213
213
|
| 想撤销改写 | `git checkout -- src/cards/<id>/`;清单里的地址仍有效,重跑一次即可再改写回来 |
|
|
214
214
|
|
|
215
|
+
## 卡片预览图上传(推送成功后自动,`IDC10014.do`)
|
|
216
|
+
|
|
217
|
+
编辑器顶栏「远端 → 推送」走 `POST /__save`(`saveCardToRemote`)。**推送成功后**,服务端会用无头
|
|
218
|
+
Chrome 渲染当前卡片(`server/core/screenshot.js → generateCardCover`:透明底、与卡片实际渲染尺寸
|
|
219
|
+
1:1 的 PNG),再把这张图作为**远端列表预览图**上传(`uploadCardPreview` → `IDC10014.do`),
|
|
220
|
+
使 FinMall 卡片列表的缩略图与刚推上去的内容一致。
|
|
221
|
+
|
|
222
|
+
| 项 | 值 |
|
|
223
|
+
|---|---|
|
|
224
|
+
| 触发点 | 仅 `/__save` 成功后,一个请求内完成(前端 `saveToRemote` 已带 2.5s 自保存抑制) |
|
|
225
|
+
| 总预算 | 45s(`CARDBUDDY_PUSH_PREVIEW_TIMEOUT_MS`);到点放弃等待,响应带 `preview.error` |
|
|
226
|
+
| 开关 | `CARDBUDDY_PUSH_PREVIEW=0` 关闭(远端图片库维护时避免每条推送多等一次失败) |
|
|
227
|
+
| 失败语义 | **best-effort**:日志 + 响应 `preview:{ok:false,error,message}`,推送本身的成功结论不变 |
|
|
228
|
+
|
|
229
|
+
### 接口契约(`IDC10014.do`,取自线上编辑器抓包)
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
POST {baseUrl}/ubomp-web/IDC10014.do # 注意:sassAppId/Workspace 走表单,不是查询串
|
|
233
|
+
Content-Type: multipart/form-data
|
|
234
|
+
cardId = 10000363 # 数字型 cardId(= schema.pageId)
|
|
235
|
+
file = <二进制 PNG> # filename = <cardId>.png
|
|
236
|
+
sassAppId = <FINMALL_APP_ID>
|
|
237
|
+
sassWorkspaceId = <FINMALL_WORKSPACE_ID>
|
|
238
|
+
headers: token = localStorage._sessionId(只在页面上下文内读取,不出页面)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
与切图上传(`CC0000.do`)的四点差异,改动时别混用:①字段是 `cardId` + `file`(**没有** `fileName`
|
|
242
|
+
纯文本字段);②`sassAppId/Workspace` 在表单里;③filename 固定 `<cardId>.png`(抓包里该 part 的
|
|
243
|
+
Content-Type 是 `application/octet-stream`,照抄);④鉴权头只有 `token`。
|
|
244
|
+
|
|
245
|
+
响应判定按 FinMall 通用信封做**宽松**处理(`parsePreviewUploadResponse`):空响应体视为成功;
|
|
246
|
+
非 JSON 非空(网关 HTML 错误页)报错;`header.errorCode` 与 `body.errorCode` **逐个**检查
|
|
247
|
+
(不能用 `a || b` 短路——`header.errorCode='0'` 会把 body 的业务错误盖掉);成功时尽力取
|
|
248
|
+
`body.picUrl | previewUrl | imageUrl | filePath | url`,取不到不影响「上传成功」。命中
|
|
249
|
+
`BLEC0006` 等会话失效特征时自动清 session 重登并重试一次(与同步 / 切图同一套自愈)。
|
|
250
|
+
|
|
251
|
+
### 两条刻意的「不做」
|
|
252
|
+
|
|
253
|
+
- **不写本地预览图**:不覆盖 `src/cards/<id>/<id>.png`。截图+上传耗时可能超过前端 2.5s 自保存
|
|
254
|
+
抑制窗口,写盘会触发 watcher 的 `cards-changed`,误弹「卡片已在编辑器外被修改」;本地封面仍由
|
|
255
|
+
顶栏「预览图」按钮(`POST /__card-image/<id>`)显式生成——单一触发点。
|
|
256
|
+
- **不参与同步 / 发布**:拉取方向由远端 `picUrl` 覆盖本地封面;「卡片发布」只上线版本,不改预览图。
|
|
257
|
+
|
|
258
|
+
> 截图渲染的是**磁盘态** schema,故前端 `saveToRemote` 在有未保存编辑(`historyDirty`)时会先
|
|
259
|
+
> 落盘再推送(与「切图上传」同一处置口径),否则会截到上一版布局。
|
|
260
|
+
|
|
215
261
|
## 变量与数据规则
|
|
216
262
|
|
|
217
263
|
编辑器变量面板是 `schema.dictionary.inputParams[]` 的 UI 呈现:
|