Spaces:
Sleeping
Download docs/reference/DATA_INVENTORY.md from phucsd/Oloka-Video-Dev: direct link, hf CLI and curl.
- Browser
- Download file 21.2 kB
-
https://huggingface.co/spaces/phucsd/Oloka-Video-Dev/resolve/main/docs/reference/DATA_INVENTORY.md
- Command line
-
hf download hf://spaces/phucsd/Oloka-Video-Dev/docs/reference/DATA_INVENTORY.md
-
curl -L -o DATA_INVENTORY.md https://huggingface.co/spaces/phucsd/Oloka-Video-Dev/resolve/main/docs/reference/DATA_INVENTORY.md
Data Inventory
Nguyên tắc
Nguồn audit: AutoCode Video codex/hf-prod-sync tại 595ccdfaf45ff83473f2da8fd2c71d491828e5f5. Tài liệu mô tả entity và vị trí dữ liệu, không sao chép schema. Các vị trí dưới đây là SOURCE_VERIFIED và NOT_RUNTIME_VERIFIED.
Ma trận vị trí dữ liệu
| Entity / nhóm dữ liệu | Database | File JSON / project directory | /data |
Object storage | Env | Frontend local state | Bằng chứng |
|---|---|---|---|---|---|---|---|
| User | Bảng User | Không | DB nằm trong /data khi hosted |
Không | Danh sách admin bootstrap | User hiện tại trong runtime UI | scripts/db.js, auth.js, public/app.js |
| Session | Bảng Session, token và expiry | Không | DB hosted | Không | TTL/cache tuning | Cookie HttpOnly, không ở localStorage | scripts/db.js, auth.js, services/sessionLookupCache.js |
| Waitlist | User record ở trạng thái pending | Không | DB hosted | Không | Auth flags | Form tạm thời | auth.js, scripts/db.js, public/landing.js |
| Project canonical record | Bảng Project | meta.json, thư mục project |
/data/projects/<id> hoặc /data/workspace |
Có thể được nhìn qua HF Bucket mount; script legacy nhắm R2 | Storage root | Project list/filter/selection | scripts/db.js, routes/projects.js, services/projectService.js |
| Workspace | Project đặc biệt workspace hoặc workspace-<user> |
Cùng cấu trúc project | /data/workspace cho legacy/admin; user workspace dưới /data/projects |
HF Bucket path tương ứng nếu bật | PERSISTENT_STORAGE_DIR |
Active project | server.js, services/projectService.js |
| Job | Bảng Job | Các trường job* trong meta.json, forge.log, checkpoints |
Theo project | Không phải job durable riêng | Concurrency/provider flags | Trạng thái live, poll/SSE, progress UI | scripts/db.js, services/jobStore.js, services/jobRuntimeService.js |
| Composition | Không có bảng riêng | index.html, raw HTML checkpoint, compositions/**, hyperframes.json |
Theo project | Nằm cùng prefix project nếu mount được expose | HyperFrames version/path | Editor document, overrides, undo/redo | routes/composition.js, services/compositionDocumentService.js, services/rawHtmlCheckpoint.js |
| Asset dự án | Không có bảng riêng | assets/** và sidecar JSON |
Theo project | Theo prefix project trong mô hình HF; migration cũ nhắm R2 | Media tools | Asset selection/lock | services/promptAssetService.js, routes/assets.js, services/storage/projectObjectKeys.js |
| Shared asset | Không có bảng riêng | public/assets/library/**, public/assets/bgm/**, sidecar metadata |
Không mặc định; root có thể override | Không có implementation upload object store trong app | AUTOCODE_ASSET_LIBRARY_DIR |
Catalog, filter, selected assets | services/assetLibraryStore.js, services/assetCatalogService.js, routes/assets.js, routes/bgm.js |
| Asset analysis | Không có bảng riêng | Sidecar JSON cạnh asset; embedding/metadata trong JSON | Theo vị trí asset | Không | Provider config | Search index/filter ở browser | services/assetAnalysisService.js, services/assetSearch.js, services/mockAssetAnalysis.js |
| Prompt / LLM trace | ChatHistory table tồn tại nhưng không phải nguồn chính quan sát được | 01_prompt.json, 02_llm_script.json, meta.json, log/trace |
Theo project | Cùng project nếu mount | Provider secrets/model | AI trace modal, local cached profiles | scripts/db.js, services/forgePipelineService.js, public/app.js |
| TTS / transcript | Không | assets/narration.mp3, scene audio, transcript.json, 03_tts_alignment.json, audio metadata |
Theo project | Cùng project nếu mount | Omnivoice config | TTS/progress display | services/omnivoiceSceneTts.js, services/ttsMediaService.js, services/forgePipelineService.js |
| Caption | Không | Được inject vào composition; style/mode trong meta.json |
Theo project | Cùng project | Không | Caption mode/style preview | services/captionTemplates.js, services/captionSegmenter.js, public/app.js |
| BGM | Không | Shared audio + JSON; bản chọn được copy thành project asset | Shared root và project | Không có uploader object store riêng | Recognition config | BGM selection | routes/bgm.js, services/forgeLlmService.js |
| Render output hiện tại | Project/Job chỉ lưu cờ và URL/metadata | output.mp4 |
Theo project | HF Bucket signed path giả định cùng mount | HF Bucket credentials | Video source + cache version | services/projectService.js, services/hfBucketDelivery.js, services/videoDelivery.js |
| Render history | JSON trong Project studioSnapshot chỉ là projection; không có bảng render riêng |
meta.json.renders, renders/<render-id>/{output,index,log} |
Theo project | Signed URL có thể trỏ render-id | Không | Render history rail | services/projectService.js, services/forgeStatusPayload.js, public/app.js |
| Quality report | Job/meta giữ summary | quality-report.json, Codex brief, quality frames/logs |
Theo project | Cùng project nếu mount | QA feature flags/provider config | Report modal | routes/quality.js, services/videoQualityService.js, services/forgeQualityService.js |
| Setting / provider config | AppSetting JSON | Không | DB hosted | Không | Một số provider/deploy secret | localStorage chứa profile/config local; form runtime | scripts/db.js, services/sharedConfig.js, public/app.js |
| Social configuration | Nằm trong shared AppSetting JSON | Không | DB hosted | Không | Không phải đường chính | Form settings/localStorage | services/sharedConfig.js, routes/socialPublish.js, public/app.js |
| Activity event | ActivityEvent trong DB SQLite riêng | Không | activity.db, hoặc temp fallback |
Không | Fallback path | Admin dashboard cache | services/activityEventDatabase.js, scripts/db.js, services/adminActivityAnalytics.js |
| Admin pricing | AppSetting hoặc dữ liệu setting qua admin service | Không | DB hosted | Modal pricing được đọc từ web | Không | Pricing editor | routes/admin.js, services/adminPricingService.js, services/modalPricingService.js |
Entity nghiệp vụ
User
Mang identity, email/name/avatar, password hash hoặc OAuth provider identity, role member/admin, trạng thái pending/active/disabled, thời điểm tạo/duyệt/đăng nhập. Admin email được bảo vệ bởi policy riêng. Chưa thấy organization/team/tenant entity.
Bằng chứng: scripts/db.js, auth.js, services/adminAccessPolicy.js.
Project
Mang tên, mô tả, owner, timestamps, các field legacy favorite/posted/tags, model, aspect ratio, scene count, duration, flags composition/video, render settings và một Studio snapshot JSON. Cùng thông tin được lặp lại trong meta.json; file system vẫn được dùng để phát hiện hasComposition và hasVideo. Với Oloka, favorite có thể là field đơn giản; posted không thuộc MVP và hậu MVP phải được thay bằng entity tương đương Publication/PublishJob.
Bằng chứng: scripts/db.js, services/projectService.js, routes/projects.js.
Asset
Không có entity DB chuẩn. Identity thực tế là filename + asset type + vị trí file. Metadata sidecar có thể gồm kích thước, hash, upload date, tag, description, collection, OCR/transcript/analysis, embedding và trạng thái AI. Điều này làm rename, ownership, versioning và referential integrity yếu.
Trong Oloka MVP, searchable metadata chỉ gồm original filename, media type, upload time, project và optional ingestion status. Semantic/embedding/similar search, AI enrichment, exact/semantic duplicate cleanup, OCR/transcript search và advanced taxonomy đều là hậu MVP.
Bằng chứng: routes/assets.js, services/assetCatalogService.js, services/assetAnalysisService.js, services/mockAssetAnalysis.js.
Composition
Không có ID/version entity trong DB. Composition hiện hành là index.html; revision của editor được suy ra bởi composition document service. Registry blocks và component con nằm trong compositions/**; raw checkpoint hỗ trợ pipeline/editor recovery.
Bằng chứng: services/compositionDocumentService.js, routes/composition.js, services/rawHtmlCheckpoint.js, services/templateRegistryService.js.
Job
Job dùng project ID làm ID trong DB; queue tạo một ID có timestamp nhưng persistence vẫn upsert theo project. State gồm status, step, progress, error, model/render config và timestamps. Runtime bổ sung logs, traces, stats, asset selection, video URL và abort/process handles trong RAM.
Bằng chứng: scripts/db.js, services/jobRuntimeService.js, services/jobStore.js, routes/forge.js.
Render output
Không có bảng Render. Output hiện hành ghi đè output.mp4; lịch sử là thư mục snapshot và mảng JSON trong meta.json. URL delivery có hai mode: mounted static hoặc signed HF S3 redirect.
Bằng chứng: services/projectService.js, services/hfBucketDelivery.js, routes/media.js.
Setting / Provider configuration
Hosted shared config là một JSON trong AppSetting, gồm OpenAI-compatible config, Omnivoice, recognition cho image/music/video và social config. Secret được che khi trả về hosted nhưng được lưu nguyên giá trị trong SQLite. Local UI còn lưu provider profiles/secrets trong localStorage.
Bằng chứng: services/sharedConfig.js, routes/settings.js, public/app.js, scripts/db.js.
Project directory điển hình
| Artifact | Ý nghĩa | Được tạo/đọc bởi |
|---|---|---|
meta.json |
Project + job + render history + trace projection | services/projectService.js, services/jobStore.js, routes/projects.js |
hyperframes.json |
Khai báo registry/path cho project | routes/projects.js, routes/forge.js |
index.html |
Composition hiện hành | Forge, Studio, preview, render |
assets/** |
Media project, narration, BGM, transcript | Asset copy/upload, TTS, compile |
compositions/** |
Registry blocks/components materialized | services/templateRegistryService.js |
01_prompt.json |
Input checkpoint | Forge |
02_llm_script.json |
Kịch bản/composition checkpoint | Forge/resume |
03_tts_alignment.json |
Word alignment checkpoint | TTS/compile/resume |
forge.log |
Log phục hồi và chẩn đoán | Job/pipeline/UI |
quality-report.json |
Hậu kiểm | Quality service/UI |
output.mp4 |
Output hiện hành | Render provider |
renders/<id>/** |
Snapshot output/HTML/log | Render history |
Bằng chứng: services/forgePipelineService.js, services/projectService.js, services/jobStore.js, routes/quality.js.
Vấn đề dữ liệu cần giải quyết ở Oloka
- Nhiều nguồn sự thật: DB,
meta.json, disk existence và RAM đều có quyền quyết định status. Bằng chứng:routes/projects.js,services/projectService.js,services/jobStore.js. - Ghi DB bất đồng bộ không transaction với filesystem: metadata có thể ghi thành công nhưng DB sync thất bại hoặc ngược lại. Bằng chứng:
services/projectService.js,routes/projects.js. - Job không durable: queue/abort/process chỉ ở RAM; restart biến running/queued thành failed. Bằng chứng:
services/jobRuntimeService.js,services/jobStore.js. - Asset không có stable ID/owner: filename là identity; shared library là global. Bằng chứng:
routes/assets.js,services/assetLibraryStore.js. - Render history là JSON không ràng buộc: file có thể mất trong khi record còn tồn tại. Bằng chứng:
services/projectService.js. - Secret lưu plaintext: masking chỉ áp dụng response, không phải encryption at rest. Bằng chứng:
services/sharedConfig.js,scripts/db.js. - Schema thay đổi lúc startup: tạo bảng và thêm column ngay khi import DB, khó kiểm soát rollback/version. Bằng chứng:
scripts/db.js.
Đề xuất data boundary cho Oloka MVP
- DB là nguồn sự thật cho User, Project, Asset, CompositionVersion, Job, RenderOutput và ProviderCredential reference.
- Object storage là nguồn bytes; DB giữ immutable key, checksum, size, owner và lifecycle.
- Job event/step phải durable; log là evidence, không được dùng để suy luận state chính.
- Runtime working directory của project chỉ là working copy có thể tái tạo, không phải database thứ hai và không đồng nghĩa domain Workspace. Workspace trong Oloka vẫn
UNDECIDED: Phase 1 chọn entity độc lập hoặc chỉ project list; không dùngworkspace/workspace-<user>hay special project. - Secret dùng secret store/envelope encryption; browser không giữ shared production key.
- Mọi transition có idempotency key và transaction/outbox khi cần phối hợp DB với object storage.