BUSINESS REQUIREMENT DOCUMENT (BRD)
eProcureMENT & E-TENDER MANAGEMENT PLATFORM
Document Version: 1.4.23 Document Status: Blueprint terbit — rilis SKT → pemenang + SPK Date: 19 September 2026 Document Type: Business Requirements Document (BRD)
1. Document Control
| Item | Detail |
|---|---|
| Document | Business Requirement Document |
| Product | eProcurement & E-Tender Management Platform (eProcure / CGS eProcure) |
| Version | 1.4.23 |
| Status | Blueprint terbit: rilis SKT → pemenang + SPK |
| Prepared For | Organization / Enterprise Procurement |
| Prepared By | Product & Engineering Team |
| Date | 19 September 2026 |
| Verifikasi | Kriteria penerimaan §52 · GATE di PHASE1_JOURNEY_CHECKLIST.md |
1.1 Purpose
Dokumen ini mendefinisikan kebutuhan bisnis, ruang lingkup, proses, aktor, modul, aturan, integrasi, pelaporan, dan keamanan platform eProcure.
Aplikasi mencakup pengadaan dari kualifikasi vendor (SKT) hingga tender, evaluasi, award, dan SPK/kontrak — dengan portal internal dan portal vendor, RBAC, serta audit trail. Request kebutuhan ke Head dilakukan di luar platform. Purchase Request in-app, PO, delivery, invoice, pembayaran, dan kinerja vendor adalah gelombang produk berikutnya. Lingkup rilis ada di §1.5.
1.2 Changelog
| Version | Date | Summary |
|---|---|---|
| 1.0 | 11 Aug 2026 | Draft awal vision & module coverage |
| 1.1 | 11 Aug 2026 | Pembekuan asumsi produk, sinkronisasi scope vs fase, FR MVP, aturan kritis (deadline/sealed bid/exception), NFR load, DoD Phase 1 |
| 1.3 | 20 Aug 2026 | Dokumen sistem siap pakai; tautan katalog API |
| 1.4 | 21 Aug 2026 | Sinkron as-built: review dokumen per-file (VEN-DOC), SKT (VEN-SKT), halaman Panduan DoD/SOP per role; status registrasi verified; catatan Finance/Legal |
| 1.4.1 | 12 Sep 2026 | Satu BRD: draft BRD_Enterprise_e-Tender_BUMN_v1.0 ditarik; backlog evidence BUMN di BUMN_DIGITALISASI_CHECKLIST.md |
| 1.4.2 | 12 Sep 2026 | Nama berkas dipendekkan: BRD.md, TRD.md, API.md, SOW.md, USER_JOURNEY.md, ENGINEERING.md |
| 1.4.3 | 12 Sep 2026 | Peta dokumen = kotak SDLC; UI/UX design disiapkan terpisah |
| 1.4.4 | 12 Sep 2026 | Dokumen produk dipindah ke folder doc/ |
| 1.4.5 | 12 Sep 2026 | Event bertanggal = hadir + BA milik event; timeline Aanwijzing 4 langkah (hadir = #1); Penawaran 7 langkah; katalog vendor filter di sidebar; Lihat/Preview PDF = iframe; hasil kalah/gugur + catatan panitia; pagu boleh diumumkan, HPS tetap rahasia |
| 1.4.6 | 12 Sep 2026 | Lingkup rilis sampai penetapan pemenang + terbit SPK; PR/PO/invoice/pembayaran = gelombang berikutnya |
| 1.4.7 | 12 Sep 2026 | Target unit besar: roster per tender (Maker / Checker multi / Ketua / Approver multi), bisa diganti, history wajib |
| 1.4.8 | 12 Sep 2026 | §1.5 memisah rilis SPK, roster Head, dan gelombang PO/invoice; USER_JOURNEY 1.3 |
| 1.4.9 | 12 Sep 2026 | Request pemilik pekerjaan ke Head di luar platform; sistem mulai saat Head buka paket + assign roster. Role operasional dicatat di USER_JOURNEY 1.4 |
| 1.4.10 | 12 Sep 2026 | GATE: Approver publish hanya setelah semua Checker aktif approve. Sampul finansial: hanya Ketua/petugas opening; User/teknis tidak lihat harga |
| 1.4.11 | 12 Sep 2026 | BA (aanwijzing + pembukaan): TTD 3 panitia (Ketua, Sekretaris, Divisi Pemilik Project) lalu PIC vendor peserta. Slot Sekretaris di roster |
| 1.4.12 | 12 Sep 2026 | Kunci: RBAC 10 role seed cukup; roster = assignment, bukan role baru. Lihat USER_JOURNEY “Keputusan terkunci” |
| 1.4.13 | 12 Sep 2026 | Roster per tender + gerbang publish (Checker → Ketua → Approver). Env EPROC_TENDER_ROSTER |
| 1.4.14 | 12 Sep 2026 | PIC registrasi vendor ditunjuk Head; Checker berkas hingga terbit SKT/TDR (dilanjutkan 1.4.15) |
| 1.4.15 | 12 Sep 2026 | Desk rekanan di kode (EPROC_VENDOR_DESK): Head assign PIC / Checker berkas / Approver SKT; ganti = history; review + catatan revisi; terbit SKT gated |
| 1.4.16 | 13 Sep 2026 | Kunci onboarding vendor: verifikasi email sebelum tulis; draft/revisi = form langsung; kategori dari master; FR VEN-015 desk vs VEN-017 katalog dipisah |
| 1.4.17 | 14 Sep 2026 | Identitas perusahaan: bentuk badan, skala, jenis kegiatan, negara/provinsi, blok-nomor, kode pos, fax. Bidang usaha = kategori kualifikasi. Bukan alur pengajuan TDR pihak ketiga |
| 1.4.18 | 14 Sep 2026 | Keuangan vendor: form neraca + laba rugi 3 tahun (past performance) selain unggah scan/PDF |
| 1.4.19 | 19 Sep 2026 | Head saja yang buka paket + wajib tunjuk panitia; Maker isi TOR; Publish = Head atau Approver publish. Harga setelah unseal: Ketua/Checker/eval komersial/Approver pemenang/Head/Auditor. Situs publik selaras alur SKT→SPK |
| 1.4.20 | 19 Sep 2026 | Satu flowchart mermaid di BRD.md §1.5 (peta halaman + journey SKT→SPK). /brd merender diagram dari dokumen ini |
| 1.4.21 | 19 Sep 2026 | Mermaid di lifecycle, vendor, tender, award, SoD, state machine, dan proses bisnis (§4, §10, §11, §13, §42, §47) |
| 1.4.22 | 19 Sep 2026 | SKT: banner UI H-90…H-7 / kadaluarsa (bukan SKT sementara); VEN-014a |
| 1.4.23 | 19 Sep 2026 | Blueprint terbit: §1.5 dan lampiran menu tanpa bahasa demo atau UI tersembunyi; rilis = SKT→SPK, fulfillment = gelombang berikutnya |
Daftar Isi
- Document Control & Product Baseline
- Executive Summary
- Product Vision
- Product Positioning
- Business Objectives
- Scope
- Stakeholders
- User Roles
- Organization Model
- Procurement Lifecycle
- Module Requirements
- Business Rules
- Segregation of Duties
- Conflict of Interest
- Risk Management
- Vendor Performance
- Integrations
- API Requirements
- Non-Functional Requirements
- Data Model High Level
- High-Level Relationship
- Status Management
- User Experience
- Search & Filter
- Approval Engine
- SLA Management
- Notification Rules
- Audit & Compliance Evidence
- Security Architecture Principles
- Disaster Recovery
- Cakupan Sistem
- MVP Acceptance Criteria
- Success Criteria
- Risks
- Key Governance Principles
- Recommended Product Architecture
- Recommended Technology Direction
- Tahapan di Dalam Sistem
- Recommended Product Modules
- Final Business Process
- Conclusion
- Phase 1 Functional Requirements
- Exception & Alternate Flows
- Sealed Bid & Sensitive Data Requirements
- State Machines
- Permission Matrix
- Non-Functional Targets & Load Assumptions
- Data Retention, Privacy & Localization
- Integrasi yang Dikonfigurasi
- Observability & Operability
- Compliance Evidence Pack
- Definition of Done — Phase 1
- Konfigurasi Organisasi
- Appendix A — Phase 1 Internal Portal Menu
- Appendix B — Vendor Portal Menu
- Appendix C — Operasi Harian
- Appendix D — Traceability
- Appendix E — Dokumen Terkait
Catatan: Nomor di atas adalah urutan baca dokumen. Penomoran heading asli dipertahankan di bagian isi untuk menjaga referensi lintas dokumen.
1.3 How to Use This Document
| Layer | Sumber |
|---|---|
| Proses & aturan bisnis | Dokumen ini — bacaan publik: /brd |
| Sistem yang berjalan | §1.5, §6.3, §33–§34 |
| Langkah / GATE | PHASE1_JOURNEY_CHECKLIST.md |
| Backlog BUMN / evidence | BUMN_DIGITALISASI_CHECKLIST.md (bukan pengganti Phase 1) |
| DoD / SOP per role (in-app) | Internal /guides · Vendor /vendor/guides (tab DoD + SOP) |
| Alur per peran | USER_JOURNEY.md — bacaan publik: /alur |
| Convention kode | ENGINEERING.md |
| Desain teknis | TRD.md |
| Lingkup operasional | SOW.md |
| API REST | API.md |
Ini satu-satunya BRD. Jika ada bentrok dengan checklist atau dokumen lain, §1.5 menjelaskan sistem yang dipakai.
UI/UX design bukan bagian paket ini; disiapkan terpisah. Jangan menambah FSD.md / SRS.md — FR bisnis ada di dokumen ini (§11).
BUSINESS
│
▼
doc/BRD.md aturan + FR (FSD/SRS bisnis)
│
├── doc/BUMN_DIGITALISASI_CHECKLIST.md regulatory / policy (backlog evidence)
└── doc/USER_JOURNEY.md business process (bukan BPMN formal)
│
▼
doc/TRD.md HLD + security operasi
├── doc/API.md
├── doc/ENGINEERING.md convention development
└── backend/database/migrations ERD hidup
│
▼
DEVELOPMENT
│
▼
doc/PHASE1_JOURNEY_CHECKLIST.md SIT + UAT + GATE
doc/SIT_VENDOR_SKT_SPK.md skenario: vendor → SKT/TDR → SPK
│
▼
doc/SOW.md deploy · produksi · handover
| Kotak yang biasa diminta | Berkas (dari root repo) | Jangan |
|---|---|---|
| BRD / FSD / SRS bisnis | doc/BRD.md | File FSD atau SRS terpisah |
| Regulatory / policy | doc/BUMN_DIGITALISASI_CHECKLIST.md | Menjadikannya gerbang sebelum coding |
| Business process / BPMN | doc/USER_JOURNEY.md | BPMN formal kecuali kontrak minta |
| HLD | doc/TRD.md | |
| API | doc/API.md | |
| Security | doc/TRD.md §11 + NFR di BRD | Dokumen security keempat |
| ERD | migrasi Laravel | File ERD terpisah |
| SIT / UAT | doc/PHASE1_JOURNEY_CHECKLIST.md + doc/SIT_VENDOR_SKT_SPK.md | Paket SIT Word terpisah |
| Deploy / handover | doc/SOW.md | |
| UX / UI Design | disiapkan terpisah | — |
1.4 Product Baseline Decisions (Frozen for Phase 1)
Keputusan berikut dianggap baseline kecuali diganti tertulis oleh stakeholder:
| ID | Decision | Baseline |
|---|---|---|
| DEC-001 | Segmen | Pengadaan enterprise / aturan internal (bukan LPSE/LKPP). |
| DEC-002 | Tenancy | Satu organisasi per instalasi, multi unit/departemen. |
| DEC-003 | Portal | Portal internal + portal vendor, satu API. |
| DEC-004 | Locale | UI Indonesia (primer) + English; IDR; timezone Asia/Jakarta. |
| DEC-005 | Auth | Akun lokal, verifikasi email, reset password, token Sanctum, MFA TOTP, SSO/OIDC (konfigurasi). |
| DEC-006 | Integrasi | Email (SMTP), penyimpanan berkas, pemindai unggahan (hook). |
| DEC-007 | PR | Request pemilik pekerjaan ke Head di luar platform. Tender dibuka Head di sistem. Purchase Request in-app = gelombang berikutnya, bukan gerbang rilis ini. |
| DEC-008 | Pasca-award | Rilis ini: Award → terbit SPK. Gelombang berikutnya: jaminan lanjutan, kontrak aktif, addendum, PO, delivery, invoice, pembayaran, kinerja. Sanggah / SPPBJ / e-sign tercatat sebagai backlog, bukan bagian rilis ini. |
| DEC-010 | Sealed bid | Nilai komersial tidak terbaca pihak tak berwenang sebelum opening resmi. |
| DEC-011 | Jam | Waktu server; tampilan WIB. |
| DEC-012 | Kategori | Pohon kategori dikelola admin (acuan KBLI/OSS opsional). |
| DEC-013 | SKT | Vendor ikut lelang hanya dengan SKT aktif (Surat Keterangan Terdaftar) setelah dokumen wajib di-approve. |
1.5 Lingkup produk yang diterbitkan
Alur per peran: USER_JOURNEY.md. GATE: PHASE1_JOURNEY_CHECKLIST.md.
Jenis tender: Open, Limited, RFQ.
Peta alur
Rilis ini menutup di SPK. HPS tidak ke publik.
flowchart TD Home["Home /"] --> Portal["Portal /portal"] Home --> Brd["BRD /brd"] Home --> VLogin["Login vendor /vendor/login"] Home --> SLogin["Login staf /login"] VLogin --> Register["Daftar /register"] Register --> Company["Perusahaan /vendor/company"] Company --> Desk["Review desk /vendors"] Desk --> Skt["Terbit SKT"] Skt --> VTenders["Tender vendor /vendor/tenders"] SLogin --> Open["Buka paket /tenders/new"] Open --> Fill["Maker isi TOR"] Fill --> Publish["Checker → Ketua → Approver → Publish"] Publish --> VTenders VTenders --> Aanw["Aanwijzing + hadir"] Aanw --> Bid["3 sampul + receipt"] Bid --> Opening["Pembukaan + BA"] Opening --> Eval["Evaluasi /evaluations"] Eval --> Award["Award /awards"] Award --> Spk["SPK /contracts"] Spk --> VSpk["Vendor lihat SPK /vendor/contracts"]
1.5.1 Rilis ini (SKT → SPK)
Platform yang diterbitkan mencakup sampai penetapan pemenang + terbit SPK.
- identitas, peran, izin (RBAC) — 10 peran standar; roster/desk = assignment, bukan peran baru;
- master organisasi dan katalog kategori kualifikasi (wajib tersedia di portal vendor);
- vendor: daftar → verifikasi email → form lengkapi (draft/revisi, bukan mode baca) → submit → desk rekanan → review + catatan → SKT;
- tender: Head buka paket + wajib tunjuk Maker / Checker / Ketua / Sekretaris / Approver publish; Maker isi TOR/jadwal/dokumen; Checker → Ketua → Approver; Publish hanya Head atau slot Approver publish (bukan Maker / staf di luar roster);
- dokumen, klarifikasi, bid tersegel, opening (hadir + BA milik sesi), evaluasi, award (SoD);
- harga setelah unseal: Ketua, Checker, evaluator komersial, Approver pemenang, Head, Auditor — bukan Maker / evaluator teknis;
- kontrak / SPK;
- portal vendor: tender + lihat SPK jika menang;
- dashboard, laporan, audit trail, notifikasi.
Purchase Request in-app, PO, invoice, pembayaran, dan kinerja vendor bukan menu rilis ini — lihat §1.5.3.
GATE email vendor: simpan profil, unggah dokumen, submit registrasi, dan ikut tender ditolak sampai email terverifikasi.
GATE SKT: ikut lelang / bid ditolak tanpa SKT aktif (atau kadaluarsa / vendor non-aktif).
Pengingat deadline berjalan lewat penjadwal sistem.
1.5.2 Roster Head
Untuk divisi procurement banyak orang / banyak tender, aturan rilis ini:
- Pemilik pekerjaan mengirim data kebutuhan ke Head / Manager Procurement di luar platform (bukan menu PR).
- Head / Manager mereview (HPS, metode, syarat), membuka paket di sistem, lalu wajib assign Maker, Checker (banyak), Ketua, Sekretaris, Approver publish (banyak) pada langkah yang sama.
- Tender review → semua Checker aktif approve dulu → Ketua → Approver publish → Publish (Head atau slot Approver publish). Approver publish ≠ Maker. Approver tidak boleh mendahului Checker.
- Checker / Approver / Maker / Ketua boleh diganti (mis. pindah divisi). Assignment lama tidak dihapus: waktu berakhir, alasan, pengganti. History wajib.
- Setelah gerbang Checker lulus: salah satu Approver aktif boleh publish. Checker tidak “salah satu saja” — semua Checker aktif wajib approve.
- Setelah publish: pemilik pekerjaan (evaluator teknis yang di-assign) cek teknis; penawaran/harga hanya setelah opening resmi. Buka sampul finansial: Ketua panitia (atau Head). User/evaluator teknis tidak melihat angka atau file harga. BA ditandatangani Ketua, Sekretaris, Divisi Pemilik Project, lalu PIC vendor peserta. TTD pemilik project = saksi acara, bukan hak buka harga. Pemenang mendapat SPK.
Katalog peran operasional: USER_JOURNEY.md §1. PDF BA memakai nama Ketua/Sekretaris dari roster. Situs publik (/ /fitur /portal /brd /alur) menjelaskan alur SKT → SPK, tanpa HPS.
1.5.3 Gelombang berikutnya (setelah SPK)
PO, delivery, invoice, pembayaran, dan kinerja vendor merampungkan siklus sampai pembayaran. Request pemilik pekerjaan tetap di luar platform sampai modul PR in-app disepakati. Sanggah, SPPBJ, dan e-sign/TTE tercatat di BUMN_DIGITALISASI_CHECKLIST.md — bukan pengganti gerbang rilis ini.
2. Executive Summary
2.1 Latar Belakang
Proses pengadaan pada banyak organisasi masih menghadapi beberapa permasalahan:
- proses tender dilakukan melalui email dan dokumen terpisah;
- data vendor tidak terpusat;
- dokumen sulit dilacak;
- proses approval bergantung pada komunikasi manual;
- evaluasi vendor tidak terdokumentasi secara konsisten;
- risiko konflik kepentingan dan manipulasi proses;
- sulit melakukan audit terhadap perubahan data;
- monitoring tender dan procurement tidak real-time;
- laporan manajemen membutuhkan proses rekap manual.
Platform eProcurement & E-Tender Management dibangun untuk menyediakan satu sistem terintegrasi yang memungkinkan proses pengadaan dilakukan secara digital, terstruktur, transparan, terdokumentasi, dan dapat diaudit.
2.2 Tujuan Bisnis
Tujuan utama platform:
- Digitalisasi proses pengadaan.
- Mempercepat siklus procurement.
- Meningkatkan transparansi dan akuntabilitas.
- Memusatkan data vendor.
- Mengurangi proses manual.
- Meningkatkan kualitas evaluasi tender.
- Memastikan seluruh aktivitas memiliki audit trail.
- Meningkatkan kontrol terhadap dokumen dan informasi sensitif.
- Menyediakan dashboard dan laporan manajemen.
- Menjadi fondasi integrasi dengan ERP, finance, legal, dan sistem perusahaan lainnya.
3. Product Vision
Menjadi platform pengadaan digital yang aman, transparan, terukur, dan terintegrasi untuk mengelola proses procurement dari planning hingga contract dan payment.
4. Product Positioning
Produk dikategorikan sebagai:
eProcurement Platform
dengan:
E-Tendering sebagai salah satu modul inti.
Cakupan proses:
flowchart TD Plan["Planning"] --> PR["Purchase Request"] PR --> Qual["Vendor / SKT"] Qual --> Create["Tender"] Create --> Pub["Publish"] Pub --> Join["Partisipasi"] Join --> QA["Klarifikasi"] QA --> Bid["Bid"] Bid --> Open["Pembukaan"] Open --> Tech["Evaluasi teknis"] Tech --> Comm["Evaluasi komersial"] Comm --> Award["Award"] Award --> Spk["Kontrak / SPK"] Spk --> Next["PO / Invoice / Pembayaran — gelombang berikutnya"]
5. Business Objectives
5.1 Strategic Objectives
| Objective | Description |
|---|---|
| Digital Procurement | Mengubah proses manual menjadi digital |
| Transparency | Menjamin proses dapat ditelusuri |
| Governance | Menerapkan approval, segregation of duties, dan audit |
| Efficiency | Mengurangi waktu administrasi |
| Cost Control | Meningkatkan kontrol terhadap nilai pengadaan |
| Vendor Governance | Mengelola vendor secara terstruktur |
| Data Driven | Menyediakan procurement analytics |
| Compliance | Mendukung kebijakan dan regulasi organisasi |
5.2 Business KPIs
Target KPI dapat dikonfigurasi berdasarkan organisasi.
| KPI | Contoh Target |
|---|---|
| Procurement cycle time | Turun 20–40% |
| Manual process | Turun 50%+ |
| Digital tender adoption | >90% |
| Vendor participation | Meningkat |
| Tender completion rate | >95% |
| Audit traceability | 100% |
| Approval SLA compliance | >90% |
| Procurement savings | Terukur per tender |
6. Scope
6.1 Full Product Scope (Product Backlog)
Cakupan produk lengkap (bukan janji satu rilis):
Core platform
| Module / Area | Scope |
|---|---|
| Organization Management | — |
| User & Role Management | — |
| Procurement Planning | — |
| Purchase Request | — |
| Vendor Registration / Qualification / Management | — |
| Tender Management | publication, invitation, participation |
| Clarification / Q&A | — |
| Bid Submission / Opening | — |
| Technical & Commercial Evaluation | — |
| Tender Ranking | — |
| Approval Workflow | — |
| Award Management | — |
| Contract / PO / Fulfillment / Invoice / Payment Tracking | — |
| Document Management | — |
| Notification | — |
| Audit Trail | — |
| Dashboard & Reporting | — |
| System Administration | — |
6.2 Out of Scope (all phases unless separately contracted)
| No. | Out of Scope |
|---|---|
| 1 | full accounting / GL / payroll |
| 2 | inventory management penuh |
| 3 | banking core / payment gateway settlement |
| 4 | tax filing system |
| 5 | sertifikasi regulasi pemerintah (LPSE/LKPP) sebagai produk tersertifikasi |
| 6 | blockchain notarization (kecuali diminta terpisah) |
6.3 Cakupan aplikasi
Rilis terbit: §1.5.1. Gelombang berikutnya: §1.5.3.
| Area | Isi |
|---|---|
| Inti tender (rilis ini) | Auth, org, RBAC, vendor/SKT, tender, dokumen, klarifikasi, bid tersegel, opening, evaluasi, ranking, approval, award, notifikasi, audit, dashboard |
| Pasca-award (rilis ini) | Kontrak / SPK, laporan, MFA, SSO/OIDC |
| Gelombang berikutnya | Purchase Request in-app, PO, delivery, invoice, pembayaran, kinerja vendor |
7. Stakeholders
| Stakeholder | Responsibility |
|---|---|
| Management | Strategic approval dan oversight |
| Procurement | Mengelola proses procurement |
| Procurement Committee | Evaluasi dan rekomendasi |
| Requester / User Department | Mengajukan kebutuhan |
| Technical Evaluator | Evaluasi teknis |
| Commercial Evaluator | Evaluasi komersial |
| Finance | Budget dan pembayaran (bukan peran terpisah di katalog; wewenang lewat Approver / Procurement + permission terkait) |
| Legal | Contract dan legal review (bukan peran terpisah di katalog; wewenang lewat Approver / Procurement Manager + permission kontrak) |
| Vendor / Supplier | Registrasi, SKT, dan submit bid |
| Auditor | Audit dan monitoring |
| System Administrator | Konfigurasi sistem |
| IT / Security | Infrastruktur dan keamanan |
8. User Roles
Alur kerja per peran (flowchart): USER_JOURNEY.md.
Request User ke Head di luar platform. Peran operasional = slot roster (bukan peran baru): Head/Manager, Maker, Checker (multi), Ketua, Sekretaris, Approver publish (multi), Approver pemenang, evaluator teknis = pemilik pekerjaan. Ganti petugas + history wajib. Lihat
USER_JOURNEY.md§1.
8.1 Internal Roles
Super Administrator
Hak:
- seluruh konfigurasi;
- user management;
- role management;
- organization management;
- system configuration;
- audit access.
Procurement Admin
- mengisi paket sebagai Maker (TOR, jadwal, dokumen) setelah Head menunjuk;
- mengelola vendor (jika di-assign desk);
- mengelola dokumen dan jadwal paket yang ditugaskan;
- mengelola clarification;
- tidak membuka paket sendiri; tidak menekan Publish (kecuali di-assign slot Approver — default bukan).
Procurement Manager
- membuka paket dan menunjuk panitia;
- approval publish (setelah gerbang Checker → Ketua → Approver);
- monitoring;
- tender review;
- reporting.
Requester
- membuat procurement request;
- melihat status request;
- memberikan requirement.
Technical Evaluator
- melakukan technical evaluation;
- memberikan score;
- memberikan komentar.
Commercial Evaluator
- melakukan commercial evaluation;
- membandingkan harga;
- memberikan score.
Finance
- budget verification;
- PO;
- invoice;
- payment status.
Tidak ada peran
financeterpisah di katalog. Fungsi dijalankan via permission pada Approver / Procurement Admin / Manager. Peran terpisah = change request. PO, invoice, dan pembayaran adalah gelombang berikutnya (§1.5.3). Menu rilis ini: kontrak / SPK.
Legal
- legal review;
- contract review;
- amendment.
Tidak ada peran
legalterpisah di katalog. Fungsi kontrak via permission pada Admin / Manager / Approver.
Approver / Management
- approval;
- rejection;
- return for revision.
Auditor
- read-only;
- audit trail;
- report;
- evidence.
Auditor memakai akses vendor read-only. Tidak boleh verify/reject registrasi vendor.
8.2 External Role
Vendor Admin
- registrasi & company profile (kategori, bank, pengalaman);
- upload dokumen legal/compliance;
- unduh SKT setelah terbit;
- user management (
vendors.users.manage); - tender participation, clarification, bid + receipt;
- pasca-award rilis ini: lihat SPK jika menang; PO / invoice / kinerja = gelombang berikutnya.
Vendor User
- melihat profil/SKT perusahaan (tanpa kelola Tim pengguna);
- melihat tender;
- download dokumen;
- clarification;
- bid submission + receipt;
- pasca-award rilis ini: lihat SPK (bila diizinkan permission).
9. Organization Model
Platform harus mendukung struktur:
Organization
├── Business Unit
│ ├── Department
│ │ ├── User
│ │ └── Cost Center
│ └── Location
└── Procurement Category
9.1 Procurement Category Tree (spesialisasi pekerjaan)
Kategori pengadaan bukan daftar flat tetap di kode. Harus berupa pohon yang dikelola Admin:
Category (root)
└── Sub-category
└── Sub-sub-category (opsional, depth fleksibel)
Aturan bisnis:
- Siapa mengisi: Super Admin / Proc Admin (master data), sesuai kebutuhan organisasi.
- Acuan isi: pengkategorian pekerjaan organisasi, dapat diselaraskan dengan regulasi OSS / KBLI (kode eksternal opsional per node). Sistem tidak mengunci satu skema KBLI nasional di kode aplikasi — admin yang menyesuaikan.
- Vendor: memilih satu atau lebih node kualifikasi (disarankan sampai leaf) saat registrasi; dokumen syarat dapat berbeda per cabang.
- Tender: menetapkan kategori paket; undangan / visibility vendor mengikuti kecocokan kualifikasi.
- Implementasi data:
parent_id(adjacency list); opsionalexternal_code(KBLI/OSS),path/leveluntuk query.
Kategori dikelola di master data (pohon parent_id). Vendor memilih kualifikasi; tender mengacu kategori paket.
Opsional:
Holding
├── Company A
├── Company B
└── Company C
10. Procurement Lifecycle
10.1 Standard Flow
flowchart TD Need["Need"] --> Head["Head buka paket"] Head --> Tender["Tender"] Tender --> Bid["Bid"] Bid --> Eval["Evaluasi"] Eval --> Award["Award"] Award --> Spk["SPK"] Spk --> Next["PO / Fulfillment / Invoice / Pembayaran — gelombang berikutnya"]
Lifecycle produk lengkap. Rilis ini berhenti di Award → SPK. PR in-app dan langkah setelah SPK = gelombang berikutnya, lihat §1.5.
11. Module Requirements
11.1 Identity & Access Management
Functional Requirements
Priority:
Must= wajib untuk baseline;Should= direkomendasikan dan dapat bergantung pada konfigurasi/kebijakan organisasi.
| ID | Requirement | Priority |
|---|---|---|
| IAM-001 | User login | Must |
| IAM-002 | Logout | Must |
| IAM-003 | Password reset | Must |
| IAM-004 | RBAC | Must |
| IAM-005 | MFA | Should |
| IAM-006 | Session management | Must |
| IAM-007 | Login history | Must |
| IAM-008 | Account lockout | Must |
| IAM-009 | User activation/deactivation | Must |
| IAM-010 | Permission matrix | Must |
11.2 Organization Management
Fitur:
- company;
- business unit;
- department;
- branch;
- location;
- cost center;
- organizational hierarchy.
Requirement:
ORG-001 Sistem harus dapat menyimpan struktur organisasi.
ORG-002 User harus dapat dikaitkan dengan unit organisasi.
ORG-003 Approval dapat menggunakan struktur organisasi.
11.3 Procurement Planning
Fitur:
- Annual Procurement Plan;
- procurement category;
- estimated budget;
- target date;
- requester;
- department;
- priority;
- procurement method.
Status:
Draft
→ Submitted
→ Review
→ Approved
→ Rejected
→ Cancelled
11.4 Purchase Request
Fitur:
- request number;
- requester;
- department;
- item/service;
- quantity;
- specification;
- estimated price;
- budget;
- required date;
- attachment;
- justification.
Approval (contoh aliran PR in-app — gelombang berikutnya):
flowchart TD Req["Requester"] --> Dept["Department Head"] Dept --> Fin["Finance / Budget"] Fin --> Proc["Procurement"]
11.5 Vendor Management
Vendor lifecycle (rilis ini):
flowchart TD Draft["Draft / Registered"] --> Submit["Submitted"] Submit --> Review["Review per file"] Review -->|tolak| Rev["Revision"] Rev --> Submit Review --> Skt["Verified + SKT"] Skt --> Active["Active"] Active --> Hold["Suspended / Blacklisted"]
SKT (Surat Keterangan Terdaftar): bukti resmi bahwa vendor terdaftar dan boleh ikut lelang. Diterbitkan internal (Terbitkan SKT) setelah semua dokumen wajib berstatus approved. Sistem mengisi nomor SKT + masa berlaku (bulan dikonfigurasi, default 12). Vendor mengunduh PDF SKT di portal. Perpanjang SKT hanya oleh akun vendor pemilik perusahaan di portal (masa berlaku baru otomatis, tanpa input tanggal). Internal Head/PIC/Approver tidak menerbitkan perpanjangan. Tidak ada SKT sementara. UI menampilkan masa berlaku + kewajiban perpanjangan (H-90 / H-60 / H-30 / H-7, lalu kadaluarsa): ikut lelang baru diblokir sampai vendor memperpanjang. Bid yang sudah masuk sebelum kadaluarsa tetap diproses.
Data vendor:
| Data | Keterangan |
|---|---|
| company name | Nama perusahaan (legal_name) + nama dagang |
| legal form | Bentuk perusahaan (PT, CV, …) — terkunci setelah SKT |
| ownership / badan usaha | Swasta, BUMN, … — terkunci setelah SKT |
| business scale | Kegiatan usaha: Mikro / Kecil / Menengah / Besar |
| activity type | Jenis kegiatan: Barang / Jasa / keduanya |
| address | Negara, provinsi, kota, alamat, blok/nomor, kode pos |
| contact | Telepon kantor, fax (opsional), email perusahaan |
| PIC | Nama, email, telepon PIC |
| tax information | NPWP |
| business license | NIB |
| bank account | — |
| category | Bidang / sub bidang / jenis usaha = katalog kualifikasi |
| product/service | — |
| experience | — |
| financial information | Form neraca + laba rugi 3 tahun (past performance) + unggah scan/PDF neraca / laba_rugi |
| certificates / dokumen kualifikasi | per tipe + status review |
| SKT number / issued_at / valid_until | — |
| compliance information | — |
11.6 Vendor Registration
Vendor harus dapat:
- membuat account;
- memverifikasi email (wajib sebelum simpan / unggah / submit / ikut tender);
- mengisi company profile pada form lengkapi (status
draft/revision/rejected— bukan mode baca + Edit/Download); - memilih kategori kualifikasi dari katalog master aktif (multi-select);
- upload legal documents (requirement mengikuti kategori);
- mengisi PIC;
- mengisi bank information;
- mengisi experience;
- submit registration (checklist kelengkapan: identitas → kategori → bank → keuangan → dokumen → pengalaman);
- setelah SKT terbit: unduh PDF SKT. Download profil perusahaan hanya setelah submit / SKT.
Sistem membuat status registrasi:
flowchart TD Draft["draft"] --> Submitted["submitted"] Submitted --> Review["review"] Review --> Revision["revision"] Revision --> Submitted Review --> Verified["verified + SKT"] Review --> Rejected["rejected"]
Desk rekanan: Head menunjuk PIC registrasi, Checker berkas, dan Approver SKT (bukan role baru). Petugas boleh diganti; assignment lama tidak dihapus. Hanya PIC/Checker (atau Head setelah PIC ditunjuk) yang mereview. Tolak berkas wajib catatan yang tampil ke vendor (mis. data keuangan salah unggah, mohon ganti). Terbitkan SKT (TDR) hanya Approver SKT, atau PIC jika Approver belum diisi, atau Head. Ditolak jika dokumen wajib belum semua approved.
Internal review dokumen per file (Preview / Approve / Tolak + catatan wajib saat tolak). Tolak dokumen dapat mengembalikan status ke revision. Jejak status (submit, revisi, ganti petugas, SKT) tercatat.
Peta peran dan slot: USER_JOURNEY.md “Keputusan terkunci”. Jangan menambah role Spatie untuk desk atau roster.
11.7 Vendor Qualification
Qualification memakai checklist dokumen per kategori:
- legal;
- administrative;
- financial;
- technical;
- experience;
- certification;
- compliance.
Setiap file punya status review: pending / approved / rejected (+ catatan).
Scoring kualifikasi dokumen:
Pass / Fail per dokumen wajib → prasyarat Terbitkan SKT
Scoring kinerja vendor pasca-award terpisah (modul performance).
11.8 Tender Management
Data tender:
| Data | Keterangan |
|---|---|
| tender number | — |
| title | — |
| description | — |
| category | — |
| procurement method | — |
| budget | — |
| HPS / owner estimate | — |
| location | — |
| scope | — |
| qualification | — |
| schedule | — |
| documents | — |
| evaluation method | — |
| committee | — |
| invited vendors | — |
Tender status:
flowchart TD Draft["draft"] --> Open["open / published"] Open --> Eval["evaluation"] Eval --> Appr["approval"] Appr --> Awarded["awarded"] Awarded --> Closed["closed"] Draft --> Cancel["cancelled"] Open --> Cancel
11.9 Tender Types
Jenis yang didukung:
- Open Tender;
- Limited Tender;
- Request for Quotation (RFQ).
11.10 Tender Package / Lot
Satu tender dapat memiliki beberapa lot.
Contoh:
Tender: IT Infrastructure
Lot 1 - Server
Lot 2 - Network
Lot 3 - Storage
Lot 4 - Security
Vendor dapat:
- mengikuti semua lot;
- mengikuti sebagian lot;
- memberikan penawaran per lot.
11.11 Tender Publication
Public information:
- tender number;
- title;
- category;
- location;
- deadline;
- qualification;
- procurement method;
- estimated value jika diperbolehkan.
Private information:
- confidential documents;
- HPS;
- internal evaluation;
- committee notes.
11.12 Tender Invitation
Procurement dapat memilih:
- seluruh qualified vendor;
- vendor tertentu;
- vendor berdasarkan category;
- vendor berdasarkan location;
- vendor berdasarkan qualification.
11.13 Tender Document
Dokumen dapat memiliki:
- version;
- upload date;
- uploader;
- classification;
- access rule;
- checksum;
- revision.
Contoh:
Tender Document v1
Addendum v2
Addendum v3
11.14 Clarification / Q&A
Fitur:
- question;
- answer;
- attachment;
- public/private flag;
- timestamp;
- deadline;
- notification.
Public clarification harus dapat diberikan kepada seluruh peserta apabila informasinya relevan untuk semua peserta.
11.15 Bid Submission
Bid terdiri dari:
| Bid Type | Field |
|---|---|
| Technical Bid | technical proposal |
| Technical Bid | methodology |
| Technical Bid | schedule |
| Technical Bid | experience |
| Technical Bid | personnel |
| Technical Bid | equipment |
| Technical Bid | organization |
| Technical Bid | certificates |
| Commercial Bid | unit price |
| Commercial Bid | quantity |
| Commercial Bid | subtotal |
| Commercial Bid | discount |
| Commercial Bid | tax |
| Commercial Bid | delivery |
| Commercial Bid | other costs |
| Commercial Bid | total price |
Sistem wajib:
- melakukan validation;
- memastikan required documents;
- mencatat timestamp;
- mengunci submission setelah deadline;
- menyediakan bukti submission.
11.16 Sealed Bid
Commercial bid harus dapat dikunci sampai waktu bid opening.
flowchart TD Before["Sebelum deadline — harga terkunci"] --> After["Setelah deadline — boleh dibuka"] After --> Unseal["Ketua / Head unseal"]
Procurement user yang tidak berwenang tidak boleh melihat harga sebelum bid opening.
11.17 Bid Opening
Bid opening harus menghasilkan:
- opening timestamp;
- list peserta;
- submission status;
- technical document status;
- commercial document status;
- bid value jika sudah dibuka;
- opening record.
11.18 Evaluation
Urutan GATE Phase 1:
flowchart TD
Open["Pembukaan"] --> CoI["CoI"]
CoI --> Check["Pass / Fail"]
Check --> Score["Skor teknis / komersial"]
Score --> Rec["Recommend per lot"]
Rec --> Lock["Ranking lock"]
Lock --> Dec{"Approver"}
Dec -->|approve| Award["Award + notify"]
Dec -->|reject atau return| ScoreEvaluation dapat menggunakan:
Pass / Fail
Requirement
→ Pass
→ Fail
Weighted Scoring
Contoh:
| Criterion | Weight |
|---|---|
| Experience | 20% |
| Technical | 30% |
| Methodology | 20% |
| Team | 15% |
| Schedule | 15% |
Combined Evaluation
Technical = 60%
Commercial = 40%
Formula:
Final Score =
(Technical Score × Technical Weight)
+
(Commercial Score × Commercial Weight)
11.19 Evaluation Independence
Technical evaluator tidak boleh mengubah commercial score.
Commercial evaluator tidak boleh mengubah technical score.
Setiap evaluator memiliki:
- assigned task;
- deadline;
- scoring form;
- comment;
- submission timestamp.
11.20 Evaluation Matrix
Sistem harus dapat membuat matrix:
| Vendor | Technical | Commercial | Final |
|---|---|---|---|
| Vendor A | 87 | 91 | 88.60 |
| Vendor B | 92 | 83 | 88.40 |
| Vendor C | 85 | 95 | 89.00 |
11.21 Tender Ranking
Sistem otomatis membuat ranking berdasarkan evaluation rule.
Ranking dapat:
- manual override dengan alasan;
- otomatis;
- locked setelah approval.
Setiap perubahan ranking harus tercatat dalam audit trail.
11.22 Approval Workflow
Workflow harus configurable.
Contoh (produk penuh; rilis ini memakai roster publish + SoD award):
flowchart TD Tender["Tender"] --> PM["Procurement Manager"] PM --> DH["Department Head"] DH --> Dir["Director"] Dir --> Mgmt["Management"]
Rule berdasarkan:
- value;
- category;
- organization;
- procurement method;
- risk level.
Action:
- Approve;
- Reject;
- Return;
- Request Revision;
- Delegate.
11.23 Award Management
Setelah evaluation:
flowchart TD Eval["Evaluasi"] --> Rec["Recommend per lot"] Rec --> Appr["Approver pemenang"] Appr -->|approve| Award["Award + notify menang/kalah"] Appr -->|reject atau return| Eval Award --> Spk["SPK"]
Award data:
- winner;
- lot;
- awarded value;
- reason;
- approval;
- award date.
11.24 Vendor Notification
Vendor mendapatkan:
- selected;
- unsuccessful;
- clarification;
- revision;
- additional document request.
11.25 Contract Management
Kontrak: nomor, vendor, tender/lot, nilai, periode, payment terms, notes, dan status lifecycle.
Contract data:
| Data | Keterangan |
|---|---|
| contract number | — |
| vendor | — |
| tender reference | — |
| PO reference | — |
| value | — |
| start date | — |
| end date | — |
| payment terms | — |
| SLA | — |
| milestones | — |
| retention | — |
| guarantee | — |
| penalty | — |
Contract status:
flowchart TD Draft["Draft"] --> Review["Review"] Review --> Ok["Approved"] Ok --> Active["Active"] Active --> Exp["Expired"] Active --> Term["Terminated"]
11.26 Contract Amendment
Mendukung:
- value amendment;
- scope amendment;
- date extension;
- clause amendment;
- vendor amendment.
Setiap amendment harus memiliki:
- reason;
- approval;
- effective date;
- document.
11.27 Purchase Order
PO dari kontrak aktif (bukan langsung dari award). Modul ini gelombang berikutnya (§1.5.3).
PO dibuat berdasarkan award/contract.
Data:
- PO number;
- vendor;
- item/service;
- quantity;
- price;
- tax;
- delivery;
- payment terms.
PO status:
Draft
Approved
Issued
Partially Fulfilled
Completed
Cancelled
11.28 Fulfillment
Untuk barang:
- shipment;
- delivery;
- receiving;
- quantity received;
- inspection;
- goods receipt.
Untuk jasa:
- milestone;
- progress;
- service acceptance;
- completion.
11.29 Invoice
Vendor dapat submit:
- invoice;
- tax invoice;
- supporting document;
- PO;
- delivery receipt;
- service acceptance.
Validation:
PO
+
Receipt
+
Invoice
=
Three-Way Match
11.30 Payment Tracking
Sistem tidak harus menjadi banking system.
Sistem mencatat:
- invoice approved;
- payment requested;
- payment processed;
- payment date;
- payment reference;
- payment status.
11.31 Document Management
| Document Category |
|---|
| vendor |
| tender |
| technical |
| commercial |
| evaluation |
| award |
| contract |
| PO |
| invoice |
| payment |
Requirement:
- versioning;
- access control;
- retention;
- download tracking;
- upload history;
- checksum;
- metadata.
11.32 Notification Center
Channels:
- Email;
- in-app;
- push;
- WhatsApp (optional).
Events:
- tender invitation;
- clarification;
- deadline;
- approval;
- award;
- contract;
- invoice;
- payment.
11.33 Dashboard
Procurement Dashboard
Metrics:
- active tender;
- upcoming tender;
- completed tender;
- total procurement value;
- savings;
- average cycle time;
- vendor participation.
Management Dashboard
- procurement spend;
- procurement by department;
- procurement by category;
- vendor concentration;
- savings;
- contract utilization;
- pending approvals.
Vendor Dashboard
- available tender;
- participated tender;
- active tender;
- submitted bids;
- award;
- contracts;
- invoices;
- payment status.
11.34 Reporting
Reports:
- Procurement Plan Report
- Purchase Request Report
- Tender Report
- Vendor Report
- Bid Participation Report
- Evaluation Report
- Award Report
- Contract Report
- PO Report
- Invoice Report
- Payment Report
- Savings Report
- Vendor Performance Report
- Audit Report
Export:
- PDF;
- Excel;
- CSV.
11.35 Audit Trail
Audit event harus mencatat:
| Field |
|---|
| user |
| role |
| timestamp |
| IP |
| action |
| entity |
| entity ID |
| old value |
| new value |
| reason |
| document |
| session/device bila tersedia |
Contoh:
User: procurement.manager
Action: APPROVE_TENDER
Tender: TR-2026-001
Timestamp: 2026-08-11 14:32:20
IP: x.x.x.x
Audit record tidak boleh dapat diubah melalui UI biasa.
12. Business Rules
BR-001 Tender Number
Nomor tender harus unik.
Format dapat dikonfigurasi:
TR/{YEAR}/{SEQUENCE}
Contoh:
TR/2026/0001
BR-002 Deadline
Vendor tidak dapat submit bid setelah deadline.
BR-003 Bid Lock
Commercial bid tidak dapat dilihat sebelum opening time.
BR-004 Submission
Setiap submission harus memiliki timestamp.
BR-005 Modification
Setelah deadline, vendor tidak dapat mengubah submission.
BR-006 Approval
User tidak boleh approve request yang dibuat sendiri apabila segregation of duties diterapkan.
BR-007 Evaluation
Evaluator hanya dapat mengakses tender yang ditugaskan.
BR-008 Audit
Perubahan data penting harus tercatat.
BR-009 Document
Dokumen confidential hanya dapat diakses role yang berwenang.
BR-010 Award
Award hanya dapat dibuat setelah evaluation selesai dan approval terpenuhi.
BR-011 Timezone & Clock
Semua deadline (clarification, bid submission, opening) dievaluasi terhadap server time. Storage timestamp dalam UTC; tampilan default Asia/Jakarta. Client clock diabaikan.
BR-012 Bid Submission Evidence
Setiap submit menghasilkan submission receipt (ID unik, hash dokumen, timestamp server, tender/lot, vendor) yang dapat diunduh vendor.
BR-013 Late Bid
Request yang mencapai server setelah deadline → ditolak (409/422), tercatat di audit sebagai late attempt (tanpa menyimpan isi commercial bila ditolak).
BR-014 Tender Cancellation
Tender dapat dibatalkan oleh role berwenang dengan alasan wajib. Status → CANCELLED. Vendor peserta wajib dinotifikasi. Data tetap teraudit; tidak hard-delete.
BR-015 Retender
Retender membuat tender baru yang mereferensikan tender sebelumnya (supersedesTenderId). Tender lama ditutup/dibatalkan sesuai rule; history tetap ada.
BR-016 Disqualification
Vendor peserta dapat didiskualifikasi pada tahap administrasi/teknis/komersial dengan alasan + evidence. Vendor mendapat notifikasi. Bid tetap tersimpan untuk audit tetapi tidak masuk ranking aktif.
BR-017 Ranking Override
Override ranking hanya oleh role berwenang, wajib alasan, wajib approval tambahan bila dikonfigurasi, dan selalu masuk audit (old rank → new rank).
BR-018 HPS Confidentiality
HPS / owner estimate hanya untuk role internal berwenang. Tidak boleh muncul di Vendor Portal atau dokumen publik.
Pagu anggaran (plafond) boleh diinformasikan ke peserta jika panitia memilih mengumumkannya. Bukan kewajiban setiap paket. HPS dan pagu tidak boleh disamakan: pagu = batas anggaran yang diumumkan; HPS = perkiraan sendiri untuk menilai kewajaran harga.
BR-019 Document Immutability after Deadline
Setelah bid deadline, file bid vendor bersifat immutable (tidak replace/delete oleh vendor). Addendum tender dari procurement mengikuti versioning resmi.
BR-020 Minimum Participants (configurable)
Untuk tipe tender tertentu, sistem dapat menegakkan jumlah peserta minimum sebelum opening/evaluation. Jika tidak terpenuhi → flag warning atau blok sesuai konfigurasi organisasi.
BR-021 One Active Bid per Vendor per Lot
Satu vendor hanya punya satu bid aktif per lot. Resubmit sebelum deadline menimpa versi sebelumnya dan mencatat versi/history.
BR-022 Soft Delete
Entity bisnis penting menggunakan soft-delete / status archive. Hard delete hanya untuk data draft milik sendiri atau oleh Super Admin dengan audit.
BR-023 Numbering
Nomor Tender, PR, Award, (dan Phase 2: Contract/PO/Invoice) unik per organization, format configurable, tidak dipakai ulang.
BR-024 Conflict of Interest Gate
Evaluator wajib menandatangani deklarasi CoI sebelum dapat submit score. Jika declared conflict → tidak dapat menilai vendor terkait sampai diganti.
BR-025 Currency
Phase 1: satu currency per tender (default IDR). Multi-currency = future.
13. Segregation of Duties
Sistem harus mencegah konflik kewenangan.
Contoh:
flowchart TD Req["Requester"] -.->|bukan| Ev["Evaluator"] Ev -.->|bukan| Ap["Approver"] Bid["Submit bid"] -.->|bukan| Open["Buka bid"] Open -.->|bukan| Final["Approve award"]
Maker ≠ Checker / Approver publish. Recommender ≠ Approver pemenang.
Rule dapat dikonfigurasi berdasarkan organisasi.
14. Conflict of Interest
Sistem dapat menyediakan declaration:
"Saya menyatakan tidak memiliki konflik kepentingan terhadap proses tender ini."
Data:
- evaluator;
- declaration;
- timestamp;
- status;
- disclosure.
Jika conflict ditemukan:
Declared
↓
Review
↓
Replacement Evaluator
15. Risk Management
Tender dapat memiliki risk score:
- Low;
- Medium;
- High;
- Critical.
| Parameter |
|---|
| procurement value |
| vendor risk |
| category risk |
| regulatory risk |
| operational risk |
Risk level dapat memengaruhi approval workflow.
16. Vendor Performance
Setelah contract selesai:
| Parameter |
|---|
| quality |
| delivery |
| service |
| compliance |
| communication |
| safety |
| documentation |
Score:
0–100
Vendor classification:
Excellent
Good
Fair
Poor
Critical
19. Integrations
Mandatory / Recommended
Untuk:
- registration;
- notification;
- approval;
- tender;
- award.
Object Storage
Untuk:
- tender documents;
- vendor documents;
- bid documents;
- contracts.
Authentication
Dapat mendukung:
- local account;
- SSO;
- OAuth/OIDC.
Optional
| Integration |
|---|
| ERP |
| Accounting |
| HR |
| Tax |
| Digital Signature |
| WhatsApp |
| Payment Gateway |
| BI/Data Warehouse |
20. API Requirements
Platform harus menyediakan REST API untuk integrasi.
Contoh:
/api/auth
/api/users
/api/organizations
/api/vendors
/api/vendor-qualifications
/api/procurement-plans
/api/purchase-requests
/api/tenders
/api/tenders/{id}/participants
/api/tenders/{id}/clarifications
/api/tenders/{id}/bids
/api/tenders/{id}/evaluations
/api/awards
/api/contracts
/api/purchase-orders
/api/invoices
/api/payments
/api/documents
/api/notifications
/api/audit-logs
/api/reports
API harus menggunakan:
| Capability |
|---|
| authentication |
| authorization |
| validation |
| pagination |
| filtering |
| sorting |
| rate limiting |
| consistent error response |
| API versioning |
21. Non-Functional Requirements
21.1 Performance
Target awal:
- page response API: p95 < 500 ms untuk operasi standar;
- dashboard: < 3 detik untuk dataset normal;
- file upload mendukung resumable/chunk upload untuk file besar;
- pagination wajib untuk data besar.
Target harus divalidasi melalui performance testing terhadap asumsi beban di §49.
21.2 Availability
Target awal:
- Production availability: 99.5% atau lebih sesuai SLA.
- Backup terjadwal.
- Monitoring dan alerting.
- Observability minimum mengikuti §52.
21.3 Scalability
Sistem harus dapat berkembang untuk:
- multiple organizations;
- thousands of vendors;
- large tender documents;
- concurrent bid submission;
- multiple active tenders.
21.4 Security
| Security Control |
|---|
| TLS/HTTPS |
| secure password hashing |
| RBAC |
| MFA |
| CSRF/XSS/SQL injection protection |
| rate limiting |
| secure headers |
| encrypted sensitive data |
| private file storage |
| malware scanning |
| audit logging |
| backup encryption |
21.5 Privacy
Data pribadi dan data perusahaan harus:
- memiliki access control;
- tidak ditampilkan kepada user yang tidak berwenang;
- memiliki retention policy;
- dapat dihapus/diarsipkan sesuai kebijakan organisasi dan kewajiban hukum.
22. Data Model High Level
Entity utama:
Organization
User
Role
Permission
Department
CostCenter
Vendor
VendorUser
VendorDocument
VendorQualification
VendorCategory
VendorPerformance
ProcurementPlan
PurchaseRequest
PurchaseRequestItem
Tender
TenderLot
TenderDocument
TenderParticipant
TenderInvitation
TenderClarification
Bid
BidDocument
BidItem
BidOpening
Evaluation
EvaluationCriteria
EvaluationScore
EvaluationCommittee
Approval
ApprovalStep
Award
AwardItem
Contract
ContractAmendment
PurchaseOrder
PurchaseOrderItem
Delivery
Receipt
Invoice
InvoiceItem
Payment
Notification
AuditLog
23. High-Level Relationship
Organization
├── Users
├── Departments
├── Vendors
└── Procurement Plans
Procurement Plan
└── Purchase Request
└── Tender
├── Lots
├── Documents
├── Participants
├── Clarifications
└── Bids
└── Evaluations
└── Award
└── Contract
└── PO
├── Delivery
└── Invoice
└── Payment
24. Status Management
Semua entity utama harus menggunakan state machine yang jelas.
Contoh Tender (normalized — lihat detail §47):
DRAFT
REVIEW
APPROVED
PUBLISHED
OPEN
CLARIFICATION
BID_SUBMISSION
SUBMISSION_CLOSED
BID_OPENING
EVALUATION
PENDING_APPROVAL
AWARDED
CLOSED
CANCELLED
CONTRACTED masuk Phase 2 setelah modul kontrak. Transisi status harus memiliki rule dan permission.
25. User Experience
Internal Portal
Menu:
Dashboard
Procurement
├── Procurement Plan
├── Purchase Request
├── Tenders
├── Evaluations
└── Awards
Vendors
├── Vendor List
├── Qualification
└── Performance
Contracts
├── Contracts
├── PO
└── Amendments
Finance
├── Invoice
└── Payment
Reports
Audit
Settings
Vendor Portal
Dashboard
Company Profile
Documents
Tender
├── Available
├── Participating
└── Completed
Clarification
Bid Submission
Award
Contract
Invoice
Payment
Notifications
26. Search & Filter
Data utama harus mendukung:
- keyword;
- status;
- date range;
- organization;
- category;
- vendor;
- value range;
- procurement method.
Contoh:
Tender
[ Search ]
Status: Active
Category: IT
Value: > Rp1 M
Date: Aug 2026
27. Approval Engine
Approval engine harus configurable tanpa perubahan source code untuk rule umum.
Contoh rule:
IF tender_value < 500M
THEN Procurement Manager
IF tender_value >= 500M AND < 5B
THEN Procurement Manager + Director
IF tender_value >= 5B
THEN Procurement Manager + Director + Board
Workflow juga dapat berdasarkan:
- department;
- category;
- risk;
- procurement method.
28. SLA Management
Setiap proses dapat memiliki SLA:
| Process | SLA |
|---|---|
| Vendor verification | 3 hari |
| Tender review | 2 hari |
| Clarification | 2 hari |
| Evaluation | 5 hari |
| Approval | 3 hari |
| Contract review | 5 hari |
Sistem harus memberikan:
- countdown;
- overdue status;
- reminder;
- escalation.
29. Notification Rules
Contoh:
Tender Published
→ Notify Qualified Vendors
Bid Deadline - 24 Hours
→ Reminder Vendor
Evaluation Assigned
→ Notify Evaluator
Approval Pending
→ Notify Approver
Approval Overdue
→ Escalation
30. Audit & Compliance Evidence
Untuk setiap tender, sistem harus dapat menghasilkan Tender Dossier:
Tender Dossier
├── Procurement Request
├── Approval
├── Tender Document
├── Addendum
├── Participant List
├── Clarification
├── Bid Submission Evidence
├── Bid Opening Record
├── Evaluation
├── Approval
├── Award
└── Contract
Tujuannya agar auditor dapat memperoleh seluruh evidence tender dari satu tempat.
31. Security Architecture Principles
Prinsip:
- Least privilege.
- Defense in depth.
- Segregation of duties.
- Zero trust untuk akses sensitif.
- Secure-by-default.
- Auditability.
- Encryption.
- Data minimization.
Dokumen bid harus menggunakan storage private dan authorization-based download.
32. Disaster Recovery
Minimum:
- automated backup;
- database backup;
- object storage backup;
- offsite backup;
- restore testing;
- disaster recovery procedure.
Parameter:
- RPO;
- RTO.
Contoh target:
RPO: ≤ 1 hour
RTO: ≤ 4 hours
Target final harus ditentukan berdasarkan SLA bisnis.
33. Cakupan sistem
Sumber: §6.3 dan §1.5.
Inti tender
Authentication & Session
Organization / Department / Cost Center (dasar)
User & Role & Permission Matrix
Vendor Registration + Email Verify + Document review (per-file Approve/Tolak)
Vendor SKT (Terbitkan / Perpanjang / PDF) + gate ikut lelang
Vendor List (Active / Suspended / Rejected / Verified)
Simplified Purchase Request (opsional → dapat dilink ke Tender)
Tender Management (Open / Limited / RFQ)
Tender Lots (dasar)
Tender Publication + Invitation
Tender Documents (version + ACL + checksum)
Clarification / Q&A (public/private)
Bid Submission (Technical + Commercial sealed)
Bid Opening (official record)
Evaluation (Pass/Fail + Weighted + Combined)
Evaluation Independence + Conflict of Interest declaration
Ranking (+ override beralasan + audit)
Configurable Approval (value-based minimal)
Award Management + Vendor notification
Email + In-app Notification
Immutable Audit Trail
Internal + Vendor Dashboard (dasar)
Document download tracking
System Admin: users, roles, master data, numbering, workflow rules
Panduan operasional in-app (DoD + SOP per role)
Pasca-award
Contract Management + Amendment
PO + Delivery / Service Acceptance
Invoice + Three-Way Match
Payment Status Tracking
Vendor Performance
Advanced Reporting / Export
SSO / MFA
34. MVP Acceptance Criteria
MVP dianggap berhasil apabila:
Vendor
- dapat registrasi;
- dapat melengkapi profil (termasuk kategori, bank, pengalaman);
- dapat upload dokumen wajib;
- dapat melihat status review dokumen (
pending/approved/rejected); - setelah SKT terbit: dapat unduh PDF SKT;
- dapat mengikuti tender hanya jika SKT aktif;
- dapat mengajukan pertanyaan;
- dapat submit bid;
- mendapatkan bukti submission (receipt PDF).
Procurement
- dapat review dokumen vendor (Preview / Approve / Tolak per file);
- dapat Terbitkan SKT (ditolak jika dokumen wajib belum approved);
- Perpanjang SKT hanya akun vendor pemilik di portal (bukan menu detail vendor internal);
- Head dapat membuka paket + menunjuk panitia; Maker dapat mengisi TOR/jadwal/dokumen;
- dapat menentukan peserta;
- dapat upload dokumen;
- dapat membuat jadwal;
- dapat mengelola clarification;
- dapat membuka bid sesuai jadwal;
- dapat melakukan evaluasi;
- dapat membuat ranking;
- dapat meminta approval;
- dapat menetapkan pemenang.
Governance
- semua action penting tercatat;
- role dan permission berjalan;
- commercial bid terlindungi sebelum opening;
- approval workflow berjalan;
- dokumen memiliki access control;
- DoD/SOP per role tersedia di halaman Panduan (
/guides,/vendor/guides).
Pasca-award
- award approved dapat dijadikan kontrak;
- panitia menerbitkan SPK dan dokumen pendukung; jaminan pelaksanaan (biasanya 5% nilai kontrak) punya batas, serah, dan terima sebelum kontrak berlaku;
- paket dokumen kontrak fleksibel: beberapa PDF, masing-masing nama + catatan (regulasi organisasi berbeda);
- addendum (nilai/tanggal/lingkup) pada kontrak aktif;
- kontrak dapat di-activate lalu diterbitkan PO;
- delivery dapat diterima/ditolak;
- invoice dapat di-submit, di-match (3-way dasar), di-approve/reject;
- pengajuan invoice wajib scan BAST, invoice, dan faktur pajak; dokumen asli diserahkan ke loket yang diumumkan (pembayaran menunggu penerimaan asli);
- payment dapat di-track (request → process);
- vendor dapat melihat dan mengerjakan pemenuhan di portal (scoped);
- kinerja vendor dapat dicatat;
- laporan ringkasan + export CSV tersedia bagi role yang berwenang;
- MFA TOTP dapat diaktifkan; SSO/OIDC dikonfigurasi di environment (
mockatauoidc).
35. Success Criteria
Produk dianggap sukses jika:
- Tender dapat diselesaikan secara end-to-end tanpa email sebagai media utama.
- Vendor dapat melakukan seluruh aktivitas dari portal.
- Procurement dapat mengelola tender dari satu dashboard.
- Evaluation dapat dilakukan secara digital.
- Management dapat melakukan approval secara digital.
- Seluruh evidence tender dapat ditelusuri.
- Audit trail tersedia.
- Waktu procurement cycle menurun.
- Penggunaan dokumen manual berkurang.
- Data procurement dapat digunakan untuk analytics.
36. Risks
| Risk | Impact | Mitigation |
|---|---|---|
| Data breach | High | Security architecture |
| Bid manipulation | Critical | Sealed bid + audit |
| Unauthorized access | High | RBAC + MFA |
| System downtime | High | HA + DR |
| Vendor adoption rendah | Medium | Vendor portal sederhana |
| Poor data quality | Medium | Validation |
| Workflow terlalu kompleks | Medium | Configurable workflow |
| File abuse | High | Malware scanning |
37. Key Governance Principles
Platform harus menerapkan:
| Principle |
|---|
| Transparency |
| Accountability |
| Traceability |
| Segregation of Duties |
| Least Privilege |
| Fair Competition |
| Confidentiality |
| Auditability |
38. Recommended Product Architecture
High level:
USERS
│
┌───────────┴───────────┐
│ │
Internal Portal Vendor Portal
│ │
└───────────┬───────────┘
│
API Layer
│
┌───────────┴───────────┐
│ │
Procurement Services Identity/Auth
│
┌──────┼──────┬──────┬──────┐
│ │ │ │ │
Tender Vendor Eval Contract Finance
│ │ │ │ │
└──────┴──────┴──────┴──────┘
│
Database
│
Object Storage
│
Notification Services
39. Recommended Technology Direction
Technology dapat disesuaikan dengan organisasi.
Untuk web enterprise modern, salah satu opsi:
Frontend
- Next.js
- React
- TypeScript
- Bootstrap 5
- Bootstrap Icons
Backend
- Node.js
- REST API
- TypeScript
atau:
- PHP
- CodeIgniter / Laravel
- REST API
Database
- PostgreSQL atau MySQL
Storage
- S3-compatible Object Storage
Cache / Queue
- Redis
Search
- PostgreSQL Full Text Search untuk MVP;
- Elasticsearch/OpenSearch jika kebutuhan berkembang.
Infrastructure
- Linux
- Nginx
- Docker
- CI/CD
- Monitoring
- Centralized Logging
40. Tahapan di dalam sistem
Tahap 1 — Fondasi
- authentication;
- organization;
- RBAC;
- vendor;
- master data.
Tahap 2 — Tender
- procurement request;
- tender;
- publication;
- vendor participation;
- clarification;
- bid.
Tahap 3 — Evaluasi
- bid opening;
- technical evaluation;
- commercial evaluation;
- ranking;
- approval;
- award.
Tahap 4 — Pasca-award
- contract;
- PO;
- delivery;
- invoice;
- payment tracking.
Tahap 5 — Laporan & kinerja
- analytics;
- vendor performance;
- pelaporan operasional.
41. Recommended Product Modules
Final module structure:
01 Identity & Access
02 Organization
03 Master Data
04 Procurement Planning
05 Purchase Request
06 Vendor Management
07 Vendor Qualification
08 Tender Management
09 Tender Participation
10 Clarification
11 Bid Management
12 Bid Opening
13 Evaluation
14 Approval Workflow
15 Award Management
16 Contract Management
17 Purchase Order
18 Fulfillment
19 Invoice
20 Payment Tracking
21 Vendor Performance
22 Document Management
23 Notification
24 Dashboard
25 Reporting
26 Audit & Compliance
27 Risk Management
28 System Administration
42. Final Business Process
flowchart TD Plan["Planning"] --> PR["Purchase Request"] PR --> Budget["Budget"] Budget --> Source["Sourcing"] Source --> Tender["E-Tender"] Tender --> Bid["Bid"] Bid --> Open["Pembukaan"] Open --> Tech["Evaluasi teknis"] Tech --> Comm["Evaluasi komersial"] Comm --> Rank["Ranking"] Rank --> Rec["Recommend"] Rec --> Award["Award"] Award --> Spk["SPK"] Spk --> Next["PO / Invoice / Pembayaran — gelombang berikutnya"]
43. Conclusion
eProcurement & E-Tender Management Platform bukan sekadar aplikasi untuk mengumumkan tender. Produk ini harus menjadi sistem yang mengendalikan seluruh lifecycle procurement dengan prinsip:
- digital;
- transparent;
- secure;
- auditable;
- configurable;
- scalable;
- data-driven.
E-Tender menjadi core module, sedangkan Vendor Management, Evaluation, Approval, Contract, Document Management, Audit Trail, dan Reporting menjadi komponen yang memastikan proses procurement dapat berjalan secara end-to-end.
Rilis ini memprioritaskan Vendor → Tender → Bid → Evaluation → Approval → Award → SPK, dengan roster per tender (request User ke Head di luar platform, §1.5.2). PO → Invoice → Payment adalah gelombang berikutnya.
Detail kontrak build, FR MVP, keamanan sealed bid, exception flow, NFR load, dan Definition of Done ada di §44–§55.
44. Phase 1 Functional Requirements (Build-Ready)
Prioritas: Must = fitur sistem; Should = tersedia lewat konfigurasi atau kebijakan organisasi.
44.1 Identity & Access
| ID | Requirement | Priority |
|---|---|---|
| IAM-001 | Login email/username + password | Must |
| IAM-002 | Logout + session invalidate | Must |
| IAM-003 | Password reset via email token | Must |
| IAM-004 | RBAC permission matrix per menu & action | Must |
| IAM-005 | MFA TOTP | Should |
| IAM-006 | Session httpOnly cookie, idle timeout configurable | Must |
| IAM-007 | Login history (user, time, IP, result) | Must |
| IAM-008 | Account lockout setelah N gagal | Must |
| IAM-009 | Activate / deactivate user | Must |
| IAM-010 | Separate auth realm Internal vs Vendor | Must |
| IAM-011 | Email verification untuk vendor baru | Must |
| IAM-012 | Force password change (admin flag) | Should |
44.2 Organization & Master Data
| ID | Requirement | Priority |
|---|---|---|
| ORG-001 | CRUD Organization profile | Must |
| ORG-002 | Business Unit / Department / Location / Cost Center | Must |
| ORG-003 | Procurement Category master (tree: parent/child, aktif/nonaktif, urutan) | Must |
| ORG-003a | Admin dapat CRUD kategori sesuai kebutuhan pengkategorian pekerjaan & acuan OSS/KBLI (bukan fixed list di kode) | Must |
| ORG-003b | Mapping opsional kode eksternal (KBLI / OSS) per node kategori | Should |
| ORG-004 | Numbering format config (Tender/PR/Award) | Must |
| ORG-005 | Holiday / working calendar (dasar) untuk SLA | Should |
44.3 Vendor
| ID | Requirement | Priority |
|---|---|---|
| VEN-001 | Vendor self-registration | Must |
| VEN-002 | Company profile: identitas, PIC, bank, NPWP/NIB, neraca & laba rugi 3 tahun + unggah scan/PDF | Must |
| VEN-003 | Upload legal/compliance documents | Must |
| VEN-004 | Registration workflow Draft→Submitted→Review→Verified/Rejected/Revision | Must |
| VEN-004a | Verifikasi email wajib sebelum simpan profil, unggah dokumen, submit, atau ikut tender | Must |
| VEN-004b | Status draft / revision / rejected = form lengkapi langsung; Edit/Download profil hanya setelah submit atau SKT | Must |
| VEN-005 | Internal document review per file (Preview iframe / Approve / Tolak + catatan wajib saat tolak) | Must |
| VEN-005a | Reject dokumen → status registrasi revision; re-upload reset file ke pending | Must |
| VEN-006 | Status operasional Active / Suspended / Blacklisted | Must |
| VEN-007 | Vendor user management oleh Vendor Admin | Must |
| VEN-008 | Category & commodity tagging (multi-select pada node hierarki; prefer leaf) | Must |
| VEN-008a | Template dokumen kualifikasi dapat berbeda per cabang kategori (mis. konstruksi vs IT) | Must |
| VEN-008b | Vendor terverifikasi hanya melihat / diundang ke tender yang cocok kualifikasi kategorinya | Must |
| VEN-008c | Katalog kategori = master aktif; portal vendor tidak boleh kosong setelah instalasi | Must |
| VEN-009 | Vendor search/filter untuk invitation | Must |
| VEN-010 | Blacklist reason + effective date | Should |
| VEN-011 | SKT: Terbitkan SKT setelah dokumen wajib approved (nomor + masa berlaku + PDF) | Must |
| VEN-012 | SKT: Vendor unduh PDF SKT di portal | Must |
| VEN-013 | SKT: Ikut lelang / bid ditolak tanpa SKT aktif (atau kadaluarsa / non-aktif) | Must |
| VEN-014 | SKT: Perpanjang SKT oleh akun vendor pemilik (masa berlaku baru otomatis) | Must |
| VEN-014a | SKT: Banner/Wajib dibaca H-90…H-7 dan saat kadaluarsa; tidak ada SKT sementara; perpanjangan = portal vendor pemilik | Must |
| VEN-015 | Desk rekanan: Head assign PIC / Checker / Approver SKT; ganti = history; review + terbit SKT gated | Must |
| VEN-016 | Hasil saya setelah award: Menang / Tidak menang / Gugur + catatan panitia (DQ atau pembukaan tidak SAH/ditolak). Tanpa skor, HPS, atau nama pemenang | Must |
| VEN-017 | Katalog /vendor/tenders: filter di sidebar; status tabel = hasil saya (Gugur merah / Menang / Tidak menang), bukan “Dimenangkan” milik tender. Catatan panitia hanya di detail | Must |
| UX-001 | Panduan operasional in-app per role (DoD checklist + SOP) | Should |
| UX-002 | Situs publik menampilkan informasi produk, BRD (/brd), dan alur (/alur) | Should |
44.4 Purchase Request (Simplified)
| ID | Requirement | Priority |
|---|---|---|
| PR-001 | Create PR dengan item, qty, estimasi, justification, attachment | Must |
| PR-002 | Approval PR berjenjang (config) | Must |
| PR-003 | Link PR approved → create Tender | Must |
| PR-004 | Tender tanpa PR bila config allowDirectTender=true | Must |
44.5 Tender
| ID | Requirement | Priority |
|---|---|---|
| TND-001 | Buka paket (Head saja) + Maker update draft; staf tidak POST /tenders | Must |
| TND-002 | Field: number, title, method, category, schedule, budget/HPS (ACL), eval method, committee | Must |
| TND-016 | Pagu boleh diumumkan ke peserta (flag); HPS tetap ACL / tidak ke vendor atau publik | Must |
| TND-003 | Multi-lot dasar | Must |
| TND-004 | Status machine + permissioned transitions | Must |
| TND-005 | Publish (Open) / Invite (Limited/RFQ) | Must |
| TND-006 | Document versioning + addendum + notify participants | Must |
| TND-007 | Public vs private field separation | Must |
| TND-008 | Cancel tender dengan alasan + notify | Must |
| TND-009 | Retender reference | Should |
| TND-010 | Clone tender dari tender sebelumnya | Should |
| TND-011 | Minimum participants rule | Should |
| TND-012 | Tender schedule milestones (clarify, submit, open, eval) | Must |
| TND-013 | Sesi aanwijzing (mode, jadwal, lokasi/tautan, agenda); bid terkunci sampai BA terbit | Must |
| TND-014 | Timeline aanwijzing 4 langkah: daftar hadir = 1, penjelasan, tanya jawab, BA; checklist semua vendor diundang/ikut; panitia atur buka/tutup daftar hadir; tidak hadir setelah tutup = gugur | Must |
| TND-015 | Scan asli ditandatangani (daftar hadir vendor + BA panitia) di kartu Aanwijzing; CRUD panitia; vendor peserta lihat | Must |
44.6 Clarification
| ID | Requirement | Priority |
|---|---|---|
| CLAR-001 | Vendor ajukan pertanyaan + attachment sebelum deadline | Must |
| CLAR-002 | Procurement jawab; flag public/private | Must |
| CLAR-003 | Public answer terlihat semua peserta | Must |
| CLAR-004 | Notifikasi pertanyaan baru / jawaban | Must |
44.7 Bid & Opening
| ID | Requirement | Priority |
|---|---|---|
| BID-001 | Submit technical + commercial per lot | Must |
| BID-002 | Validasi required documents & fields | Must |
| BID-003 | Resubmit sebelum deadline (versioned) | Must |
| BID-004 | Lock setelah deadline (no vendor modify) | Must |
| BID-005 | Sealed commercial sampai opening (lihat §46) | Must |
| BID-006 | Submission receipt (ID, hash, timestamp) | Must |
| BID-007 | Official bid opening event + immutable opening record | Must |
| BID-008 | Opening hanya oleh role berwenang / quorum config | Must |
| BID-009 | Tampilkan daftar submission status saat opening | Must |
| BID-010 | Reject late bid dengan audit | Must |
| BID-011 | Timeline penawaran 7 langkah selalu tampil (buka → admin → teknis → finansial → kirim → hadir pembukaan → BA pembukaan) | Must |
| BID-012 | Pembukaan: daftar hadir + status SAH/tidak SAH/ditolak (wajib catatan) + BA milik sesi ini | Must |
| BID-013 | Scan asli ditandatangani pembukaan (hadir vendor + BA panitia) di kartu Penawaran; CRUD panitia; vendor peserta lihat. Terpisah dari bukti aanwijzing | Must |
| BID-014 | Administrasi dikelola panitia (buka admin_opens_at / tutup submit_deadline); cek kelengkapan admin/teknis/finansial menahan penilaian; setelah tutup, tidak lengkap/terlambat gugur | Must |
44.8 Evaluation, Ranking, Approval, Award
| ID | Requirement | Priority |
|---|---|---|
| EVA-001 | Assign evaluator teknis/komersial per tender/lot | Must |
| EVA-002 | Pass/Fail checklist | Must |
| EVA-003 | Weighted scoring + combined formula | Must |
| EVA-004 | Evaluator independence (tidak lintas skor) | Must |
| EVA-005 | CoI declaration gate | Must |
| EVA-006 | Auto ranking dari score | Must |
| EVA-007 | Manual override ranking + alasan + audit | Must |
| EVA-008 | Disqualify vendor + alasan | Must |
| EVA-009 | Approval workflow configurable by value | Must |
| EVA-010 | Approve / Reject / Return / Delegate | Must |
| EVA-011 | SoD: pembuat ≠ approver (config) | Must |
| EVA-012 | Award winner per lot + value + reason | Must |
| EVA-013 | Notify winner & unsuccessful | Must |
| EVA-014 | Lock ranking setelah award approval | Must |
44.9 Document, Notification, Audit, Dashboard
| ID | Requirement | Priority |
|---|---|---|
| DOC-001 | Private object storage; download via authorized URL | Must |
| DOC-002 | Checksum (SHA-256) per file | Must |
| DOC-003 | Classification + role ACL | Must |
| DOC-004 | Download/upload history | Must |
| DOC-005 | Malware scan hook (service) | Should |
| DOC-006 | Tombol Lihat/Preview PDF selalu iframe in-page; Unduh tetap unduh | Must |
| NTF-001 | In-app notification center | Must |
| NTF-002 | Email notification untuk event inti | Must |
| NTF-003 | Reminder deadline T-24h | Must |
| NTF-004 | Approval overdue reminder | Should |
| AUD-001 | Audit trail field-level untuk aksi penting | Must |
| AUD-002 | Audit immutable via UI | Must |
| AUD-003 | Tender Dossier export (PDF/ZIP) | Should |
| DSH-001 | Internal dashboard: active/upcoming tenders, pending approvals | Must |
| DSH-002 | Vendor dashboard: available/participating/submitted/awards | Must |
| RPT-001 | Tender / Vendor / Award list export Excel/CSV | Must |
| RPT-002 | Evaluation matrix export | Should |
45. Exception & Alternate Flows (Phase 1)
| Scenario | Expected system behavior |
|---|---|
| Vendor submit setelah deadline | Tolak; audit late attempt; tampilkan pesan jelas |
| Procurement publish tanpa dokumen wajib | Blok transition; tampilkan missing checklist |
| Tidak ada vendor qualified untuk Limited Tender | Blok invitation send; minta perluasan filter / qualification |
| Clarification dijawab setelah bid deadline | Izinkan hanya bila status masih memungkinkan; jika tidak, minta addendum + perpanjang schedule (approval) |
| Evaluator tidak submit sebelum SLA | Reminder + escalation ke Procurement Manager; tender dapat ditandai overdue |
| CoI declared | Evaluator diblok untuk vendor terkait; request replacement |
| Hanya 1 bid masuk | Warning berdasarkan BR-020; lanjut hanya jika override berwenang + alasan |
| Tender dibatalkan saat evaluasi | Stop scoring; notify; status CANCELLED; no award |
| Tie score pada ranking | Flag tie; wajib keputusan manual beralasan sebelum award |
| File upload gagal/partial | Tidak create bid version; user dapat retry; chunk/resumable Should |
| User kehilangan akses ditengah approval | Delegate / reassign oleh admin; audit |
| Award dibatalkan sebelum contract (Phase 1) | Status award voided dengan alasan; tender kembali ke Approval/Evaluation sesuai rule config; audit wajib |
46. Sealed Bid & Sensitive Data Requirements
46.1 Business guarantee
Sebelum Bid Opening resmi:
- Commercial price/details tidak dapat dibaca oleh Procurement Admin, Evaluator teknis, Approver, atau Vendor lain.
- Role dengan privilege
bid.commercial.preopen(jika ada) harus dinonaktifkan default; pemakaian privilege ini wajib audit kritis. - Technical documents dapat dibuka sesuai konfigurasi metode (satu tahap vs dua tahap).
46.2 Technical expectations (untuk FRD)
Minimal salah satu pendekatan yang diterima:
- Application-enforced seal (MVP acceptable): commercial payload tersimpan terenkripsi at-rest; decrypt key hanya di unlock workflow saat opening event; API menolak read sebelum status opening.
- Stronger (Should/Phase 2): envelope encryption per tender; key split / quorum opening.
Wajib:
- Enkripsi at-rest untuk file sensitif;
- Authorization check setiap download;
- Signed opening record (who, when, which bids unlocked);
- Penolakan akses tercatat di audit.
46.3 Two-envelope support
| Mode | Phase |
|---|---|
| Single stage (teknis+komersial dibuka bersama setelah deadline) | Must Phase 1 |
| Two stage (teknis dulu; komersial hanya untuk yang lulus teknis) | Should Phase 1 / Must Phase 2 |
47. State Machines (Normalized)
47.1 Tender
flowchart TD Draft["draft"] --> Open["open"] Open --> Eval["evaluation"] Eval --> Appr["approval"] Appr --> Awarded["awarded"] Awarded --> Closed["closed"] Draft --> Cancel["cancelled"] Open --> Cancel Eval --> Cancel
Klarifikasi tertulis overlap dengan open, bukan status terpisah. Jangan pakai dua arti closed.
47.2 Vendor Registration
flowchart TD Draft["draft"] --> Submitted["submitted"] Submitted --> Review["review"] Review --> Revision["revision"] Revision --> Submitted Review --> Verified["verified + SKT"] Review --> Rejected["rejected"] Verified --> Active["active"] Active --> Hold["suspended / blacklisted"]
47.3 Bid
flowchart TD Draft["draft"] --> Submitted["submitted"] Submitted --> Locked["locked — deadline"] Locked --> Opened["opened — pembukaan"] Opened --> Eval["under evaluation"] Eval --> Qual["qualified"] Eval --> Dq["disqualified"]
47.4 Approval
flowchart TD Pending["pending"] --> Ok["approved"] Pending --> No["rejected"] Pending --> Back["returned"] Pending --> Del["delegated"] Del --> Pending
48. Permission Matrix (Phase 1 Minimum)
| Action | Super Admin | Proc Admin | Proc Manager | Requester | Tech Eval | Comm Eval | Approver | Auditor | Vendor Admin | Vendor User |
|---|---|---|---|---|---|---|---|---|---|---|
| Manage users/roles | ✓ | vendor users only | ||||||||
| Verify vendor | ✓ | ✓ | ✓ | R | ||||||
| Create PR | ✓ | ✓ | ✓ | ✓ | R | |||||
| Create/edit tender draft | ✓ | ✓ | ✓ | R | ||||||
| Publish/invite tender | ✓ | ✓ | ✓ | R | ||||||
| View HPS | ✓ | ✓ | ✓ | config | ✓ | R | ||||
| Answer clarification | ✓ | ✓ | ✓ | R | ||||||
| Submit bid | ✓ | ✓ | ||||||||
| View commercial pre-open | ||||||||||
| Open bids | ✓ | config | ✓ | R | ||||||
| Score technical | ✓ | R | ||||||||
| Score commercial | ✓ | R | ||||||||
| Override ranking | ✓ | ✓ | config | R | ||||||
| Approve award | config | ✓ | R | |||||||
| Create award | ✓ | ✓ | ✓ | R | ||||||
| View audit | ✓ | config | ✓ | ✓ |
R = read-only. config = boleh jika diizinkan permission matrix organisasi.
49. Non-Functional Targets with Load Assumptions
Asumsi awal Phase 1 (wajib dipakai performance test):
| Assumsi | Nilai awal |
|---|---|
| Internal users aktif | 200 |
| Vendor terdaftar | 5.000 |
| Tender aktif bersamaan | 50 |
| Concurrent bid submit mendekati deadline | 200 requests/menit (burst 5 menit) |
| Ukuran dokumen tunggal | hingga 50 MB (config); total bid package hingga 200 MB |
| Retention audit | ≥ 5 tahun (config) |
Target:
| Metric | Target |
|---|---|
| API p95 operasi standar (non-upload) | < 500 ms |
| Bid submit ack p95 (meta, non-file) | < 800 ms |
| Dashboard p95 dataset normal | < 3 s |
| Availability | 99.5% |
| RPO / RTO | ≤ 1 jam / ≤ 4 jam |
| Audit write success | 100% untuk aksi Must-audited |
50. Data Retention, Privacy & Localization
| Area | Rule |
|---|---|
| Locale UI | id-ID default, en optional |
| Timezone | Asia/Jakarta display; UTC storage |
| Currency | IDR Phase 1 |
| PII (nama, email, phone, bank) | ACL + encryption at rest untuk field sensitif |
| Vendor docs & bids | private storage; retention ≥ siklus kontrak + policy organisasi |
| Soft-delete | default untuk business records |
| Right to erasure | tidak boleh menghapus evidence tender yang masih wajib audit; anonymize hanya dengan approval legal |
| Log akses dokumen | wajib untuk dokumen confidential |
51. Integrasi yang dikonfigurasi
| Integrasi | Fungsi | Konfigurasi |
|---|---|---|
| Email (SMTP/API) | Verifikasi, reset, undangan, deadline, award | MAIL_* |
| Object storage | Berkas privat, unduh terkontrol | FILESYSTEM_DISK (lokal atau S3) |
| Job queue / scheduler | Pengingat deadline, job asinkron | cron schedule:run + queue:work |
| Antivirus | Pindai unggahan | implementasi MalwareScanner |
| SSO/OIDC | Login organisasi | EPROC_SSO_DRIVER (mock atau oidc) |
| Rate limiting | Lindungi login/API/publik | EPROC_RATE_* |
52. Observability & Operability
Must:
- Structured application logs (request id, user id, org id);
- Metrics: latency, error rate, bid submit rate, queue lag;
- Alerting: 5xx spike, job failures, storage errors, login anomaly;
- Backup otomatis DB + object storage;
- Restore drill checklist minimal 1x sebelum production.
53. Compliance Evidence Pack (per Tender)
Satu aksi Generate Tender Dossier menghasilkan paket:
Tender Dossier
├── 00_index.pdf
├── 01_purchase_request/ (jika ada)
├── 02_tender_documents/
├── 03_addenda/
├── 04_invitations_participants/
├── 05_clarifications/
├── 06_bid_receipts/
├── 07_bid_opening_record/
├── 08_evaluations/
├── 09_ranking_and_overrides/
├── 10_approvals/
├── 11_award/
└── 12_audit_extract/
Priority: Should di Phase 1; Must di Phase 2.
54. Definition of Done — Phase 1
Phase 1 selesai untuk development jika:
- Semua FR Must di §44 terpenuhi.
- Sealed commercial bid terverifikasi (uji akses negatif sebelum opening).
- Deadline server-side ditegakkan (uji late bid).
- SoD & permission matrix minimal §48 berjalan di server (bukan hanya di antarmuka).
- Audit trail ada untuk: publish, invite, submit bid, open bid, score, override rank, approve, award, cancel.
- Vendor dapat menyelesaikan registrasi → ikut tender → submit → terima receipt → terima hasil award notification.
- Internal dapat draft → publish → open → evaluate → approve → award end-to-end tanpa email sebagai media utama dokumen.
- Tidak ada lint/type error baru di area perubahan; smoke test path utama lulus.
- Backup/restore dan secret management production-ready sesuai handbook.
- Alur tender hingga pemenuhan kontrak berjalan sesuai §1.5 dan checklist GATE.
55. Konfigurasi organisasi
Nilai berikut mengikuti kebijakan organisasi (lihat juga §1.4):
| ID | Topik | Perilaku sistem |
|---|---|---|
| OQ-005 | Quorum bid opening | Dikonfigurasi per organisasi |
| OQ-006 | Registrasi vendor | Self-reg + verifikasi internal |
| OQ-007 | Retensi dokumen | Default 5 tahun, disesuaikan kebijakan |
| OQ-008 | SSO | Lokal atau OIDC sesuai environment |
| OQ-009 | Ambang approval | Matrix nilai di §27 |
| OQ-010 | HPS | Wajib internal; visibilitas lewat ACL |
Appendix A — Menu portal internal (rilis ini)
Dashboard
Tenders
├── Semua
├── Draft
├── Published
├── Evaluation
├── Awarded
└── Closed / Cancelled
Vendors
├── Daftar rekanan
├── Antrian registrasi
└── Kualifikasi / desk
Evaluation
├── Tugas saya
├── Teknis
├── Komersial
└── Ranking
Awards
Kontrak / SPK
Laporan
Audit Trail
Notifikasi
Panduan
Settings
├── Users
├── Roles & Permissions
├── Approval Workflow
├── Master Data
├── Numbering
└── System Configuration
Item menu hanya tampil jika pengguna punya permission terkait. URL tanpa izin → 403. Purchase Request, PO, invoice, pembayaran, dan kinerja vendor = gelombang berikutnya (§1.5.3).
Appendix B — Menu portal vendor (rilis ini)
Dashboard
Perusahaan
├── Profil (legal, kategori, bank, pengalaman, dokumen)
├── Status registrasi + status review dokumen
└── Unduh SKT (bila sudah terbit)
Tim pengguna ← hanya Vendor Admin
Keamanan
Tender tersedia
├── Detail / dokumen (+ addendum)
├── Clarification
├── Ikut + Bid (GATE: SKT aktif)
└── Submission receipt PDF
Kontrak / SPK
Panduan
Tanpa SKT aktif, ikut tender diblokir. PO, invoice, dan kinerja vendor = gelombang berikutnya (§1.5.3).
Appendix C — Operasi harian
Agar email, pengingat, dan berkas berjalan di lingkungan organisasi:
- atur SMTP;
- jalankan scheduler dan queue worker;
- pilih disk penyimpanan (lokal atau S3);
- aktifkan pemindai unggahan bila diwajibkan kebijakan;
- pilih SSO
mockatauoidcsesuai IdP.
Appendix D — Traceability (Phase 1 Core Path)
| Business goal | Modules | Must FR (sample) | Acceptance |
|---|---|---|---|
| Digital tender tanpa email utama | Tender, Docs, Notification | TND-, DOC-, NTF-* | §34 Procurement |
| Fair competition | Bid sealed, Clarification public | BID-005, CLAR-003, §46 | Commercial tidak bocor pre-open |
| Accountable evaluation | Evaluation, CoI, Audit | EVA-001–008, AUD-* | §34 Governance |
| Controllable award | Approval, Award | EVA-009–014 | Award hanya setelah approval |
| Vendor self-service | Vendor portal + SKT | VEN-, BID-, VEN-011–014 | §34 Vendor + GATE SKT |
| Auditability | Audit, Dossier | AUD-*, §53 | Trace end-to-end |
| Post-award control | Contract, PO, Invoice | §11.25–11.30 | Gelombang berikutnya §1.5.3 |
Appendix E — Dokumen terkait
SOW.md— lingkup operasional.TRD.md— desain teknis.API.md— REST/api/v1.USER_JOURNEY.md— alur per peran.PHASE1_JOURNEY_CHECKLIST.md— GATE dan UAT.ENGINEERING.md— convention kode.SIT_VENDOR_SKT_SPK.md— skenario SIT vendor → SPK.UAT_GELOMBANG_1_4.md— skenario UAT TIM Gelombang 1–4.BUMN_DIGITALISASI_CHECKLIST.md— backlog evidence BUMN.
End of Document