Archust Docs

Media Library

Quản lý ảnh, upload, bản quyền và chèn vào bài viết.

Media Library

Media Library quản lý ảnh của tenant qua Supabase Storage. Ảnh được dùng trong editor Blogs và Chat.

Thư viện

/dashboard/media — grid, filter, pagination

Upload

Tạo session → PUT file → register

Bản quyền

Confirm rights trước khi approve/publish

Bạn tìm thấy gì ở đâu

TrangĐường dẫnMô tả
Media/dashboard/mediaGrid ảnh, filter, phân trang, xem chi tiết, xóa

Upload ảnh

Tạo session: chọn file (check MIME whitelist + max size + magic bytes) → createUploadSession trả uploadUrl.
Tải lên: PUT file tới signed URL.
Register: gọi registerUploaded để hệ thống ghi nhận file.
Sử dụng: trong Blogs editor bấm MediaLibraryDialog → chọn ảnh → chèn vào bài bằng signed URL TTL 1h.
// Luồng tenant không cần code — mô tả để hiểu
// 1. createUploadSession({ filename, mimeType, byteSize })
// 2. PUT file to uploadUrl
// 3. registerUploaded({ mediaId })

Đường dẫn Storage luôn là {org_id}/media/{media_id}/{filename} — không expose private path. Mọi truy cập đều qua signed URL TTL 1h, tự regenerate khi hết hạn.

Bản quyền ảnh (Media Rights)

  • Trước khi Approve draft, hệ thống kiểm tra ảnh trong bài có rights hợp lệ không qua rightsForDraft
  • Nếu thiếu, UI chặn nút Approve và hiện banner — bạn cần confirmRightsForDraft
  • Đây là gate quan trọng để tránh publish ảnh không có quyền

Quản lý

Hành độngMô tả
list / listPaginatedXem danh sách, có filter và pagination
updateMetadataSửa tiêu đề/mô tả ảnh
attachToDraftGắn ảnh vào draft
deleteXóa ảnh
rightsForDraft / confirmRightsForDraftKiểm tra và xác nhận bản quyền

Tất cả đều scope theo org_id — tenant chỉ thấy ảnh của mình.

Trong Chat & Blogs

  • Chat: ảnh sinh bởi AI lưu ở chat_image_assets, có thể regenerate hoặc remove khỏi draft
  • Blogs: ảnh trong draft có thể là upload thủ công hoặc AI sinh — đều phải qua media rights check

Lưu ý

  • Signed URL hết hạn sau 1h — hệ thống tự regenerate khi bạn mở lại bài (stale-image recovery)
  • Xóa ảnh trong Media không xóa ảnh đã publish trên website — chỉ xóa khỏi thư viện
  • Bucket tenant-media là private, không public

On this page