推进本地优先迁移与资源闭环
- 补齐共享只读页面 AI 浏览器 smoke,并回填当前优先级 checklist 的 P4/P5/P6 证据。
- 为 OnlyOffice 资源增加 /office/{documentId}/{assetId} 对象壳,固定 resource identity 与侧边栏打开路径。
- 扩展 Convex 导出脚本,支持 dry-run、manifest、冲突报告、索引刷新与 rollback,并补充 smoke。
- 补充资源 AI 工具合同与 Convex 导出 Web 入口设计。
This commit is contained in:
@@ -1764,6 +1764,11 @@ const SIDEBAR_TREE_JS: &str = r##"
|
||||
|
||||
function fileObjectIdentity(item) {
|
||||
var meta = item && item.resourceMeta && typeof item.resourceMeta === 'object' ? item.resourceMeta : {};
|
||||
// Phase A1: workspacePath 优先于旧猜测逻辑
|
||||
var wp = meta.workspacePath;
|
||||
if (wp && typeof wp === 'object' && wp.objectIdentity && typeof wp.objectIdentity === 'object') {
|
||||
return wp.objectIdentity;
|
||||
}
|
||||
if (meta.objectIdentity && typeof meta.objectIdentity === 'object') return meta.objectIdentity;
|
||||
var rowKind = String(item && item.rowKind || '');
|
||||
var documentId = fileDocumentId(item) || null;
|
||||
@@ -1997,6 +2002,9 @@ const SIDEBAR_TREE_JS: &str = r##"
|
||||
if (input.documentId) params.set('documentId', input.documentId);
|
||||
if (input.userId) params.set('userId', input.userId);
|
||||
params.set('mode', input.mode || 'edit');
|
||||
if (input.documentId && input.assetId) {
|
||||
return '/office/' + encodeURIComponent(input.documentId) + '/' + encodeURIComponent(input.assetId) + '?' + params.toString();
|
||||
}
|
||||
return '/onlyoffice?' + params.toString();
|
||||
}
|
||||
|
||||
@@ -8694,6 +8702,15 @@ mod tests {
|
||||
assert!(SIDEBAR_TREE_JS.contains("'.gitignore'"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidebar_tree_runtime_opens_office_assets_through_resource_shell() {
|
||||
assert!(SIDEBAR_TREE_JS.contains("function buildOnlyOfficeOpenPath"));
|
||||
assert!(SIDEBAR_TREE_JS.contains(
|
||||
"return '/office/' + encodeURIComponent(input.documentId) + '/' + encodeURIComponent(input.assetId)"
|
||||
));
|
||||
assert!(SIDEBAR_TREE_JS.contains("return '/onlyoffice?' + params.toString();"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sidebar_tree_runtime_opens_pdf_and_code_assets_with_builtin_tools() {
|
||||
assert!(SIDEBAR_TREE_JS.contains("function openPdfEditorAttachment"));
|
||||
|
||||
Reference in New Issue
Block a user