docs: confirm import provenance req and batch
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 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
|
||||
|
||||
- `provenance` helper 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_hash` stable for dedupe/audit.
|
||||
- `raw_payload` stores only minimized allowlisted fields; forbidden fields are removed/masked.
|
||||
- Existing rows are not destructively rewritten by this batch.
|
||||
|
||||
## Interface Policy
|
||||
|
||||
- Default MCP responses use `minimal` exposure.
|
||||
- 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.py` initially 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.
|
||||
Reference in New Issue
Block a user