Skip to content

reference data models

Douwe de Vries edited this page Jul 1, 2026 · 1 revision

Data models

Rust DTOs in crates/csv-anonymizer-core/src/types.rs are manually mirrored in frontend/src/types.ts. Tauri-only command request wrappers live in src-tauri/src/commands/csv.rs, src-tauri/src/commands/job_commands.rs, and src-tauri/src/local_ai/types.rs.

Active contributors: Douwe de Vries

Contract model rules

  • Rust uses serde camelCase for wire fields.
  • TypeScript mirrors use camelCase field names and string unions for Rust enums.
  • scripts/check-contracts.mjs checks selected enum variants and struct fields.
  • Serialization tests in crates/csv-anonymizer-core/src/types.rs cover key casing and default behavior.

Core enums

DTO Role Shared with frontend
DataType Detected or overridden type such as email, uuid, phone, firstName, taxId, string, or unknown Yes
Confidence Detector confidence: high, medium, low Yes
PiiRisk Column risk: high, medium, low Yes
PrivacyFindingKind Privacy evidence category, for example person, contact, governmentId, or mixedSensitiveText Yes
EmptyFormat Empty scalar representation: emptyString, null, or mixed Yes
AnonymizationStrategy Strategy: auto, pseudonymize, tokenize, localAi, mask, redact, or passThrough Yes
PasteDataFormat Pasted input format: auto, csv, json, xml, yaml, plainText, or logs Yes
WarningSeverity Preview warning level: info or warning Yes
PreflightMode preview or anonymize readiness mode Yes
ReleaseReadinessStatus verified, review, or blocked Yes
ReleaseEvidenceStatus verified, review, blocked, or info Yes
SmartReplacementRejectionReason Local AI replacement validation failure reason Yes

Column and detection DTOs

DTO Key fields Purpose
DetectionResult dataType, confidence, sampleMatches, totalSamples, trace Internal detector output shape
DetectionTrace summary, selectedReason, totalNonEmpty, candidates Explains how a column type was selected
DetectionTraceItem dataType, reason, matchCount, totalConsidered, confidence, accepted One detector candidate in a trace
PrivacyFinding kind, dataType, rowIndex, start, end, matchValue, sampleValue, confidence, score, detector, reason Span-level privacy evidence
PrivacyEvidenceSummary kind, dataType, confidence, matchCount, sampleCount, score, detector, reason, detectors Aggregated evidence used by metadata and UI
ColumnMetadata name, sourcePath, index, detectedType, confidence, detectionTrace, privacyFindings, privacyEvidence, piiRisk, sampleValues, emptyFormat, isSelected, strategy Main column contract used by CSV, paste, preview, and reports
ColumnControl columnIndex, typeOverride, strategy Frontend user overrides sent back to the core

Workflow DTOs

DTO Key fields Purpose
HeadersData filePath, rowCount, rowCountIsComplete, defaultOutputPath, columns CSV file analysis result from the core
AnalyzeResponse headers, selectedColumns, suggestedOutputPath Tauri wrapper result for analyze_csv
PasteAnalyzeParams content, format, sampleRowCount Input for pasted-data analysis
PasteAnalyzeData format, rowCount, rowCountIsComplete, columns Pasted-data analysis result
PastePreviewParams content, format, columns, controls, sampleCount Pasted-data preview input
PasteTransformParams content, format, columns, controls, previewSmartReplacements Pasted-data transform input
PasteTransformData output, rowCount, columnsAnonymized, durationMs, privacyReport Pasted-data transform result
QuickGenerateParams dataType, strategy, count Quick by data type generation input
QuickTransformData output, rowCount, values, privacyReport Quick generation result
PreviewParams filePath, columns, controls, sampleCount CSV file preview input
PreviewData previews, warnings, smartReplacements CSV and pasted preview result
AnonymizeParams filePath, outputPath, columns, controls, force, previewSmartReplacements Core file anonymization input
AnonymizeData outputPath, rowCount, columnsAnonymized, durationMs, privacyReport Completed file anonymization result
PreflightParams mode, filePath, outputPath, columns, controls, force, sampleRowCount, previewSmartReplacements, localAiReady, localAiMessage Core readiness input
PreflightData mode, readiness, evidence, columnReports Readiness result before preview or output

Preview and report DTOs

DTO Key fields Purpose
SampleTransform original, anonymized Example source-to-output pair
ColumnPreview columnIndex, columnName, samples Preview samples for one column
PreviewWarning columnIndex, columnName, message, severity User-facing preview warning
SmartReplacementEntry columnIndex, original, replacement Accepted Local AI preview replacement
SmartReplacementRejectionCount reason, count Aggregated Smart replacement rejection count
PrivacyReport Identifier counts, strategy counts, token and Smart metrics, readiness, evidence, column reports, utility metrics, and notes Main output report for file, paste, and quick workflows
ReleaseReadiness status, blockers, reviewItems, verifiedItems Release/readiness status used in preflight and reports
ReleaseEvidenceItem id, label, status, detail One readiness evidence row
ColumnReleaseReport Column index/name, selection, detected type, risk, strategy, action, status, detail Per-column readiness/report row
UtilityMetric label, value, status, detail Utility or output-shape metric for reports

Job and Local AI DTOs

DTO Source Key fields Purpose
AnonymizeJobStatus src-tauri/src/jobs.rs, frontend/src/types.ts jobId, state, rowsProcessed, totalRows, cancelRequested, result, error Polling state for file anonymization jobs
LocalAiRequest src-tauri/src/local_ai/types.rs, frontend/src/types.ts enabled, model Local AI settings passed into status, preview, transform, and download commands
LocalAiStatus src-tauri/src/local_ai/types.rs, frontend/src/types.ts enabled, provider, model, availableModels, endpoint, runtimeAvailable, modelInstalled, ready, runtimeVersion, message Ollama readiness result
LocalAiDownloadStatus src-tauri/src/local_ai/types.rs, frontend/src/types.ts jobId, state, model, statusMessage, completedBytes, totalBytes, cancelRequested, error Model download progress

Related pages: Tauri commands, Configuration, and Testing.

Clone this wiki locally