Skip to content

features saved work

Douwe de Vries edited this page Jul 2, 2026 · 2 revisions

Saved work

Active contributors: Douwe de Vries

Purpose

Saved work covers two different artifacts: pair-order files for repeat setup and comparison snapshots for completed results. Pair-order files remain editable after loading; snapshots reopen read-only results.

Directory layout

src/backend/pair_order.rs
src/backend/comparison_snapshot.rs
src/backend/persistence/v1/mod.rs
frontend/src/hooks/useWorkflowPersistenceActions.ts
frontend/src/components/app/ResultsStep.tsx
frontend/src/components/ui/LoadResultButton.tsx

Key abstractions

Name File Description
PairOrderSelection src/backend/requests.rs, frontend/src/types/api.ts Selected row-key and comparison-column order.
PersistedPairOrder src/backend/pair_order.rs Internal versioned pair-order payload.
SnapshotV1 src/backend/persistence/v1/mod.rs Versioned snapshot payload.
snapshotReadOnly frontend/src/types/api.ts, frontend/src/hooks/useComparisonWorkflow.reducer.ts UI state that blocks follow-on edits after snapshot load.

How it works

Pair-order save validates selections against the current loaded CSV headers and emits pretty JSON text. Pair-order load validates the version, header multiset, and selected labels, then updates frontend mapping state.

Snapshot save serializes completed comparison inputs, mappings, normalization, results, and generated summary. Snapshot load validates the persisted model, hydrates the session with result data, and moves the UI to read-only results.

graph TD
    Config[Current mapping config] --> PairOrder[Save pair-order]
    PairOrder --> Editable[Load into configure step]
    Results[Completed comparison] --> Snapshot[Save snapshot]
    Snapshot --> ReadOnly[Load into read-only results]
Loading

Integration points

HTTP routes are registered in src/api/app.rs; desktop dialog commands live in src-tauri/src/commands.rs; frontend actions live in frontend/src/hooks/useWorkflowPersistenceActions.ts.

Entry points for modification

Change file schema in src/backend/pair_order.rs or src/backend/persistence/v1/mod.rs. Add version migration behavior before accepting older persisted files. Update frontend read-only UX in frontend/src/components/app/ResultsStep.tsx and reducer logic in frontend/src/hooks/useComparisonWorkflow.reducer.ts.

Key source files

File Purpose
src/backend/pair_order.rs Pair-order save/load validation.
src/backend/comparison_snapshot.rs Snapshot save/load workflow helpers.
src/backend/persistence/v1/mod.rs Snapshot schema and validation.
frontend/src/hooks/useWorkflowPersistenceActions.ts Save/load/export actions.
frontend/src/hooks/useComparisonWorkflow.reducer.ts Snapshot and pair-order state transitions.

Clone this wiki locally