Collection Revision History

Snapshot, switch, export, spec, and preflight Collection versions without overwriting old files.

COL-20260519201535-7228ca / collection #9

Workflow gate acceptance 201534

Active revision id: 9

Revision Compare

{
    "collection_id": 9,
    "left": {
        "revision_id": 177,
        "revision_no": 8,
        "label": "v8",
        "is_active": false
    },
    "right": {
        "revision_id": 177,
        "revision_no": 8,
        "label": "v8",
        "is_active": false
    },
    "summary": {
        "master_changed": false,
        "item_count_left": 2,
        "item_count_right": 2,
        "items_added": 0,
        "items_removed": 0,
        "items_changed": 2,
        "panel_prints_changed": 0,
        "preflight_score_left": null,
        "preflight_score_right": null,
        "preflight_changed": false,
        "zip_changed": false,
        "spec_changed": false
    },
    "master": {
        "artwork": {
            "left_path": "/assets/pod/collections/9/revisions/v8/master/master_artwork.png",
            "right_path": "/assets/pod/collections/9/revisions/v8/master/master_artwork.png",
            "same_path": true,
            "left_exists": true,
            "right_exists": true,
            "left_size_bytes": 42405,
            "right_size_bytes": 42405,
            "same_size": true,
            "left_width": 1400,
            "left_height": 1400,
            "right_width": 1400,
            "right_height": 1400,
            "same_dimensions": true
        },
        "print": {
            "left_path": "/assets/pod/collections/9/revisions/v8/master/master_print.png",
            "right_path": "/assets/pod/collections/9/revisions/v8/master/master_print.png",
            "same_path": true,
            "left_exists": true,
            "right_exists": true,
            "left_size_bytes": 244750,
            "right_size_bytes": 244750,
            "same_size": true,
            "left_width": 3000,
            "left_height": 3000,
            "right_width": 3000,
            "right_height": 3000,
            "same_dimensions": true
        }
    },
    "items": [
        {
            "key": "item:22",
            "template_id": 28,
            "template_name_left": "硬式洗漱墊",
            "template_name_right": "硬式洗漱墊",
            "collection_item_id_left": 22,
            "collection_item_id_right": 22,
            "apply_mode_left": "tile-cover",
            "apply_mode_right": "tile-cover",
            "panel_count_left": 1,
            "panel_count_right": 1,
            "mockup": {
                "left_path": "/assets/pod/collections/9/revisions/v8/mockups/item_22_mockup.png",
                "right_path": "/assets/pod/collections/9/revisions/v8/mockups/item_22_mockup.png",
                "same_path": true,
                "left_exists": true,
                "right_exists": true,
                "left_size_bytes": 69989,
                "right_size_bytes": 69989,
                "same_size": true,
                "left_width": 1000,
                "left_height": 472,
                "right_width": 1000,
                "right_height": 472,
                "same_dimensions": true
            },
            "print": {
                "left_path": "/assets/pod/collections/9/revisions/v8/prints/item_22_print.png",
                "right_path": "/assets/pod/collections/9/revisions/v8/prints/item_22_print.png",
                "same_path": true,
                "left_exists": true,
                "right_exists": true,
                "left_size_bytes": 244750,
                "right_size_bytes": 244750,
                "same_size": true,
                "left_width": 3000,
                "left_height": 3000,
                "right_width": 3000,
                "right_height": 3000,
                "same_dimensions": true
            },
            "scene": {
                "left_path": "",
                "right_path": "",
                "same_path": false,
                "left_exists": false,
                "right_exists": false,
                "left_size_bytes": 0,
                "right_size_bytes": 0,
                "same_size": true,
                "left_width": null,
                "left_height": null,
                "right_width": null,
                "right_height": null,
                "same_dimensions": true
            },
            "panel_prints": [],
            "change_status": "changed"
        },
        {
            "key": "item:23",
            "template_id": 27,
            "template_name_left": "硬式杯墊(圓型)",
            "template_name_right": "硬式杯墊(圓型)",
            "collection_item_id_left": 23,
            "collection_item_id_right": 23,
            "apply_mode_left": "tile-cover",
            "apply_mode_right": "tile-cover",
            "panel_count_left": 1,
            "panel_count_right": 1,
            "mockup": {
                "left_path": "/assets/pod/collections/9/revisions/v8/mockups/item_23_mockup.png",
                "right_path": "/assets/pod/collections/9/revisions/v8/mockups/item_23_mockup.png",
                "same_path": true,
                "left_exists": true,
                "right_exists": true,
                "left_size_bytes": 82260,
                "right_size_bytes": 82260,
                "same_size": true,
                "left_width": 371,
                "left_height": 369,
                "right_width": 371,
                "right_height": 369,
                "same_dimensions": true
            },
            "print": {
                "left_path": "/assets/pod/collections/9/revisions/v8/prints/item_23_print.png",
                "right_path": "/assets/pod/collections/9/revisions/v8/prints/item_23_print.png",
                "same_path": true,
                "left_exists": true,
                "right_exists": true,
                "left_size_bytes": 244750,
                "right_size_bytes": 244750,
                "same_size": true,
                "left_width": 3000,
                "left_height": 3000,
                "right_width": 3000,
                "right_height": 3000,
                "same_dimensions": true
            },
            "scene": {
                "left_path": "",
                "right_path": "",
                "same_path": false,
                "left_exists": false,
                "right_exists": false,
                "left_size_bytes": 0,
                "right_size_bytes": 0,
                "same_size": true,
                "left_width": null,
                "left_height": null,
                "right_width": null,
                "right_height": null,
                "same_dimensions": true
            },
            "panel_prints": [],
            "change_status": "changed"
        }
    ],
    "reports": {
        "zip": {
            "left_path": "",
            "right_path": "",
            "same_path": false,
            "left_exists": false,
            "right_exists": false,
            "left_size_bytes": 0,
            "right_size_bytes": 0,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "spec_html": {
            "left_path": "/assets/pod/collections/9/revisions/v8/specs/production_spec.html",
            "right_path": "/assets/pod/collections/9/revisions/v8/specs/production_spec.html",
            "same_path": true,
            "left_exists": true,
            "right_exists": true,
            "left_size_bytes": 2945,
            "right_size_bytes": 2945,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "spec_csv": {
            "left_path": "/assets/pod/collections/9/revisions/v8/specs/production_spec.csv",
            "right_path": "/assets/pod/collections/9/revisions/v8/specs/production_spec.csv",
            "same_path": true,
            "left_exists": true,
            "right_exists": true,
            "left_size_bytes": 1317,
            "right_size_bytes": 1317,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "spec_json": {
            "left_path": "/assets/pod/collections/9/revisions/v8/specs/production_manifest.json",
            "right_path": "/assets/pod/collections/9/revisions/v8/specs/production_manifest.json",
            "same_path": true,
            "left_exists": true,
            "right_exists": true,
            "left_size_bytes": 4589,
            "right_size_bytes": 4589,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "preflight_html": {
            "left_path": "",
            "right_path": "",
            "same_path": false,
            "left_exists": false,
            "right_exists": false,
            "left_size_bytes": 0,
            "right_size_bytes": 0,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "preflight_json": {
            "left_path": "",
            "right_path": "",
            "same_path": false,
            "left_exists": false,
            "right_exists": false,
            "left_size_bytes": 0,
            "right_size_bytes": 0,
            "same_size": true,
            "left_width": null,
            "left_height": null,
            "right_width": null,
            "right_height": null,
            "same_dimensions": true
        },
        "preflight_left": {
            "status": null,
            "score": null
        },
        "preflight_right": {
            "status": null,
            "score": null
        }
    },
    "warnings": [],
    "generated_at": "2026-06-12T23:20:49+00:00"
}
v8
v8 inactive items 2 panels 0

v8

Reason: manual_snapshot / Created: 2026-06-12 19:00:22
Master: /assets/pod/collections/9/revisions/v8/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v8/master/master_print.png
v7
v7 inactive items 2 panels 0

v7

Reason: manual_snapshot / Created: 2026-06-12 18:24:48
Master: /assets/pod/collections/9/revisions/v7/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v7/master/master_print.png
v6
v6 inactive items 2 panels 0

v6

Reason: manual_snapshot / Created: 2026-06-12 17:22:22
Master: /assets/pod/collections/9/revisions/v6/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v6/master/master_print.png
v5
v5 inactive items 2 panels 0

v5

Reason: manual_snapshot / Created: 2026-06-12 17:15:08
Master: /assets/pod/collections/9/revisions/v5/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v5/master/master_print.png
v4
v4 inactive items 2 panels 0

v4

Reason: manual_snapshot / Created: 2026-06-12 15:58:29
Master: /assets/pod/collections/9/revisions/v4/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v4/master/master_print.png
v3
v3 inactive items 2 panels 0

v3

Reason: manual_snapshot / Created: 2026-06-12 15:57:44
Master: /assets/pod/collections/9/revisions/v3/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v3/master/master_print.png
v2
v2 active items 2 panels 0 preflight fail / 20

reapply 2026-05-21 05:26:18

Reason: reapply / Created: 2026-05-21 05:26:18
Master: /assets/pod/collections/9/revisions/v2/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v2/master/master_print.png
v1
v1 inactive items 2 panels 0

v1 initial snapshot

Reason: initial_snapshot / Created: 2026-05-21 05:26:02
Master: /assets/pod/collections/9/revisions/v1/master/master_artwork.png
Print: /assets/pod/collections/9/revisions/v1/master/master_print.png