feat(mindspace): 公开页分享组件、workspace 路径与 Plaza 发布增强

- 新增 public share widget 与 workspace relative path 解析
- 增强 publications/chat-plaza 发布链路与缩略图 demo
- 补充 schema、cover 检查脚本与回归测试

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-07-05 23:14:41 +08:00
parent 69be1e5293
commit e2ad3bf62b
39 changed files with 2184 additions and 256 deletions
+14 -3
View File
@@ -7,6 +7,7 @@ import {
resolveUserWorkspaceRoot,
resolveZoneDir,
} from './user-space.mjs';
import { resolveAssetWorkspaceRelativePath } from './mindspace-workspace-path.mjs';
import { assetInternals } from './mindspace-assets.mjs';
import { runBasicFileScan } from './mindspace-scan.mjs';
import { buildWorkspaceStorageKey } from './workspace-storage.mjs';
@@ -193,12 +194,16 @@ export function createWorkspaceAssetSync({
const now = Date.now();
const visibility = category.category_code === 'public' ? 'public_candidate' : 'private';
const indexedWorkspacePath = resolveAssetWorkspaceRelativePath({
categoryCode: category.category_code,
originalFilename: file.filename,
});
await conn.query(
`INSERT INTO h5_assets
(id, user_id, space_id, category_id, asset_type, mime_type, original_filename,
display_name, current_version_id, size_bytes, checksum, risk_level, visibility,
display_name, workspace_relative_path, current_version_id, size_bytes, checksum, risk_level, visibility,
status, source_type, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'workspace', ?, ?)`,
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'workspace', ?, ?)`,
[
assetId,
userId,
@@ -208,6 +213,7 @@ export function createWorkspaceAssetSync({
detectedMimeType,
file.filename,
path.basename(file.filename, path.extname(file.filename)) || file.filename,
indexedWorkspacePath,
versionId,
buffer.length,
checksum,
@@ -308,10 +314,14 @@ export function createWorkspaceAssetSync({
);
const now = Date.now();
const indexedWorkspacePath = resolveAssetWorkspaceRelativePath({
categoryCode: category.category_code,
originalFilename: file.filename,
});
await conn.query(
`UPDATE h5_assets
SET current_version_id = ?, size_bytes = ?, checksum = ?, mime_type = ?,
asset_type = ?, risk_level = ?, status = ?, updated_at = ?
asset_type = ?, risk_level = ?, status = ?, workspace_relative_path = ?, updated_at = ?
WHERE id = ? AND user_id = ?`,
[
versionId,
@@ -321,6 +331,7 @@ export function createWorkspaceAssetSync({
assetInternals.assetTypeForMime(detectedMimeType),
scan.riskLevel,
assetStatus,
indexedWorkspacePath,
now,
existing.id,
userId,