{ "schema_version": 1, "diagram_type": "workflow", "meta": { "title": "Photo Pipeline \u2014 Google Takeout \u2192 Master Archive \u2192 Immich \u2192 S3", "animation": "trace", "visual_preset": "signal-flow", "quality_profile": "showcase", "views": [ { "id": "main", "label": "Photo journey", "focus": [ "takeout", "watch", "ingest", "quality", "review", "bydate", "immich" ], "note": "Follow a photo from Google to Immich." }, { "id": "review", "label": "Review", "focus": [ "review", "bydate" ], "note": "Human gate and cleanup." }, { "id": "durable", "label": "Durability", "focus": [ "bydate", "immich" ], "note": "Backup layers." } ], "output": "docs/photo-pipeline-map.html", "viewBox": [ 1400, 800 ] }, "lanes": [ { "id": "source", "label": "Source (cloud)" }, { "id": "pipeline", "label": "Pipeline (.13 Prefect)" }, { "id": "reviewer", "label": "Human Review" }, { "id": "archive", "label": "Master Archive" }, { "id": "serve", "label": "Serve & Durability" } ], "phases": [ { "id": "fetch", "label": "Acquire", "fromCol": 0, "toCol": 0 }, { "id": "process", "label": "Fingerprint + verdicts", "fromCol": 1, "toCol": 3, "variant": "emphasis" }, { "id": "gate", "label": "Human gate", "fromCol": 4, "toCol": 4, "variant": "dashed" }, { "id": "land", "label": "Land + protect", "fromCol": 5, "toCol": 5, "variant": "dashed" } ], "groups": [], "mainPath": [ "takeout", "watch", "ingest", "quality", "review", "bydate", "immich" ], "nodes": [ { "id": "takeout", "lane": "source", "col": 0, "type": "cloud", "label": "Google Takeout", "sublabel": "134GB export" }, { "id": "watch", "lane": "pipeline", "col": 1, "type": "frontend", "label": "photo-watch", "sublabel": "extract + stage" }, { "id": "ingest", "lane": "pipeline", "col": 3, "type": "backend", "label": "photo-ingest", "sublabel": "sha256 + dhash dedup" }, { "id": "quality", "lane": "pipeline", "col": 5, "type": "backend", "label": "quality-scan", "sublabel": "PIL blurry/dark" }, { "id": "review", "lane": "reviewer", "col": 5, "type": "frontend", "label": "Review", "sublabel": "approve / reject" }, { "id": "bydate", "lane": "archive", "col": 5, "type": "database", "label": "by_date master", "sublabel": "35K files" }, { "id": "immich", "lane": "serve", "col": 5, "type": "cloud", "label": "Immich", "sublabel": ".35 library" } ], "edges": [ { "id": "takeout-watch", "from": "takeout", "to": "watch", "variant": "default" }, { "id": "watch-ingest", "from": "watch", "to": "ingest", "variant": "default" }, { "id": "ingest-quality", "from": "ingest", "to": "quality", "variant": "emphasis" }, { "id": "quality-review", "from": "quality", "to": "review", "variant": "default", "label": "verdicts" }, { "id": "review-bydate", "from": "review", "to": "bydate", "variant": "emphasis", "label": "approve \u2192 merge" }, { "id": "bydate-immich", "from": "bydate", "to": "immich", "variant": "default", "label": "import" } ], "cards": [ { "dot": "cyan", "title": "Ingest result", "items": [ "12.3K new photos", "225 dups skipped", "272 HEIC deferred" ] }, { "dot": "amber", "title": "Rejected cleanup", "items": [ "986 photos in trash (1.5GB)", "recoverable until purge" ] }, { "dot": "emerald", "title": "Approved \u2192 master", "items": [ "1,664 merged to by_date", "imported to Immich" ] }, { "dot": "rose", "title": "Known gap", "items": [ "Phone-only photos unbacked", "decision deferred" ] } ] }