Spaces:
Sleeping
Sleeping
|
Download docs/reference/FEATURE_INVENTORY.md from phucsd/Oloka-Video-Dev: direct link, hf CLI and curl.
- Browser
- Download file 29.6 kB
-
https://huggingface.co/spaces/phucsd/Oloka-Video-Dev/resolve/main/docs/reference/FEATURE_INVENTORY.md
- Command line
-
hf download hf://spaces/phucsd/Oloka-Video-Dev/docs/reference/FEATURE_INVENTORY.md
-
curl -L -o FEATURE_INVENTORY.md https://huggingface.co/spaces/phucsd/Oloka-Video-Dev/resolve/main/docs/reference/FEATURE_INVENTORY.md
29.6 kB
| # Feature Inventory | |
| ## Quy ước | |
| Nguồn audit: AutoCode Video `codex/hf-prod-sync` tại `595ccdfaf45ff83473f2da8fd2c71d491828e5f5`. Tổng cộng xác định **56 feature/subsystem**. Cột `Implementation status` chỉ mô tả mức hoàn thiện nhìn thấy trong source: `FULL`, `PARTIAL`, `MOCK`, `LEGACY`, `UNREACHABLE` hoặc `UNCLEAR`; nó độc lập với verification status. Mọi dòng có file evidence đều là `SOURCE_VERIFIED` và `NOT_RUNTIME_VERIFIED`, trừ khi ghi rõ khác. Phase 0 không có feature nào được nâng lên `RUNTIME_VERIFIED` hoặc `PARTIAL_RUNTIME_EVIDENCE`; test file chỉ là source evidence vì 66 test file của repository tham khảo không được chạy. Không suy completeness từ tên route/file. Xem taxonomy chuẩn và ma trận các integration chính tại `CURRENT_SYSTEM_MAP.md`. | |
| ## Access và shell | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | -------------------- | ---------------- | -------------------------------------- | ------------------------------------------ | ----------------------- | -------------------------- | --------------------------------------------------------------------- | ---------------------------------------------- | ----------------------------------- | | |
| | F-01 | Public landing | Visitor | `/` | Nội dung → CTA/login/waitlist | Express static | Đầy đủ cho presentation | `public/index.html`, `public/landing.js`, `server.js` | Gắn chặt auth gate/animation | Giữ behavior, xây component mới | | |
| | F-02 | Hosted entry policy | Visitor/member | `/`, `/dashboard` | Session/status → landing/dashboard/blocked | Auth DB | Đầy đủ | `services/hostedEntryPolicy.js`, `server.js`, tests hosted entry | Auth có thể tắt bằng env | Deny-by-default hosted | | |
| | F-03 | Google OAuth | Member | Landing login | OAuth code → active/pending user + session | Google, SQLite | Đầy đủ có điều kiện config | `auth.js`, `services/oauthGoogleParams.js`, `public/index.html` | Không timeout/retry thống nhất | KEEP BEHAVIOR | | |
| | F-04 | GitHub OAuth | Member | API route, không thấy CTA chính | OAuth code → user/session | GitHub, SQLite | Không xác định consumer | `auth.js`, `public/index.html` | Redirect khác Google, email private | Hậu MVP/undecided | | |
| | F-05 | Password auth local | Local user | API routes | Email/password → session | SQLite/scrypt | Legacy/local | `auth.js` | Hosted thường disabled; UI chính không có form | Remove khỏi hosted MVP | | |
| | F-06 | Waitlist | Visitor | Landing modal | Name/email → pending User | SQLite | Đầy đủ tối thiểu | `public/landing.js`, `auth.js` | Waitlist dùng chung User entity | Giữ value, tách lifecycle | | |
| | F-07 | Session/logout | Member | Cookie, account menu | Session token → user context/logout | SQLite/cache | Đầy đủ | `auth.js`, `services/sessionLookupCache.js`, `public/app.js` | Cookie policy theo env; token plaintext DB | Thiết kế lại session store | | |
| | F-08 | User approval/roles | Admin | Admin users | Patch/delete → role/status/user | SQLite | Đầy đủ cơ bản | `auth.js`, `services/adminAccessPolicy.js`, `public/app.js` | Không organization/permission model | Giữ behavior tối thiểu | | |
| | F-09 | Dashboard navigation | Member | `/dashboard`, `/create`, `/studio/:id` | URL/action → view | Browser history/state | Đầy đủ | `private/dashboard-shell.html`, `public/app.js` | Một JS/HTML monolith | Replace implementation | | |
| | F-10 | Settings shell | Admin/local user | Settings modal | Provider/forms → shared/local config | AppSetting/localStorage | Một phần | `private/dashboard-shell.html`, `public/app.js`, `routes/settings.js` | Secret/config phân tán | Replace bằng server credential refs | | |
| ## Projects và workspace | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | ------------------------------- | ------------ | ----------------------------------- | -------------------------------------- | ---------------------- | --------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------- | | |
| | F-11 | Project list/search/filter/page | Member | Projects view | Query/filter → cards/page | SQLite + disk fallback | Một phần | `public/app.js`, `routes/projects.js`, `services/projectDiskSnapshot.js` | Nhiều nguồn sự thật | KEEP BEHAVIOR, replace data path | | |
| | F-12 | Project creation | Member | Forge start; POST project alternate | Prompt/name → folder + DB record | Filesystem/SQLite | Một phần | `routes/forge.js`, `routes/projects.js` | Hai contract tạo project | Một command canonical | | |
| | F-13 | Per-user workspace | Member | `workspace` alias | User → auto workspace | Filesystem/SQLite | Một phần | `server.js`, `routes/projects.js` | Alias/ID khó hiểu | `UNDECIDED`: cấm alias; Phase 1 chọn entity độc lập hoặc chỉ project list | | |
| | F-14 | Select/open project | Member | Project card/Studio URL | ID → scoped project/status | Auth + filesystem | Đầy đủ | `public/app.js`, `routes/projects.js`, `server.js` | Nhiều dạng ID | Opaque UUID | | |
| | F-15 | Favorite/legacy posted flags | Member | Project quick menu | ID → toggled metadata | JSON + SQLite sync | Một phần | `public/app.js`, `routes/projects.js`, `services/projectService.js` | `posted` không đồng nghĩa platform publish | Giữ favorite; bỏ `posted` khỏi MVP; sau này dùng Publication/PublishJob | | |
| | F-16 | Clone project | Member | Project quick menu | Source ID → copied project | Filesystem/SQLite | Một phần | `public/app.js`, `routes/projects.js` | Copy toàn tree, reset history; không snapshot transaction | Object manifest clone | | |
| | F-17 | Delete/bulk delete | Member/admin | Manage projects | IDs → permanent removal | Filesystem/SQLite | Nguy hiểm | `public/app.js`, `routes/projects.js` | Không trash, path containment thiếu | Replace soft-delete | | |
| | F-18 | Thumbnail | Member | Project card | Project ID → PNG/SVG | ffmpeg/files | Một phần | `routes/projects.js`, `public/app.js` | Generate-on-request/process fallback | Async thumbnail artifact | | |
| | F-19 | Diagnostics/report | Member/admin | Report/error modal | Project ID/section → logs, scan, stats | Files/logs/linter | Một phần | `routes/projects.js`, `routes/forge.js`, `services/projectReportService.js` | Expensive/heterogeneous | Keep diagnostic value, normalize events | | |
| ## Assets và media | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | ---------------------------------- | ------------ | ----------------------------------------- | ----------------------------------------------- | -------------------------- | ---------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------- | | |
| | F-20 | Shared asset catalog | Member | Assets/DAM, asset lock | Files/sidecars → catalog | Shared filesystem/cache | Một phần | `services/assetCatalogService.js`, `routes/assets.js`, `public/app.js` | Global, filename identity | Tenant-aware Asset entity | | |
| | F-21 | Asset upload | Admin hosted | DAM upload/drop | Raw media → file + sidecar | Filesystem, metadata tools | Một phần | `public/app.js`, `routes/assets.js` | Regular member không upload private; RAM/size limits | Direct-to-object-storage private upload | | |
| | F-22 | Asset technical metadata | Admin/system | Upload | File → size/hash/media info | ffmpeg/image inspection | Đầy đủ cơ bản | `routes/assets.js`, `services/mediaMetadata.js`, `services/imageFormat.js` | Sidecar only | Keep behavior in ingestion job | | |
| | F-23 | AI asset analysis | Admin/system | Upload/re-analyze | Media + guidance → tags/description/embedding | Recognition provider | Một phần/mock fallback | `services/assetAnalysisService.js`, `services/mockAssetAnalysis.js`, `routes/assets.js` | Success may mean fallback; RAM queue | Hậu MVP | | |
| | F-24 | Asset search/filter | Member | DAM/asset lock | Query/filters → client-filtered assets | Catalog metadata | Một phần | `public/app.js`, `services/assetSearch.js` | Client-heavy; semantic quality uncertain | MVP chỉ original filename, media type, upload time, project, optional ingestion status | | |
| | F-25 | Exact duplicate scan | Admin | DAM scanner | Hash/size → duplicate groups | Files/sidecars | Đầy đủ cơ bản | `routes/assets.js`, `public/app.js` | Cleanup permanent | Hậu MVP: workflow exact-duplicate cleanup | | |
| | F-26 | Semantic duplicate scan | Admin | DAM scanner | Embedding threshold → groups | Embeddings | Một phần | `routes/assets.js`, `public/app.js` | Missing embedding reduces coverage | Hậu MVP | | |
| | F-27 | Asset metadata/collection edit | Admin | Detail/bulk UI | Patch → sidecar update | Filesystem | Một phần | `public/app.js`, `routes/assets.js` | Collection là string, không entity | Simple tags first | | |
| | F-28 | Use/lock asset in project | Member | Prompt asset lock/detail | Asset selection → copied file + linked contract | Shared/project filesystem | Một phần | `public/app.js`, `routes/assets.js`, `services/forgePipelineService.js` | Copy/filename matching/fuzzy repair | Keep value, immutable asset refs | | |
| | F-29 | DAM advanced views | Member | Collections/favorites/recent/shared/trash | Navigation → filtered UI | Client state | Chỉ UI | `private/dashboard-shell.html`, `public/app.js` | Không backend entity/lifecycle tương ứng | Remove khỏi MVP | | |
| | F-30 | AI background removal | Member | Asset detail | Button → timer/alert | Không | Mock | `public/app.js` | Báo tạo file nhưng không có side effect | Remove đến khi có provider thật | | |
| | F-31 | Similar/individual duplicate tools | Member | Asset detail | Tags/heuristic → client filter/alert | Client catalog | Mock/heuristic | `public/app.js` | Gắn nhãn AI nhưng không gọi AI | Remove khỏi MVP | | |
| | F-32 | BGM library/upload/delete | Member/admin | BGM modal/DAM | Audio → shared track/metadata | Shared filesystem | Một phần | `routes/bgm.js`, `public/app.js` | Mutation permission không nhất quán | Admin catalog riêng sau MVP | | |
| | F-33 | Select BGM | Member | Create/Studio settings | Track/none → project `bgm.*` | Project filesystem | Đầy đủ cơ bản | `routes/bgm.js`, `public/app.js` | Copy file, không stable asset ID | Keep behavior via asset refs | | |
| ## Generation, Studio và preview | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | ----------------------------- | ------------- | ------------------------------------- | ----------------------------------------------------- | -------------------------- | ------------------------ | ----------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------- | | |
| | F-34 | Prompt composer/config | Member | Create view | Prompt, ratio, caption, BGM, assets → Forge request | Browser/settings | Đầy đủ | `private/dashboard-shell.html`, `public/app.js` | Nhiều config/advanced controls | Keep simplified MVP | | |
| | F-35 | Prompt/URL media ingestion | Member | Prompt | URL/queries → capture/downloaded assets/brand context | Web/media tools | Một phần | `services/promptAssetService.js`, `routes/generate.js` | SSRF/licensing/anti-bot risk | Remove mặc định MVP | | |
| | F-36 | Forge composition generation | Member | `/api/forge/start` | Prompt/context → narration + HyperFrames HTML | LLM/assets | Một phần nhưng là core | `routes/forge.js`, `services/forgePipelineService.js`, `services/forgePlanningService.js` | Huge prompt/repair chain, invalid JSON | Replace orchestration, keep outcome | | |
| | F-37 | Legacy direct generation | Integrator | `/api/generate` | Prompt/URL → JSON/HTML | LLM/prompt asset service | Legacy/duplicate | `routes/generate.js`; không có consumer trong `public/app.js` | Khác Forge/checkpoints | Remove | | |
| | F-38 | HyperFrames contract/registry | System | Generation/save/render | HTML refs → materialized renderable project | HyperFrames/registry | Một phần, heavily tested | `services/templateRegistryService.js`, `services/forgeQualityService.js`, tests registry | Version/path/materialization complexity | Keep contract, redesign dependency manifest | | |
| | F-39 | Studio document editor | Member | Edit tab | Document + revision → saved composition | HyperFrames editor/API | Một phần | `src/studio-editor.jsx`, `routes/composition.js`, tests studio | Generated bundle lớn; no DB versions | Hậu MVP hoặc basic source editor | | |
| | F-40 | Quick scene edit | Member | Scene panel | Scene ID/HTML/narration → updated composition | Composition API | Một phần | `public/app.js`, `routes/composition.js` | Regex/HTML mutation and conflict risk | Replace bằng structured scene model | | |
| | F-41 | AI edit/render-only | Member | Studio edit prompt | Instruction/config → modified composition/new render | Forge/LLM | Một phần | `public/app.js`, `routes/forge.js`, `services/forgePipelineService.js` | Duplicate large edit pipeline | Hậu MVP after core stability | | |
| | F-42 | Live preview/safe zones | Member | Live Preview tab | Composition → playable iframe | Static/HyperFrames runtime | Một phần | `public/app.js`, `private/dashboard-shell.html`, `server.js` | Preview/runtime parity | KEEP BEHAVIOR | | |
| | F-43 | HyperFrames preview server | System/editor | `__hyperframes_config`/Studio tooling | Project dir → child server/proxy | HyperFrames CLI | Một phần | `server.js` | Per-project process/port in RAM; stale logic | Replace with bounded preview service | | |
| ## Audio, render, jobs và output | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | -------------------------------- | ------------- | ---------------------- | --------------------------------------------- | ------------------------- | --------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------- | | |
| | F-44 | Omnivoice TTS | System | Forge TTS step | Narration scenes → audio + alignment | Omnivoice | Đầy đủ với retry | `services/omnivoiceSceneTts.js`, tests TTS | Long retry/cold start, provider coupling | Adapter + durable scene jobs | | |
| | F-45 | Transcription/alignment fallback | System | Compile step | Narration audio → timed words | Local/OpenAI | Một phần | `services/ttsMediaService.js`, `routes/compile.js`, Forge | Multiple fallback paths | Prefer TTS alignment; keep one fallback | | |
| | F-46 | Caption engine | Member/system | Create/Studio/compile | Timed words/style/mode → composition captions | Templates/fonts | Một phần mạnh | `services/captionTemplates.js`, `services/captionSegmenter.js`, quality tests | Legacy subtitle detection remains | KEEP BEHAVIOR, structured config | | |
| | F-47 | Smart BGM direction | System | Forge | Script + catalog → track/offset | LLM/BGM library | Một phần | `services/forgeLlmService.js`, `services/forgePipelineService.js` | Extra LLM cost/non-determinism | Hậu MVP; manual BGM first | | |
| | F-48 | Durable-looking job lifecycle UI | Member | Render dock/Studio | Start/SSE/poll → progress/cancel/pause/resume | RAM queue + DB/meta | Một phần | `services/jobRuntimeService.js`, `services/jobStore.js`, `routes/forge.js`, `public/app.js` | Không durable thật | Replace hoàn toàn | | |
| | F-49 | Local render provider | System | Forge/direct render | Project → MP4 | HyperFrames CLI/Chromium | Đầy đủ local cơ bản | `services/renderProviders.js`, `routes/render.js` | No clear provider deadline | Keep dev-only | | |
| | F-50 | Modal render provider | System | Forge | Bundle → remote call → MP4 | Modal | Đầy đủ với retry | `services/renderProviders.js`, `deploy/modal-renderer/app.py`, tests Modal | Base64/timeout/version drift | Keep goal, versioned protocol | | |
| | F-51 | Render history/output download | Member | Output/history | Completed job → snapshot/play/download | Filesystem/HF delivery | Một phần | `services/projectService.js`, `services/forgeStatusPayload.js`, `public/app.js` | Current overwrite; JSON/file drift | Immutable RenderOutput entity | | |
| | F-52 | Pre/post render quality | System/member | Forge + quality report | Composition/video → gates/report/feedback | HyperFrames/ffmpeg/vision | Một phần | `services/forgeQualityService.js`, `services/videoQualityService.js`, `routes/quality.js` | Optional vision and complex repair | Keep technical gates; human review state | | |
| ## Publish, admin và operations | |
| | ID | Feature | Người dùng | Entry point | Đầu vào → đầu ra | Dependency | Implementation status | Bằng chứng | Vấn đề quan sát | Đề xuất Oloka | | |
| | ---- | ----------------------------- | ------------------ | -------------- | --------------------------------------------------- | ------------------------- | --------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------- | | |
| | F-53 | Social publishing | Member | Publish modal | MP4 + platform config → per-platform result | TikTok/YouTube/Facebook | Một phần | `routes/socialPublish.js`, `public/app.js` | Direct request, no durable status/token refresh | Hậu MVP | | |
| | F-54 | Admin analytics/jobs/cost | Admin | Admin view | DB/disk/activity/pricing → dashboards/export/detail | Multiple stores | Một phần | `routes/admin.js`, `auth.js`, `services/admin*.js`, `public/app.js` | Freshness/source drift | MVP: simple job/user operations only | | |
| | F-55 | Provider discovery/health | Admin | Settings/Admin | Config → models/test/Modal health | Providers | Một phần | `routes/settings.js`, `routes/status.js`, `public/app.js` | Admin-only, inconsistent deadlines | Keep server-side health checks | | |
| | F-56 | Tests and operational scripts | Developer/operator | npm/scripts/CI | Source/config → tests/checks/deploy/smoke | Node/GitHub/HF/Cloudflare | Một phần | `package.json`, `tests/**` (66 files), `scripts/**`, workflow | Strong unit contracts but no single hosted E2E proof; stale CF scripts | Keep discipline; rebuild around Oloka topology | | |
| ## Tổng hợp theo mức hoàn chỉnh | |
| | Nhóm | Số lượng | Ghi chú | | |
| | ------------------------------- | -------: | ------------------------------------------------------------------------------------ | | |
| | Đầy đủ hoặc đầy đủ có điều kiện | 15 | Chủ yếu shell/auth cơ bản, selection, metadata kỹ thuật, TTS/local render primitives | | |
| | Hoạt động một phần | 31 | Gồm hầu hết core pipeline vì durability/data/permission còn thiếu | | |
| | Chỉ UI/mock/heuristic | 3 | DAM advanced/background removal/similar tools | | |
| | Legacy/duplicate/local-only | 4 | Password, direct generation và các đường tương tự | | |
| | Không xác định/nguy hiểm | 3 | GitHub consumer, destructive deletion và một số operational reachability | | |
| Số liệu là phân loại audit tại snapshot, không phải KPI chất lượng production. | |