Skip to main content

Odoo Technical Test

Incident Log System - BeraniExpress

Target Platform: Odoo 18.0 (Latest Version)

I. Deskripsi Proyek

BeraniExpress adalah penyedia layanan logistik nasional. Dalam operasional harian, tim lapangan sering menemui kendala teknis maupun operasional, seperti paket yang rusak, keterlambatan armada, atau kendala kesehatan kurir. BeraniExpress membutuhkan sistem pencatatan insiden internal yang rapi untuk menangani kendala operasional (keterlambatan, barang tertinggal, atau isu kesehatan kurir/pelanggan) tanpa alur yang kompleks. Peserta diminta membuat modul sederhana untuk mengelola siklus hidup insiden tersebut.

Goals: Anda diminta untuk membangun modul Odoo mandiri guna mencatat dan mengelola insiden tersebut. Fitur ini akan membantu tim operasional melakukan tindak lanjut (follow-up) secara terstruktur hingga masalah dinyatakan selesai.


II. Prasyarat (Prerequisites)

  • Menguasai pengembangan modul Odoo (Python & XML).

  • Memiliki lingkungan kerja Odoo 18.0 terinstal secara lokal.

  • Memahami penggunaan Git untuk kontrol versi.

  • Memahami standar penamaan (naming convention) Odoo.


III. Spesifikasi Teknis (Mandatory Tasks)

odoo-technical-test.png

1. Pengembangan Model Data

Buat model courier.incident di dalam modul courier_core dengan atribut berikut:

Field Label Tipe Data Ketentuan (Berdasarkan File Asli)
name Judul Insiden Char Required.
customer_id Pelanggan Many2one Relasi ke courier.customer (Required).
shipment_id No. Resi Many2one Relasi ke courier.shipment (Transaksi).
incident_type Tipe Selection 'health', 'lost_item', 'delay', 'other' (Default: 'other').
incident_datetime Waktu Datetime Required, default: sekarang.
severity Urgensi Selection 'low', 'medium', 'high' (Default: 'low').
description Kronologi Text Detail kejadian.
followup_note Catatan Text Tindakan yang diambil.
state Status Selection 'draft', 'followup', 'done' (Default: 'draft').
resolved_at Selesai pada Datetime Read only (Hanya terisi otomatis saat Done).
2. Antarmuka Pengguna (UI/UX)

Gunakan standar desain Odoo 18 untuk komponen berikut:

  • Tree View: Menampilkan daftar insiden dengan kolom status yang jelas.

  • Form View: Menyediakan area input data lengkap dengan Status Bar di bagian atas.Tata letak yang rapi, mencakup header (status bar), sheet (informasi utama), dan chatter (opsional).

  • Menu Hierarchy: Buat menu "Log Insiden" yang mudah diakses di bawah menu_courier_root (atau root menu utama) dengan action yang mengarah ke kedua view di atas.

3. Logika Bisnis (State Workflow)

Tambahkan metode Python untuk fungsi tombol pada Form View:

  • Button "Mark Follow-up": Mengubah state menjadi 'followup'.

  • Button "Resolve": Mengubah state menjadi 'done' dan mengisi resolved_at dengan waktu sekarang (fields.Datetime.now()).


IV. Tantangan Tambahan (Optional)

Untuk nilai tambah, implementasikan fitur berikut:

  1. SQL Constraints: Tambahkan _sql_constraints untuk mencegah duplikasi data dengan kombinasi: customer_id + incident_type + incident_datetime.

  2. UI Decorations: Pada Tree View, gunakan atribut dekorasi baris:

    • decoration-warning untuk status 'followup'.

    • decoration-success untuk status 'done'.

  3. Python Validation: Gunakan decorator @api.constrains untuk memastikan jika status diubah menjadi 'done', maka followup_note wajib diisi.


V. Instruksi Pengumpulan & Penilaian GitHub

1. Metode Pengiriman

Hasil pekerjaan wajib dikumpulkan dalam bentuk Link Repositori GitHub Publik. Pastikan repositori Anda berisi:

  1. Source code modul lengkap.

    • Hanya diperbolehkan menggunakan 1 model, 1 menu, 1 tree view, dan 1 form view.

    • Penggunaan AI diperbolehkan, namun konsistensi penamaan ID XML dan pola modul sangat diutamakan.

  2. Struktur Folder:

    • models/courier_incident.py (Jangan lupa update __init__.py).

    • views/courier_incident_views.xml (Pastikan terdaftar di __manifest__.py).

    • security/ir.model.access.csv (Akses dasar untuk internal user).

  3. Kualitas Commit:

    • Gunakan Conventional Commits (contoh: feat: add incident model, fix: validation on resolved state).

    • Hindari melakukan satu commit besar untuk semua file (Atomic Commits).

  4. README.md: Tuliskan langkah manual singkat untuk menguji fungsi (Create -> Mark Follow-up -> Resolve).

2. Kriteria Penilaian Git (Commit Quality)

Cara Anda mengelola kode akan menjadi poin penilaian signifikan:

  • Conventional Commits: Gunakan format pesan commit yang standar, contoh: feat: add incident logic and state transitions.

  • Atomic Commits: Lakukan commit secara bertahap (misal: commit model, lalu commit view secara terpisah).

  • Clean History: Pastikan riwayat commit rapi dan mencerminkan progres pengerjaan yang logis.


VI. Referensi Teknis (Odoo 18.0)

Gunakan tautan berikut sebagai panduan teknis selama pengerjaan:

Waktu Pengerjaan: 2-3 hari kalender.

Kriteria Lulus: Kode dapat diinstal tanpa error, fungsionalitas tombol berjalan sesuai spesifikasi, dan riwayat commit di GitHub terkelola dengan baik.


Semoga berhasil dengan Odoo Technical Test Anda!