docs: photo pipeline Archify workflow map (7-node spine) + JSON source
This commit is contained in:
244
docs/archify/photo-pipeline.workflow.json
Normal file
244
docs/archify/photo-pipeline.workflow.json
Normal file
@@ -0,0 +1,244 @@
|
||||
{
|
||||
"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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
13683
docs/photo-pipeline-map.html
Normal file
13683
docs/photo-pipeline-map.html
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user