feat: 收口文档桥接与 OnlyOffice/Sidebar 回归
- 为 documents.save/meta/content、blocks.patch 与 sidebar.dataset.list 补齐 Rust 协议映射、共享契约与桥接执行器 - 对齐 BlockNote、Mindmap、OnlyOffice 的保存/路由元信息,并补真实浏览器回归脚本与 OnlyOffice 部署基线 - 忽略 Rust 本地构建产物与 Harness 调试状态文件,避免临时产物进入仓库历史
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { randomUUID } from "crypto";
|
||||
|
||||
export type MindmapRouteMeta = {
|
||||
requestId: string;
|
||||
traceId: string;
|
||||
workspaceId: string | null;
|
||||
documentId: string;
|
||||
pageId: string;
|
||||
mindmapId: string;
|
||||
attachmentId: string;
|
||||
ownerUserId: string;
|
||||
source: "convex";
|
||||
};
|
||||
|
||||
function readHeaderValue(headerList: Headers, ...candidates: string[]): string | null {
|
||||
for (const candidate of candidates) {
|
||||
const value = headerList.get(candidate);
|
||||
if (typeof value === "string" && value.trim()) {
|
||||
return value.trim();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function makeFallbackId(prefix: string): string {
|
||||
return `${prefix}_${randomUUID()}`;
|
||||
}
|
||||
|
||||
export function buildMindmapRouteMeta(
|
||||
request: Request,
|
||||
input: {
|
||||
workspaceId?: string | null;
|
||||
documentId: string;
|
||||
mindmapId: string;
|
||||
ownerUserId: string;
|
||||
},
|
||||
): MindmapRouteMeta {
|
||||
const requestId =
|
||||
readHeaderValue(request.headers, "x-request-id", "x-mnote-request-id") ??
|
||||
makeFallbackId("req");
|
||||
const traceId =
|
||||
readHeaderValue(request.headers, "x-trace-id", "x-mnote-trace-id", "x-request-id") ??
|
||||
makeFallbackId("trace");
|
||||
|
||||
return {
|
||||
requestId,
|
||||
traceId,
|
||||
workspaceId: input.workspaceId?.trim() || null,
|
||||
documentId: input.documentId,
|
||||
pageId: input.documentId,
|
||||
mindmapId: input.mindmapId,
|
||||
attachmentId: input.mindmapId,
|
||||
ownerUserId: input.ownerUserId,
|
||||
source: "convex",
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user