Lewati ke isi

Naming Conventions

Konvensi penamaan terpadu. Sumber kanonik tim: 07-STANDAR-DAN-KONVENSI-TIM.md. Spesifik database: ../../database/docs/02-KONVENSI-PENAMAAN.md. API: ../../backend/docs/API_STANDARD.md.


Umum (semua lapisan)

Aturan Contoh benar Hindari
Bahasa Indonesia, jelas tanggal_jatuh_tempo tgl_jt, duedate
snake_case barang_id barangId, BarangID
PK bernama id id uuid/bigint id_barang sebagai PK
FK <entitas>_id kontak_id id_kontak
Boolean is_* is_aktif aktif (ambiguous)
Uang numeric(18,2) total_nilai float, double
Waktu *_at timestamptz dibuat_at datetime tanpa TZ

PostgreSQL

Schema

Pola Contoh
Global pusat, logika, logs
Tenant tenant_sparepart — <kode> stabil, lowercase [a-z0-9_]

Objek

Objek Pola
Tabel snake_case — transaksi, barang_harga
Fungsi kata kerja — hitung_stok, ambil_nomor_bukti
Trigger function fn_<tabel>_<kapan>
Trigger trg_<tabel>_<aksi>
View tenant v_<makna> atau standar alias — lihat STANDAR_ALIAS_VIEW

Referensi di logika

Rujukan Tulis sebagai
Tabel tenant Tanpa prefix: FROM transaksi
Tabel pusat Eksplisit: pusat.tenant
Logs Eksplisit: logs.audit

Dilarang di fungsi tenant-agnostik: SET search_path, hardcode tenant_sparepart.*, VIEW di logika yang bind ke satu tenant.


Migrasi SQL

Pola file Contoh
Tenant/pusat database/migrations/tenant/V042__kontak_info.sql
ClickHouse database/migrations/clickhouse/V106__*.sql (V100+)
MV ClickHouse database/migrations/clickhouse/material_views/V301__*.sql

Hanya lewat Git — tidak ALTER manual di server (AGENTS.md).


Kafka

Pola Contoh
Topik CDC erp.tenant_<kode>.<tabel>
Consumer group clickhouse-etl-group
Replay job (prod) clickhouse-replay-<job_id>

ClickHouse

Pola Contoh
Database erp_clickhouse (tunggal)
Isolasi kolom tenant_kode
Tabel riwayat <tabel>_riwayat
Skip index lihat V105__transaksi_add_skip_indexes.sql

Backend (NestJS)

Area Konvensi
Route /api/<domain>/... — lihat API_STANDARD
Modul master, transaksi, laporan, ops-cdc
DTO suffix .dto.ts, validasi class-validator

Flutter

Area Konvensi
Screen *_screen.dart
API client *_api.dart di lib/services/
Model lib/models/ — mirror field API snake_case → Dart

Dokumen terkait