Files
boc/tickets/films-progress.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

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.serviceactive + 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=...