docs: design KYC bulk import workflow (Closes #58) - #123
Conversation
- docs/kyc-bulk-import-design.md: full workflow spec covering upload → schema validation → data validation → preview → human review gate → approval/signing → apply → audit log. Includes sequence diagram, 10 schema-level hard-reject rules, 5 data-level hard-reject rules, 7 soft-warning rules, maker-checker enforcement, three signing-mechanism options flagged as open questions, partial-apply failure policy, security risks section, RBAC matrix, rate-limit table, and 6 open questions for team confirmation. - docs/kyc-bulk-import-template.csv: sample template matching the spec with 2 valid rows and 1 intentionally invalid row (INVALID_ADDRESS_FORMAT) to illustrate validation failure. - src/features/compliance/bulkImport.types.ts: TypeScript interfaces only (no logic) — RawCsvRow, ValidatedCsvRow, BatchPreviewRow, BatchPreview, BatchPreviewSummary, BatchStatus, KycBatchRecord, ValidationFinding/Warning/Error, ValidationResult, ErrorReportRow, KycBatchAuditRecord, AuditRowEntry. All rule IDs typed as HardRejectRuleId | SoftWarningRuleId union. - src/components/README-bulk-import-notes.md: review UI notes covering preview table columns, approve/reject button disable conditions, WCAG AA accessibility requirements for large diffs.
|
🎉 This issue has been marked as completed on GrantFox as part of the Official Campaign | FWC26 campaign! @Justine-Ifedozie's PR #186 was approved and merged by @El-swaggerito. 🏆 @Justine-Ifedozie: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (258 total points). Track your full progress on GrantFox. 👏 Great work, @Justine-Ifedozie! Keep contributing to Axionvera. |
|
🎉 This issue has been marked as completed on GrantFox as part of the Official Campaign | FWC26 campaign! @GideonBature's PR #187 was approved and merged by @El-swaggerito. 🏆 @GideonBature: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (519 total points). Track your full progress on GrantFox. 👏 Great work, @GideonBature! Keep contributing to Axionvera. |
|
🎉 This issue has been marked as completed on GrantFox as part of the Official Campaign | FWC26 campaign! @Justine-Ifedozie's PR #190 was approved and merged by @El-swaggerito. 🏆 @Justine-Ifedozie: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (363 total points). Track your full progress on GrantFox. 👏 Great work, @Justine-Ifedozie! Keep contributing to Axionvera. |
|
🎉 This issue has been marked as completed on GrantFox! @Justine-Ifedozie's PR #193 was approved and merged by @El-swaggerito. 🏆 @Justine-Ifedozie: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (468 total points). Track your full progress on GrantFox. 👏 Great work, @Justine-Ifedozie! Keep contributing to Axionvera. |
|
🎉 This issue has been marked as completed on GrantFox! @Justine-Ifedozie's PR #201 was approved and merged by @El-swaggerito. 🏆 @Justine-Ifedozie: You earned 35 FoxPoints for this contribution! Your current tier: Explorer (503 total points). Track your full progress on GrantFox. 👏 Great work, @Justine-Ifedozie! Keep contributing to Axionvera. |
Summary
Resolves #58 — Add admin compliance bulk import design.
This PR delivers the full design specification for the KYC whitelist bulk import workflow. No upload UI, parser, or signing endpoint is implemented — this is a documentation and type-contract task only, per the issue requirements.
Deliverables
docs/kyc-bulk-import-design.mdFull end-to-end workflow spec covering:
partially_appliedstatusdocs/kyc-bulk-import-template.csvSample template with:
INVALID_ADDRESS_FORMAT) illustrating rules D-001/W-001/W-004src/features/compliance/bulkImport.types.tsTypeScript interfaces only (no functions, no API calls, no state logic):
RawCsvRow— raw parsed CSV shape (all strings, pre-validation)ValidatedCsvRow— post-validation shape with coerced types + warningsBatchPreviewRow/BatchPreview/BatchPreviewSummary— diff shape (current → proposed per row)BatchStatus— full lifecycle:draft | pending_review | approved | rejected | applying | applied | partially_applied | expired | failedKycBatchRecord— persisted batch recordValidationFinding/ValidationWarning/ValidationError/ValidationResultHardRejectRuleId/SoftWarningRuleId— all rule IDs as typed unionsKycBatchAuditRecord/AuditRowEntry— immutable audit log shapesrc/components/README-bulk-import-notes.mdReview UI notes (not a component implementation):
BatchPreviewRowfieldsaria-rowcount, live regions, contrast)Acceptance Criteria
What was intentionally NOT built
All signing mechanism options are flagged as open questions (OQ-02) for the team to confirm before implementation begins.