fix(freedoc): persist uploaded file metadata and text body server-side

上传文档跨端不可访问修复(ISSUE-20260927-upload-doc-cross-device):
- 迁移 00076:freeform_documents 增加 source_filename/mime/size_bytes/asset_id
- freedoc:Create/Get/List 读写源文件元数据,负值拒绝
- 前端:注册前全部附件先登记 CAS 并预读文本正文;文本正文嵌入注册
  markdown;跨端恢复 sourceType/fileMeta 路由回文件预览器
- 大小显示 formatFileSize(<512B 不再显示 0 KB)
- E2E 新增 FS-UPLOAD-02 跨浏览器上下文可访问性用例

回归:go vet/arch-check/go test -short(隔离 PG)+ web npm test/build 全绿;
存量无元数据旧文档不可恢复(重新上传即可)。
This commit is contained in:
weichen
2026-09-27 07:45:15 +00:00
parent a0e40919a7
commit 88e33282db
19 changed files with 676 additions and 86 deletions
@@ -0,0 +1,18 @@
-- +goose Up
-- 上传附件注册 freeform 文档时持久化源文件元数据(原仅存于浏览器 localStorage/IndexedDB,
-- 换设备/清存储/共享给其他成员后无法恢复文件预览,正文退化为注册占位模板)。
-- source_asset_id 软关联 CAS 项目资产(storage_blobs/file_references,见 internal/storage/cas.go),
-- 不加 FK:资产去重/引用计数生命周期独立于文档,删资产不级联删文档。
ALTER TABLE freeform_documents
ADD COLUMN IF NOT EXISTS source_filename TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS source_mime_type TEXT NOT NULL DEFAULT '',
ADD COLUMN IF NOT EXISTS source_size_bytes BIGINT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS source_asset_id BIGINT;
-- +goose Down
ALTER TABLE freeform_documents
DROP COLUMN IF EXISTS source_asset_id,
DROP COLUMN IF EXISTS source_size_bytes,
DROP COLUMN IF EXISTS source_mime_type,
DROP COLUMN IF EXISTS source_filename;