Schema Database: PP & Apostille (Sistem Legacy)
Digali dari source code
ahu-ptpdanahu-apostille. Definisi kolom bersumber dari repository file, model, dan SQL migration — karena entity class aktual ada di package privatepp-repository/ap-repositoryyang tidak di-commit ke repo ini.
Daftar Isi
- PP (Perseroan Perorangan)
- Diagram Relasi
- Group: Transaksi Utama
- Group: Pendirian
- Group: Perubahan
- Group: Pembubaran
- Group: Koreksi
- Group: Identitas & User
- Group: Master / Referensi
- Group: Fitur Aplikasi
- Status & Transaction Type
- Apostille / Legalisasi
- Diagram Relasi
- Group: Permohonan Utama
- Group: Spesimen Pejabat
- Group: Master Data
- Group: User & Akses
- Group: Konten & Config
- Status Codes
1. PP (Perseroan Perorangan) — Database v1_appp
Stack: MariaDB 10.5, TypeORM 0.2.32, Node.js
Services: pp-be (portal publik), pp-be-admin (back-office)
Diagram Relasi PP
Group A — Transaksi Utama
pp_master
Fungsi: Satu baris = satu Perseroan Perorangan aktif. Selalu merefleksikan state terkini setelah konfirmasi. Diupdate setiap ada perubahan yang dikonfirmasi.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
pp_type_id |
INT | Selalu 1 (PP = Perseroan Perorangan) |
transaction_type_id |
INT | Tipe transaksi terakhir yang mengupdate baris ini |
identities_id |
BIGINT FK → identity |
Pemilik perseroan aktif saat ini |
prev_identities_id |
BIGINT FK → identity |
Pemilik sebelumnya (diisi saat peralihan pemilik) |
next_identities_id |
BIGINT FK → identity |
Pemilik baru saat sedang dalam proses peralihan |
vouchers_code |
VARCHAR | Kode voucher PNBP |
transaction_number |
BIGINT | Nomor transaksi |
certificate_number |
VARCHAR | Nomor sertifikat (format AHU-XXXXXX.AH.01.30.Tahun YYYY untuk Pendirian / .31. untuk Perubahan) |
perseroan_name |
VARCHAR(500) | Nama perseroan |
perseroan_alias |
VARCHAR | Alias/nama singkat |
perseroan_email |
VARCHAR | Email perseroan |
perseroan_address |
VARCHAR | Alamat lengkap |
perseroan_rt |
VARCHAR | RT |
perseroan_rw |
VARCHAR | RW |
perseroan_sub_district_id |
BIGINT FK → sub_district |
Kelurahan domisili |
perseroan_postalcode |
VARCHAR | Kode pos |
perseroan_phone |
VARCHAR | Nomor telepon |
perseroan_capital |
NUMERIC | Modal usaha |
perseroan_npwp |
VARCHAR | NPWP perseroan |
perseroan_npwp_created_at |
DATETIME | Tanggal terbit NPWP |
perseroan_kpp_code |
VARCHAR | Kode KPP Pajak |
perseroan_kpp_name |
VARCHAR | Nama KPP Pajak |
file_statement |
VARCHAR | Path PDF Surat Pernyataan Pendiri |
file_certificate |
VARCHAR | Path PDF Sertifikat resmi |
kbli_value_json |
JSON | Snapshot KBLI kegiatan usaha |
owner_value_json |
JSON | Snapshot data pemilik (Identity object) |
benefit_value_json |
JSON | Snapshot data pemilik manfaat (beneficial owner) |
statement_name_similarity |
JSON | Pernyataan kesamaan nama |
statement_beneficial_owner |
JSON | Pernyataan pemilik manfaat |
statement_condition |
JSON | Pernyataan kondisi (diisi saat pergantian pemilik) |
section_value_json |
JSON | Bagian apa yang terakhir diubah (1=Nama, 2=Email, 3=Alamat, 4=Modal, 5=KBLI, 6=Data Pemilik, 7=Pergantian Pemilik) |
prev_owner_value_json |
JSON | Snapshot pemilik sebelumnya |
next_owner_value_json |
JSON | Snapshot pemilik baru |
is_approved |
INT | 0=belum disetujui, 1=sudah disetujui pemilik baru |
approved_at |
DATETIME | Waktu persetujuan |
is_blocked |
INT | 0=normal, 1=diblokir |
blocked_at |
DATETIME | Waktu diblokir |
status |
INT | Lihat tabel status di bawah |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME | Soft-delete (default 9999-12-31 23:59:59) |
pp_master_history
Fungsi: Snapshot pp_master setiap kali ada perubahan yang dikonfirmasi. Audit trail immutable.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
pp_master_id |
BIGINT FK → pp_master |
|
inserted_at |
DATETIME | Waktu snapshot dibuat |
(semua kolom dari pp_master) |
Disalin verbatim dari pp_master saat itu |
pp_master_transaction_state
Fungsi: Mencatat setiap transaksi yang berhasil dikonfirmasi untuk satu pp_master. Satu baris per transaksi yang selesai.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
pp_master_id |
BIGINT FK → pp_master |
|
pp_type_id |
INT | 1 |
transaction_type_id |
INT | |
identities_id |
BIGINT FK → identity |
|
transaction_number |
VARCHAR | |
certificate_number |
VARCHAR | |
status |
INT | |
created_at |
DATETIME | |
updated_at |
DATETIME |
pp_master_transaction_number_count
Fungsi: Sequence counter untuk pembuatan nomor transaksi PP. Satu baris per nomor yang di-generate.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
pp_master_id |
BIGINT FK → pp_master |
|
transaction_number_count |
INT | Nilai counter saat dibuat |
status |
INT | 1 = aktif |
created_at |
DATETIME | |
updated_at |
DATETIME |
Group B — Pendirian (establishment_pp)
Alur: Pengguna submit → baris masuk establishment_pp (status 1) → user konfirmasi → status jadi 2, pp_master dibuat/diupdate.
establishment_pp
Fungsi: Menyimpan permohonan pendirian PP yang sedang / sudah diproses.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
pp_type_id |
INT | 1 |
transaction_type_id |
INT | 1 (Pendirian) |
identities_id |
BIGINT FK → identity |
Pendiri/pemilik |
vouchers_code |
VARCHAR | Kode voucher |
transaction_number |
BIGINT | Nomor transaksi |
certificate_number |
VARCHAR | Nomor sertifikat (diisi setelah konfirmasi) |
perseroan_name |
VARCHAR(500) | Nama perseroan |
perseroan_alias |
VARCHAR | Alias |
perseroan_email |
VARCHAR | |
perseroan_address |
VARCHAR | Alamat |
perseroan_rt |
VARCHAR | RT |
perseroan_rw |
VARCHAR | RW |
perseroan_sub_district_id |
BIGINT FK → sub_district |
|
perseroan_postalcode |
VARCHAR | |
perseroan_phone |
VARCHAR | |
perseroan_capital |
NUMERIC | Modal |
perseroan_npwp |
VARCHAR | NPWP (diisi setelah integrasi DJP) |
perseroan_npwp_created_at |
DATETIME | |
perseroan_kpp_code |
VARCHAR | |
perseroan_kpp_name |
VARCHAR | |
file_statement |
VARCHAR | Path Surat Pernyataan |
file_certificate |
VARCHAR | Path Sertifikat |
kbli_value_json |
JSON | KBLI snapshot |
owner_value_json |
JSON | Pemilik snapshot |
benefit_value_json |
JSON | Pemilik manfaat snapshot |
statement_name_similarity |
JSON | |
statement_beneficial_owner |
JSON | |
statement_condition |
JSON | |
status |
INT | 1=Belum konfirmasi, 2=Sudah konfirmasi, 3=Dihapus |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME | Soft-delete (default 9999-12-31 23:59:59) |
establishment_pp_owner
Fungsi: Pemilik yang mendaftarkan permohonan pendirian ini.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
establishment_pp_id |
BIGINT FK → establishment_pp |
|
identities_id |
BIGINT FK → identity |
|
owner_value_json |
JSON | Snapshot Identity saat submit |
status |
INT | 1=Baru, 2=Dikonfirmasi, 3=Dihapus |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME |
establishment_pp_activities
Fungsi: Kegiatan usaha (KBLI) untuk permohonan pendirian.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
establishment_pp_id |
BIGINT FK → establishment_pp |
|
kbli_id |
INT FK → kbli |
|
status |
INT | 1=Baru, 2=Dikonfirmasi, 3=Dihapus |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME |
establishment_pp_benefit
Fungsi: Pemilik manfaat (beneficial owner) untuk permohonan pendirian.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
establishment_pp_id |
BIGINT FK → establishment_pp |
|
identities_id |
BIGINT FK → identity |
(jika terdaftar) |
criteria_value |
VARCHAR | Kriteria sebagai pemilik manfaat |
benefit_name |
VARCHAR | Nama pemilik manfaat |
identity_type_id |
INT | Tipe ID (KTP, Passport, dll) |
identity_value |
VARCHAR | Nomor ID |
benefit_birthplace |
VARCHAR | Tempat lahir |
benefit_birthdate |
DATE | Tanggal lahir |
benefit_address |
VARCHAR | Alamat |
benefit_sub_district_id |
BIGINT FK → sub_district |
|
benefit_rt |
VARCHAR | |
benefit_rw |
VARCHAR | |
benefit_nationality |
VARCHAR | Kewarganegaraan |
benefit_npwp |
VARCHAR | NPWP pemilik manfaat |
benefit_country_id |
BIGINT FK → country |
Negara (untuk WNA) |
benefit_country_address |
VARCHAR | Alamat luar negeri |
benefit_relation |
VARCHAR | Hubungan dengan pemilik |
status |
INT | 1=Baru, 2=Dikonfirmasi, 3=Dihapus |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME |
establishment_pp_history
Fungsi: Snapshot dari establishment_pp setiap kali ada perubahan status.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
establishment_pp_id |
BIGINT FK → establishment_pp |
|
inserted_at |
DATETIME | Waktu snapshot |
(semua kolom dari establishment_pp) |
Disalin verbatim |
Group C — Perubahan (modification_pp)
Alur: Pemilik submit perubahan → baris masuk modification_pp (status 1) → pemilik baru approve (jika ganti pemilik) → konfirmasi → pp_master diupdate, history disimpan.
modification_pp
Fungsi: Permohonan perubahan data PP (nama, email, alamat, modal, KBLI, pemilik, atau ganti pemilik).
Semua kolom sama dengan establishment_pp, ditambah:
| Kolom | Tipe | Keterangan |
|---|---|---|
pp_master_id |
BIGINT FK → pp_master |
PP mana yang diubah |
section_value_json |
JSON | Array bagian yang diubah: 1=Nama, 2=Email, 3=Alamat, 4=Modal, 5=KBLI, 6=Data Pemilik, 7=Ganti Pemilik |
identities_id |
BIGINT FK → identity |
Pemilik saat ini (sebelum perubahan) |
next_identities_id |
BIGINT FK → identity |
Pemilik baru (untuk section 7) |
prev_identities_id |
BIGINT FK → identity |
Untuk audit |
is_approved |
INT | 0/1 — apakah pemilik baru sudah approve |
approved_at |
DATETIME | |
status |
INT | 1=Menunggu konfirmasi, 2=Dikonfirmasi, 3=Dihapus, 7=Ditolak |
modification_pp_owner
Fungsi: Pemilik dalam konteks permohonan perubahan.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
modificationt_pp_id |
BIGINT FK → modification_pp |
⚠️ Ada typo "modificationt" di codebase (field: modificationtPpId) |
identities_id |
BIGINT FK → identity |
Pemilik saat ini |
next_identities_id |
BIGINT FK → identity |
Pemilik baru (section 7) |
prev_identities_id |
BIGINT FK → identity |
Pemilik sebelumnya |
owner_value_json |
JSON | Snapshot data pemilik saat ini |
next_owner_value_json |
JSON | Snapshot data pemilik baru |
prev_owner_value_json |
JSON | Snapshot data pemilik sebelumnya |
status |
INT | |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME |
modification_pp_activities
Sama dengan establishment_pp_activities. FK: modificationt_pp_id (typo sama).
modification_pp_benefit
Sama dengan establishment_pp_benefit. FK: modificationt_pp_id (typo sama).
modification_pp_history
Snapshot modification_pp per perubahan status. Tambahan kolom pp_master_id.
modification_pp_pt
Fungsi: Menghubungkan permohonan perubahan PP dengan PT yang dimiliki pemilik yang sama (untuk validasi ganti pemilik saat pemilik masih punya PT).
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK AUTO_INCREMENT | |
perseroan_name |
VARCHAR(500) | Nama PT terkait |
sk_number |
VARCHAR(100) | Nomor SK PT |
modification_pp_id |
BIGINT FK → modification_pp |
CASCADE DELETE |
pp_master_id |
BIGINT FK → pp_master |
CASCADE DELETE |
confirmation_at |
DATETIME | Waktu konfirmasi |
deleted_at |
DATETIME | Default 9999-12-31 23:59:59 |
updated_at |
DATETIME | |
created_at |
DATETIME |
Group D — Pembubaran (dispersal_pp)
Alur: Pemilik ajukan pembubaran → dispersal_pp (status 1) → dikonfirmasi → status jadi 5, pp_master diblokir / diarsipkan.
dispersal_pp
Semua kolom dari establishment_pp, ditambah:
| Kolom | Tipe | Keterangan |
|---|---|---|
pp_master_id |
BIGINT FK → pp_master |
PP yang dibubarkan |
dispersal_reason_id |
BIGINT FK → dispersal_reason |
Alasan pembubaran |
is_blocked |
INT | Flag blokir |
blocked_at |
DATETIME | |
status |
INT | 1=Proses, 5=Selesai dibubarkan |
dispersal_pp_owner / dispersal_pp_activities / dispersal_pp_benefit
Struktur sama dengan padanan Establishment. FK: dispersal_pp_id.
dispersal_pp_history
Snapshot dispersal per status change. Tambahan kolom dispersal_reason_id.
dispersal_reason
Fungsi: Daftar alasan pembubaran PP.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
reason_order |
INT | Urutan tampil |
reason_description |
VARCHAR | Teks alasan |
status |
INT |
Group E — Koreksi (correction_pp)
Fungsi: Koreksi kesalahan data entry (bukan perubahan resmi). Hanya admin yang bisa lakukan koreksi.
correction_pp
Kolom inti sama dengan establishment_pp.
correction_pp_owner
FK: correction_pp_id.
correction_pp_activities
FK: correction_pp_id.
correction_pp_previous
Fungsi: Menyimpan data sebelum koreksi dilakukan (audit trail).
FK: correction_pp_id.
Group F — Identitas & User (shared dengan Apostille)
identity
Fungsi: Akun pengguna sistem. Digunakan oleh PP (sebagai pemilik perseroan) dan Apostille (sebagai pemohon).
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
full_name |
VARCHAR | Nama lengkap |
phone |
VARCHAR | Nomor HP |
address |
VARCHAR | Alamat |
address_rt |
VARCHAR | RT |
address_rw |
VARCHAR | RW |
sub_district_id |
BIGINT FK → sub_district |
|
postalcode |
VARCHAR | |
birthplace |
VARCHAR | Tempat lahir |
birthdate |
DATE | Tanggal lahir |
npwp |
VARCHAR | NPWP pribadi |
position_id |
BIGINT FK → position |
Jabatan |
job |
VARCHAR | Pekerjaan |
password_hash |
VARCHAR | Hash password |
status |
INT | |
created_at |
DATETIME | |
updated_at |
DATETIME | |
deleted_at |
DATETIME |
identity_nik
Fungsi: Data NIK/KTP per identity.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
identities_id |
BIGINT FK → identity |
|
nik |
VARCHAR | Nomor Induk Kependudukan |
| (kolom lain) |
identity_email
Fungsi: Email per identity.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
identities_id |
BIGINT FK → identity |
|
email |
VARCHAR | |
| (kolom lain) |
identity_group
Fungsi: Mapping identity ke group (many-to-many).
| Kolom | Tipe | Keterangan |
|---|---|---|
identities_id |
BIGINT FK → identity |
|
group_id |
BIGINT FK → group |
group
Fungsi: Role/grup pengguna (admin, petugas, publik, dll).
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
name |
VARCHAR | Nama grup |
status |
INT | ≠3 = aktif |
access_menu
Fungsi: Hak akses menu per group.
| Kolom | Tipe | Keterangan |
|---|---|---|
groups_id |
INT FK → group |
|
action_menu_id |
INT FK → menu |
Group G — Master / Referensi
kbli
Fungsi: Klasifikasi Baku Lapangan Usaha Indonesia — referensi kegiatan usaha.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
code |
VARCHAR | Kode KBLI (5 digit) |
title |
VARCHAR | Nama kegiatan |
description |
TEXT | Deskripsi |
| (mungkin ada kolom lain) |
transaction_type
Fungsi: Tipe-tipe transaksi PP.
| id | name | display_name |
|---|---|---|
| 1 | Pendirian | Pendirian |
| 2 | Perubahan Umum | Perubahan Umum |
| 3 | Perubahan | Perubahan |
| 4 | Pembubaran | Pembubaran |
| 5 | Koreksi | Koreksi |
| 6 | (tidak diketahui) | |
| 7 | (tidak diketahui) | |
| 8 | Perubahan Status | Perubahan Status |
country
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
name |
VARCHAR | Nama negara |
code |
VARCHAR | Kode ISO |
sub_district / district / city / province
Hierarki wilayah administratif Indonesia.
province (provinsi)
└─ city (kota/kabupaten)
└─ district (kecamatan)
└─ sub_district (kelurahan)
Setiap tabel punya: id, name, code, FK ke level di atasnya, status, deleted_at.
Group H — Fitur Aplikasi
announcement_transaction
Fungsi: Pengumuman publik yang diterbitkan setiap transaksi PP dikonfirmasi.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
BIGINT PK | |
pp_master_id |
BIGINT FK → pp_master |
|
transaction_type_id |
INT | |
transaction_at |
DATETIME | Waktu transaksi |
perseroan_name |
VARCHAR | |
perseroan_sub_district_id |
BIGINT | |
certificate_number |
VARCHAR | |
status |
INT | 2 = aktif/terpublikasi |
created_at |
DATETIME | |
updated_at |
DATETIME |
finance
Fungsi: Laporan keuangan tahunan PP. Hanya boleh dilaporkan 1 kali per periode.
Kolom utama: id, pp_master_id, period, status, created_at, updated_at.
finance_pp_transaction_number_count
Counter sequence untuk nomor transaksi laporan keuangan.
notification
Notifikasi in-app untuk pengguna.
pp_blocked / pp_blocked_history
Rekaman PP yang diblokir beserta history-nya.
pp_profile_leads / pp_profile_state
Tracking lead dan status profil PP.
announcement_news
Berita/pengumuman konten statis portal.
badwords / blacklist / whitelist
Daftar kata terlarang dan whitelist/blacklist nama perseroan.
benefit_criteria
Master kriteria pemilik manfaat (>25% saham, kontrol, dll).
position
Master jabatan/posisi.
global_param
Parameter konfigurasi global aplikasi.
tracking_download_counter / tracking_download_detail
Tracking unduhan sertifikat dan dokumen.
Status Codes & Transaction Types PP
Status pp_master
| Nilai | Makna |
|---|---|
1 |
Aktif / Belum dikonfirmasi (dalam proses) |
2 |
Dikonfirmasi / Berlaku |
3 |
Dihapus (soft delete) |
Status establishment_pp / modification_pp
| Nilai | Makna |
|---|---|
1 |
Menunggu konfirmasi |
2 |
Dikonfirmasi |
3 |
Dihapus / batal |
7 |
Ditolak (khusus modifikasi) |
Status dispersal_pp
| Nilai | Makna |
|---|---|
1 |
Sedang diproses |
5 |
Selesai dibubarkan |
2. Apostille / Legalisasi — Database v1_appapos
Stack: MariaDB, TypeORM 0.2.32, Node.js
Services: apostille-service (portal + verifikasi), user-service (manajemen pengguna), ap-job (background jobs)
Diagram Relasi Apostille
Group A — Permohonan Utama
customer_identities
Fungsi: Akun pemohon apostille/legalisasi. Satu identity bisa punya banyak customer_identities untuk tipe permohonan berbeda.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
identities_id |
INT FK → identity |
|
application_type |
INT | 1=Apostille, 2=Legalisasi |
country_of_destination |
INT FK → country |
Negara tujuan dokumen |
country_id |
INT FK → country |
Negara asal pemohon (WNA) |
sub_district_id |
INT | Kelurahan domisili |
sub_district |
VARCHAR | Nama kelurahan (denormalized) |
district_id |
INT FK → district |
|
| (kolom lain) | Data kependudukan pemohon |
customer_documents
Fungsi: Satu baris = satu dokumen yang diajukan apostille/legalisasi. Ini adalah entitas utama yang diverifikasi petugas.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
customer_identities_id |
INT FK → customer_identities |
Pemohon |
application_number |
VARCHAR | Nomor permohonan unik |
document_name |
VARCHAR | Nama dokumen |
document_person_name |
VARCHAR | Nama orang dalam dokumen |
document_number |
VARCHAR | Nomor dokumen |
document_date |
DATE | Tanggal dokumen |
is_electronic |
INT | 1=Elektronik, 2=Non-elektronik |
application_type |
INT | 1=Apostille, 2=Legalisasi |
spesimen_position |
VARCHAR | Jabatan pejabat yang tanda tangan dokumen |
spesimen_officer_name |
VARCHAR | Nama pejabat yang tanda tangan |
spesimen_position_id |
INT FK → spesimen_position |
|
institutions |
VARCHAR | Institusi penerbit dokumen |
place_of_publication_stickers |
INT FK → regional_office |
Kanwil tempat stiker dicetak |
verification_step |
INT | Step verifikasi saat ini (2 atau 3) |
status |
INT | Lihat status di bawah |
created_at |
DATETIME | |
created_by |
INT FK → identity |
|
updated_at |
DATETIME | |
updated_by |
INT FK → identity |
|
deleted_at |
DATETIME | Soft delete |
deleted_by |
INT FK → identity |
customer_document_details
Fungsi: Detail pembayaran, nomor legalisasi/apostille, dan status cetak stiker per dokumen.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
customer_documents_id |
INT FK → customer_documents |
|
no_trx |
VARCHAR | Nomor transaksi (dipakai sebagai FK di reprint) |
no_voucher |
VARCHAR | Nomor voucher PNBP |
no_legalization |
VARCHAR | Nomor apostille/legalisasi resmi (format: AHU-XXXX untuk Apostille) |
is_paid |
INT | 0=Belum bayar, 1=Sudah bayar |
pay_date |
DATETIME | Tanggal pembayaran |
sticker_print_at |
DATETIME | Tanggal cetak stiker |
print_status |
INT | 0=Belum cetak, 1=Sudah cetak |
reprint_count |
INT | Counter cetak ulang (default 0) |
sticker_print |
VARCHAR | Binary/path file stiker |
path_qr_code |
VARCHAR | Path file QR code |
mst_id |
INT FK → mr_signature_template |
Template tanda tangan yang digunakan |
customer_document_history
Fungsi: Log setiap aksi verifikasi (approve/reject/reverify) oleh petugas.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
customer_documents_id |
INT FK → customer_documents |
|
status |
INT | 1=Disetujui, 2=Ditolak, 3=Reverifikasi |
step |
INT | Step verifikasi: 1, 2, atau 3 |
notes |
TEXT | Catatan petugas |
verified_at |
DATETIME | Waktu verifikasi |
verified_by |
INT FK → identity |
Petugas yang memverifikasi |
request_reprint_details
Fungsi: Permohonan cetak ulang stiker apostille yang sudah pernah dicetak.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
no_trx |
VARCHAR FK → customer_document_details.no_trx |
Dokumen yang diminta cetak ulang |
reasons |
TEXT | Alasan cetak ulang |
status |
INT | 1 = default/aktif |
created_at |
DATETIME | |
created_by |
INT FK → identity |
Group B — Spesimen Pejabat
spesimen
Fungsi: Data pejabat (notaris, kepala dinas, dll) yang tanda tangannya bisa dilegalisasi/diappostille.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
officer_name |
VARCHAR | Nama pejabat |
description |
TEXT | Deskripsi / keterangan |
created_at |
DATETIME | |
created_by |
INT FK → identity |
|
updated_by |
INT FK → identity |
|
deleted_at |
DATETIME | |
deleted_by |
INT FK → identity |
spesimen_position
Fungsi: Riwayat jabatan seorang pejabat (spesimen). Satu pejabat bisa punya banyak posisi di periode berbeda.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
spesimen_id |
INT FK → spesimen |
|
position |
VARCHAR | Jabatan (misal: "Notaris") |
nip |
VARCHAR | NIP |
address |
VARCHAR | Alamat kantor |
start_year_of_officiate |
INT | Tahun mulai menjabat |
finish_year_of_officiate |
INT | Tahun selesai menjabat |
spesimen_file |
VARCHAR | Path file contoh tanda tangan |
institutions |
VARCHAR | Nama institusi |
district_id |
INT FK → district |
Wilayah kerja |
status |
INT | 1=Aktif, 3=Dihapus |
created_at |
DATETIME | |
deleted_at |
DATETIME |
spesimen_validity
Fungsi: Rentang periode validitas spesimen (untuk cek apakah tanda tangan masih berlaku pada tanggal dokumen).
| Kolom | Tipe | Keterangan |
|---|---|---|
| (tidak diketahui lengkap) | ||
position |
VARCHAR | Jabatan |
officer_name |
VARCHAR | Nama pejabat |
mr_signature_template
Fungsi: Template tanda tangan pejabat AHU yang akan dicantumkan di sertifikat apostille/legalisasi.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
application_type |
INT | 1=Apostille, 2=Legalisasi |
officer_name |
VARCHAR | Nama pejabat AHU |
position |
VARCHAR | Jabatan (Indonesia) |
position_id |
VARCHAR | Kode posisi |
position_en |
VARCHAR | Jabatan (Inggris) |
nip |
VARCHAR | NIP |
signature_file |
VARCHAR | Path file tanda tangan digital |
status |
INT | 0=Nonaktif/dihapus, 1=Aktif |
is_plt |
INT | 0=Definitif, 1=PLT (Pelaksana Tugas) |
start_at |
DATETIME | Awal masa berlaku |
end_at |
DATETIME | Akhir masa berlaku |
Group C — Master Data
document_type
Fungsi: Jenis-jenis dokumen yang bisa diajukan apostille/legalisasi.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
name |
VARCHAR | Nama internal |
display_name |
VARCHAR | Nama tampil |
order |
INT | Urutan tampil |
status |
INT | 1=Aktif |
is_apostille |
INT | 1=bisa apostille, 0=hanya legalisasi |
regional_office
Fungsi: Kantor Wilayah AHU tempat stiker apostille/legalisasi dicetak.
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK AUTO_INCREMENT | |
name |
VARCHAR | Nama kantor wilayah |
city_name |
VARCHAR | Nama kota |
province_id |
INT FK → province |
|
application_type |
INT | 1=Apostille, 2=Legalisasi |
position |
INT | Urutan tampil |
status |
INT | 0=Nonaktif, 1=Aktif |
created_at |
DATETIME | |
created_by |
INT FK → identity |
|
updated_at |
DATETIME | |
updated_by |
INT FK → identity |
|
deleted_at |
DATETIME | |
deleted_by |
INT FK → identity |
country
Fungsi: Master negara (sama struktur dengan PP).
| Kolom | Tipe | Keterangan |
|---|---|---|
id |
INT PK | |
name |
VARCHAR | Nama negara |
code |
VARCHAR | Kode ISO |
is_apostille |
INT | 1=negara tujuan apostille, 0=tidak |
latitude |
VARCHAR | |
longitude |
VARCHAR | |
phone_number_prefix |
VARCHAR | Kode telepon internasional |
created_at |
DATETIME | |
created_by |
INT | |
updated_at |
DATETIME | |
updated_by |
INT |
province / city / district / sub_district
Sama dengan PP — hierarki wilayah administratif Indonesia.
Group D — User & Akses
Tabel identity, identity_nik, identity_email, identity_group, group, access_menu — struktur sama dengan PP. Kemungkinan besar database terpisah tapi skema identik.
Group E — Konten & Config
announcement_news
Berita dan pengumuman portal Apostille.
faq
Daftar FAQ tampil di portal.
global_param
Parameter konfigurasi global (batas upload, dll).
data_type_audittrail
Tipe-tipe event audit trail.
Status Codes Apostille
Status customer_documents
| Nilai | Makna |
|---|---|
1 |
Diajukan (submitted), menunggu verifikasi |
2 |
Sedang diverifikasi |
3 |
Ditolak |
4 |
Selesai / Disetujui |
verification_step
| Nilai | Makna |
|---|---|
2 |
Step verifikasi pertama (petugas level 1) |
3 |
Step verifikasi kedua (petugas level 2 / supervisor) |
Status customer_document_history
| Nilai | Makna |
|---|---|
1 |
Disetujui |
2 |
Ditolak |
3 |
Dikembalikan untuk reverifikasi |
application_type
| Nilai | Makna |
|---|---|
1 |
Apostille |
2 |
Legalisasi |
Catatan Penting untuk Integrasi OCR
PP
- Field kritis untuk OCR:
perseroan_name,perseroan_capital,perseroan_npwp,perseroan_address,perseroan_sub_district_id,kbli_value_json - JSON columns tidak ternormalisasi:
owner_value_json,benefit_value_json,kbli_value_jsonmenyimpan snapshot — bukan FK langsung. Untuk audit kita cukup baca dari JSON ini tanpa join ke tabel lain. - Nomor transaksi: Format
41{YY}{MM}{DD}{province_code}02{NNNNN}— dibangun dari area + sequence counter. - Nomor sertifikat Pendirian:
AHU-XXXXXX.AH.01.30.Tahun YYYY; Perubahan:AHU-XXXXXX.AH.01.31.Tahun YYYY
Apostille
- Field kritis untuk OCR:
document_name,document_person_name,document_number,document_date,spesimen_position,spesimen_officer_name,institutions - Verifikasi spesimen: Sistem mencocokkan tanda tangan pejabat di dokumen dengan database
spesimen_position→spesimen_validityuntuk memastikan pejabat memang berwenang pada tanggal dokumen tersebut. - Nomor apostille: Format mengandung prefix
AHU, diisi dicustomer_document_details.no_legalizationsetelah verifikasi selesai.