CKYC Verification

Batch · Upload · Match — CERSAI compliance pipeline

Total batches
{{ totalBatches }}
Total records
{{ totalRecords }}
Pending upload
{{ totalPending }}
Uploaded
{{ totalUploaded }}
Total size
{{ formatBytes(totalSize) }}
@if (activeSection === 'zip') {

ZIP Batch Details

CERSAI ZIP archives grouped by creation date

Phase 2
@if (loading) {
Loading batches…
} @if (error && !loading) {
{{ error }}
} @if (!loading && !error && groups.length === 0) {

No batches found

Create a batch from the Record Master to see it here.

} @if (!loading && groups.length > 0) {
@for (group of groups; track group.dateLabel) {
@if (group.expanded) {
@for (batch of group.batches; track trackBatch($index, batch)) { }
Batch ID Filename Records Size Status Actions
{{ batch.batchId }} {{ batch.filename }} {{ batch.recordCount }} {{ formatBytes(batch.sizeBytes) }} @if (batch.uploadedToCersai) { Uploaded } @else { Pending } @if (batch.documentId) { }
}
}
}
} @if (activeSection === 'sftp') {

SFTP Upload & ACK · API Match

CERSAI SFTP transfer history with ACK receipts and per-batch logs

Phase 3-4
{{ sftpSuccessCount }}
Uploaded successfully
{{ sftpFailedCount }}
Failed
{{ sftpPendingCount }}
Pending upload
@if (loading) {
Loading logs…
} @if (!loading && sftpLogs.length === 0) {

No SFTP upload history yet

Upload a batch from the Record Master to see CERSAI transfer logs here.

} @if (!loading && sftpLogs.length > 0) {
@for (log of sftpLogs; track log.id) {
@if (isSftpSuccess(log)) { } @else if (isSftpFailed(log)) { } @else { }
{{ log.batchId }} @if (isSftpSuccess(log)) { Upload successful } @else if (isSftpFailed(log)) { Upload failed } @else { Pending } {{ log.uploadedOnLabel || log.createdOnLabel || '—' }}
Filename {{ log.filename }}
Records {{ log.recordCount }}
Size {{ formatBytes(log.sizeBytes) }}
@if (log.cersaiReference) {
CERSAI Ref {{ log.cersaiReference }}
}
@if (log.uploadRemarks) {
{{ log.uploadRemarks }}
}
@if (log.documentId) { }
}
}
} @if (showManifest) {
Batch Manifest
@if (manifestLoading) {
Loading manifest…
} @if (manifestError) {
{{ manifestError }}
} @if (manifestBatch && !manifestLoading) {
Batch ID {{ manifestBatch.batchId }}
Created on {{ manifestBatch.createdOnLabel || '—' }}
Records {{ manifestBatch.recordCount }}
Size {{ formatBytes(manifestBatch.sizeBytes) }}
Status @if (manifestBatch.uploadedToCersai) { Uploaded } @else { Pending }
Filename {{ manifestBatch.filename }}
Checksum {{ manifestBatch.checksum }}
@if (manifestBatch.manifest?.length > 0) {
Packaged clients ({{ manifestBatch.manifest.length }})
@for (entry of manifestBatch.manifest; track entry.clientId) { }
Client P S ID Ad Total size
{{ entry.displayName || 'Client ' + entry.clientId }} @if (entry.cifNumber) { {{ entry.cifNumber }} }
{{ formatBytes( (entry.photo?.bytes || 0) + (entry.signature?.bytes || 0) + (entry.idProof?.bytes || 0) + (entry.addressProof?.bytes || 0) ) }}
} }
}