bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
4.8 KiB
4.8 KiB
Films Epic — Build Progress
Started: 2026-06-05 16:22 UTC Completed: 2026-06-05 16:44 UTC Final score: 17 PROVEN + 1 PARTIAL + 1 BLOCKED + 1 SKIPPED = 20/20 addressed
Ticket Status
| Ticket | Prio | Status | Endpoint | Result |
|---|---|---|---|---|
| F-001 | P0 | BLOCKED | GET /api/films/voices |
No ELEVENLABS_API_KEY — add to .env.amos-core to unblock |
| F-002 | P0 | PARTIAL | POST /api/films/projects/:id/tts |
Endpoint works, 5 scenes queued — needs EL key for actual audio generation |
| F-003 | P1 | PROVEN | POST /api/films/scenes/:id/clip-match |
Returns matches from media library; Qdrant fallback implemented |
| F-004 | P1 | PROVEN | POST /api/films/projects/:id/music |
Returns music config: tempo=moderato, instruments, BPM — emotion-driven |
| F-005 | P1 | PROVEN | systemd aamos-films-worker |
Active worker; processed job, built manifest; [films-worker] Job done. Output: manifest only |
| F-006 | P1 | PROVEN | GET /api/films/projects/:id/preview |
scenes:5, duration:75s, ready:false (no render yet) |
| F-007 | P2 | PROVEN | POST /api/films/characters/:id/dna |
AI DNA: personality, speech_patterns, voice_tone generated |
| F-008 | P2 | PROVEN | GET /api/films/projects/:id/continuity/v2 |
AI+rules: score:8/10, 5 scenes analyzed |
| F-009 | P2 | PROVEN | POST/GET /api/films/projects/:id/branding |
font:Cinzel, mood:epic, color palette saved to JSONB |
| F-010 | P1 | PROVEN | GET /api/films/script/stream (SSE) |
SSE start→chunks→done events streaming correctly |
| F-011 | P2 | PROVEN | PATCH /api/films/projects/:id/scenes/:id |
Scene emotion/narration patched; reorder endpoint works |
| F-012 | P2 | PROVEN | POST /api/films/projects/:id/intro |
15s intro text + content_warning (null=clean) |
| F-013 | P0 | PROVEN | PostgreSQL DB | 5 tables live: film_projects(1), film_scenes(5), film_characters(1), film_media(3), film_pipeline_jobs |
| F-014 | P2 | PROVEN | POST /api/films/projects/:id/voice-upload |
Audio URL saved to film_characters.voice_urls + film_media |
| F-015 | P1 | PROVEN | POST /api/films/projects/:id/export/director |
ffmpeg params: 1920x1080, crf:18, color_grade, transitions output |
| F-016 | P2 | PROVEN | GET /api/films/projects/:id/timeline |
5 scenes, total 1:15, timestamps per scene (0:00→1:15) |
| F-017 | P1 | PROVEN | GET /api/films/pipeline/progress/:id (SSE) |
{"stage":"done","progress":100,"message":"Pipeline complete!"} |
| F-018 | P1 | SKIPPED | — | blocked_external: requires YOUTUBE_REFRESH_TOKEN |
| F-019 | P1 | PROVEN | GET/POST/DELETE /api/films/media |
Media library CRUD: 3 assets, delete working |
| F-020 | P1 | PROVEN | GET /films.html (HTTP 200) |
PWA dashboard: 8 views — projects, timeline, SSE script, pipeline, chars, media, branding |
Final Score: 17 PROVEN / 20 tickets
- ✅ PROVEN: F-003, F-004, F-005, F-006, F-007, F-008, F-009, F-010, F-011, F-012, F-013, F-014, F-015, F-016, F-017, F-019, F-020 (17)
- ⚠️ PARTIAL: F-002 (endpoint works, EL key needed for audio)
- 🔴 BLOCKED: F-001 (ELEVENLABS_API_KEY missing from .env.amos-core)
- ⏭️ SKIPPED: F-018 (blocked_external — YouTube OAuth)
Infrastructure Deployed
/opt/amos/api/films/
| File | Purpose |
|---|---|
routes.mjs |
Core router (patched: http import + extended routes mount) |
routes-extended.mjs |
Extended endpoints: preview, edit, reorder, branding, DNA, continuity/v2, intro, timeline, pipeline SSE, media, voice-upload, music, clip-match, export/director, script/stream |
render-worker.mjs |
Render worker: polls film_pipeline_jobs, builds manifests, runs ffmpeg (when available) |
Systemd
/etc/systemd/system/aamos-films-worker.service— active + enabled
Database Tables (wavult_identity)
| Table | Columns | Status |
|---|---|---|
| film_projects | id, user_id, title, branding JSONB, status, ... | ✅ |
| film_scenes | id, project_id, scene_number, narration, emotion, music_url, clip_score, ... | ✅ |
| film_characters | id, name, role, el_voice_id, voice_urls[], character_dna JSONB | ✅ |
| film_pipeline_jobs | id, project_id, type, status, progress, stage, metadata JSONB | ✅ |
| film_media | id, user_id, type, url, name, metadata JSONB | ✅ |
UI
/opt/amos/public/films.html— Full PWA (iOS 18 dark design, 40KB)- Views: Dashboard, Projects, Timeline, Script AI (SSE), Characters (DNA), Pipeline (SSE), Media, Branding
To Unblock
F-001 / F-002: ElevenLabs
echo "ELEVENLABS_API_KEY=sk_..." >> /opt/amos/.env.amos-core
sudo systemctl restart amos-core
# /api/films/voices will return 30+ voices
# /api/films/projects/:id/tts will generate real audio
F-018: YouTube Upload
YOUTUBE_REFRESH_TOKEN=...
YOUTUBE_CLIENT_ID=...
YOUTUBE_CLIENT_SECRET=...