2.4 KiB
2.4 KiB
BAT-017 Design: Import provenance and sensitive-data policy
- Status: draft
- Created At (KST): 2026-07-08 11:33 KST
- Included REQ: REQ-021
Design Direction
Introduce a narrow provenance/sanitization layer used by import services and response adapters rather than scattering per-source masking rules across UI/MCP code.
Proposed Components
provenancehelper functions under application/import boundary or a small shared module:mask_source_filename(path_or_name)build_source_identity(source, file_path, source_hash, parser_name, parser_version)minimize_raw_payload(source, payload)sanitize_provenance_for_exposure(payload, level)
- Source-specific allowlists:
- KB Bank PDF: date/time, amount, direction, masked account hint, page/row reference, validation keys.
- Toss Bank PDF: action category, normalized counterparty, masked account hint, page/row reference, validation keys.
- Toss Securities PDF: section/action/code, normalized security/counterparty summary, numeric audit fields when required.
- SeoulPay XLSX: sheet name, row reference, payment kind/category summary, minimized merchant/transaction reference.
- CSV: explicit preview/import allowlist and sensitive-column suppression.
Storage Policy
- Do not persist full local source paths.
- Store masked basename and source hash for operator correlation.
- Keep
source_hashstable for dedupe/audit. raw_payloadstores only minimized allowlisted fields; forbidden fields are removed/masked.- Existing rows are not destructively rewritten by this batch.
Interface Policy
- Default MCP responses use
minimalexposure. - Operator summary may include masked filename, parser identity, row/page/sheet reference, validation summary.
- Debug diagnostics require explicit gate and still exclude passwords/tokens/secrets/full path/raw document dump.
Test Strategy
- Use synthetic fixtures only.
- Include negative assertions for forbidden keys and full path patterns.
- Verify duplicate/rollback metadata remains usable after minimization.
Open Design Checks Before Implementation
- Decide whether provenance helpers live in
application/imports_service.pyinitially or a new module. - Confirm whether schema version bump is required or policy can be implemented through current columns plus memo JSON shape.
- Confirm MCP contract change is additive and does not break existing consumers.