Automatyczne liczenie nadgodzin z sesji Claude Code na podstawie harmonogramu zmianowego
After15 to narzedzie CLI napisane w Rust, ktore automatycznie analizuje logi sesji Claude Code i oblicza ile godzin przepracowales poza standardowym czasem pracy. Nazwa pochodzi od godziny 15:00 - konca regularnej zmiany.
Logi Claude Code (.jsonl)
|
v
+-------------+
| after15 | <-- Harmonogram zmian (21-dniowy cykl)
+-------------+
|
v
Raport nadgodzin
(terminal / PDF)
Program:
- Skanuje pliki JSONL z
~/.claude/projects/i~/.claude/transcripts/ - Wykrywa sesje pracy (przerwa >30 min = nowa sesja)
- Przypisuje godziny do projektow na podstawie sciezek plikow
- Oblicza ktore godziny to nadgodziny wedlug Twojego grafiku
- Generuje raporty z podzialem na dni, miesiace i projekty
- Rust 1.70+ (lub nowszy)
- Czcionki Liberation (
sudo apt install fonts-liberation)
git clone https://github.com/jarx88/after15-core.git
cd after15-core
cargo build --releaseBinarke znajdziesz w ./target/release/after15
sudo cp ./target/release/after15 /usr/local/bin/after15Wyswietla:
- Szczegoly dzienne z typem zmiany
- Statystyki miesieczne
- Podzial na projekty
after15 --statuslineWynik: 🌙 2:30/45:15 (dzis/miesiac)
Ikony:
- 🏢 - w godzinach pracy
- 🌙 - nadgodziny
after15 --month 2026-01after15 --explain 2026-01-15Pokazuje kazda sesje z tego dnia, projekty i jak obliczono nadgodziny.
after15 --pdfGeneruje ~/nadgodziny_styczen_2026.pdf z profesjonalnym formatowaniem.
after15 --debugPokazuje szczegoly parsowania plikow i wykrywania sesji.
Utworz plik ~/.config/after15/config.json:
{
"projects": {
"tracked_path": "Programowanie",
"excluded_projects": ["sandbox", "test-project"]
}
}| Pole | Opis | Domyslnie |
|---|---|---|
tracked_path |
Fragment sciezki do projektow | "Programowanie" |
excluded_projects |
Projekty do pominiecia | [] |
Program obsluguje 21-dniowy cykl zmianowy:
| Zmiana | Godziny pracy | Nadgodziny |
|---|---|---|
| Regularna | 6:00 - 15:00 | przed 6:00, po 15:00 |
| Popoludniowa | 15:00 - 21:00 | przed 15:00, po 21:00 |
| Sobota (popoludniowa) | 8:00 - 14:00 | przed 8:00, po 14:00 |
| Weekend | - | caly dzien |
Tydzien 1: Popoludniowa (pon-pt) + Sobota 8-14
Tydzien 2: Regularna
Tydzien 3: Regularna
[powtorz]
Pierwszy cykl zaczyna sie 28.07.2025 - mozesz to zmienic w src/schedule.rs.
💰 SUMA_NADGODZIN: 47:30
📋 SZCZEGOLY DZIENNE:
╭──────────────────────┬────────────┬────────────┬──────────────────────╮
│ Data │ Nadgodziny │ Typ │ Okno nadgodzin │
├──────────────────────┼────────────┼────────────┼──────────────────────┤
│ 🏢 2026-01-13 💾 │ 3:45 │ Normalny │ przed 6:00 i po 15:00│
│ 🏠 2026-01-18 💾 │ 5:20 │ Weekend │ caly dzien │
│ 🌆 2026-01-20 📄 │ 2:15 │ Popoludnie │ przed 15:00 i po 21:0│
╰──────────────────────┴────────────┴────────────┴──────────────────────╯
📁 PROJEKTY - 2026-01 (nadgodzin: 47:30):
╭─────────────────┬────────┬───────┬────────╮
│ Projekt │ Dzien │ Wknd │ Suma │
├─────────────────┼────────┼───────┼────────┤
│ farmaster2 │ 12:30 │ 8:00 │ 20:30 │
│ after15-core │ 15:45 │ 4:15 │ 20:00 │
│ side-project │ 5:00 │ 2:00 │ 7:00 │
╰─────────────────┴────────┴───────┴────────╯
after15-core/
├── src/
│ ├── main.rs # CLI (clap)
│ ├── config.rs # Ladowanie konfiguracji
│ ├── schedule.rs # Logika zmian
│ ├── overtime.rs # Obliczanie nadgodzin
│ ├── jsonl.rs # Parser logow Claude
│ ├── report.rs # Raporty terminalowe
│ ├── archive.rs # Zapis do JSON
│ └── pdf.rs # Generator PDF
├── Cargo.toml
└── AGENTS.md # Dokumentacja dla AI
cargo test14 testow jednostkowych pokrywa logike zmian i obliczen.
cargo clippy -- -D warningscargo fmt- Harmonogram zmian jest zahardkodowany w
schedule.rs - Wymaga czcionek Liberation do generowania PDF
- Parsuje tylko logi Claude Code (format JSONL)
- Strefa czasowa: Europe/Warsaw (zahardkodowana)
MIT
Jaroslaw Hartwich
"Bo kazda minuta po 15:00 sie liczy" 🌙