APP+0
Media AI Analysis & Search — Implementation Plan (Phase 1)
Make media records (image/audio/video/document) first-class in search. Core extracts embedded metadata deterministically on claim and indexes the media even with AI off; when AI is on, an async job adds caption/OCR/transcription/idea/intent, the media is embedded through the existing per-model path, and its owner (article/ticket) is reindexed with a compact surrogate. Phase 1 = "find the right file" (no timestamped chunks, no video visual track — that is Phase 2, out of scope here).
Tasks.
- Task 1: Media-analysis config + model registry (M21, M18) — DONE4/4
- Task 2:
content_hash+ deterministic metadata on media create (M2, M15, M3a) — DONE4/4 - Task 3: AI-owned
ai_media_analysistable + model (M3b, M15) — DONE3/3 - Task 4: Generic Core searchable-contributor seam (M4a) — DONE3/3
- Task 5:
Mediabecomes Searchable + IEmbeddableModel (M5, M6, M9, M14) — DONE4/4 - Task 6: Event + AI listener + Core fallback (M11, M12, M14, M18) — DONE4/4
- Task 7:
AnalyzeMediaJob(M6, M11, M15, M20, M21) — DONE6/6 - Task 8: Transcription backend (M21) — DONE3/3
- Task 9: Embedding dedup + per-media rows (M15) — DONE2/2
- Task 10: ACL — unified result set, owner-inherited, switchable (M16) — DONE3/3
- Task 11: Parent enrichment + single-owner reindex cascade (M9, M14) — DONE2/2
- Task 12: Media lifecycle (M19) — DONE3/3
- Task 13a: Core resource-schema contributor seam (M22) — DONE2/2
- Task 13b: Owner-scoped media curation section (M22, M3a, M3c) — DONE2/2
- Task 13c: Read-only autonomous
Mediagallery resource (M22, M16) — DONE2/2 - Task 13d: AI analysis panel + re-analyze action (M22, M18) — DONE2/2
- Task 14: Docs + closeout3/3