feat: tiap commit jadi entry timesheet terpisah (pro-rata per commit)

Sebelumnya commit dengan kode task yang sama digabung jadi 1 entry.
Sekarang setiap commit → 1 entry Odoo. Bobot waktu dihitung dari gap
ke commit sebelumnya (atau dari 08:00 untuk commit pertama hari itu).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sas.fajri
2026-05-29 17:05:36 +07:00
parent c63b65a18d
commit 044d3a5cdc
2 changed files with 88 additions and 95 deletions

View File

@@ -111,22 +111,28 @@ Script utama. Ambil commit hari ini, cari task di Odoo, hitung pro-rata, simpan
Semua parameter opsional jika `.env` sudah diisi.
**Cara hitung pro-rata:**
- Bobot tiap task = span waktu antara commit pertama dan terakhir task tersebut
- Task dengan commit pertama di hari itu → span dihitung dari **jam 08:00**
- Single commit mendapat minimum 30 menit
**Cara hitung pro-rata (per commit):**
- Setiap commit = satu timesheet entry terpisah
- Commit diurutkan secara kronologis
- Bobot commit pertama = waktu dari **jam 08:00** ke commit tersebut
- Bobot commit berikutnya = gap dari commit sebelumnya
- Gap 0 menit (commit bersamaan) mendapat minimum 30 menit
- Total jam selalu = 8
```
Contoh:
Task A commit 09:0011:00 → span 08:0011:00 = 180 menit (first commit hari ini)
Task B commit 14:0015:30 → span 90 menit
Task C commit 10:00 → span 30 menit (minimum, single commit)
Total span = 300 menit
commit 1 10:26 → span 08:00→10:26 = 146 menit (first)
commit 2 10:26 → gap 0 → minimum 30 menit
commit 3 15:16 → gap 10:26→15:16 = 290 menit
commit 4 16:00 → gap 44 menit
commit 5 16:42 → gap 42 menit
Total span = 552 menit
Task A = 8 × 180/300 = 4.80h
Task B = 8 × 90/300 = 2.40h
Task C = 8 × 30/300 = 0.80h
commit 1 = 8 × 146/552 = 2.12h
commit 2 = 8 × 30/552 = 0.43h
commit 3 = 8 × 290/552 = 4.20h
commit 4 = 8 × 44/552 = 0.64h
commit 5 = 8 × 42/552 = 0.61h
```
```bash
@@ -160,14 +166,16 @@ python3 daily_timesheet.py --session-id <id> --user-id 41 --employee-id 37 --aut
**Contoh output preview:**
```
──────────────────────────────────────────────────────────────────────────────
PROJECT TASK WAKTU SPAN JAM DESKRIPSI
PROJECT TASK WAKTU SPAN JAM DESKRIPSI
──────────────────────────────────────────────────────────────────────────────
CPONE 10832 08:00→11:00 180m↑ 4.80 buat api endpoint
Support Kedungdoro 5521 14:0015:30 90m 2.40 fix bug validasi
Support Pramita 7788 10:00 (1x) 30m* 0.80 update config
Support Pramita 52010 08:00→10:26 146m↑ 2.12 Menambahkan regional
Support Pramita 52010 10:26 30m* 0.43 fix validasi regional
IBL 52016 15:16 290m 4.20 update deploy.sh
IBL 52016 16:00 44m 0.64 fix deploy path
IBL 52016 16:42 42m 0.61 update script prod
──────────────────────────────────────────────────────────────────────────────
TOTAL 300m 8.00
↑ span dihitung dari 08:00 | * single commit → minimum 30 menit
TOTAL 552m 8.00
↑ span dari 08:00 | * gap ke commit sebelumnya → minimum 30 menit
```
---