Add four skills for Tempo/KSeF timesheet and invoice workflows: - check-my-timesheet: show/log the current user's Tempo time entries - timesheet-checker: audit timesheet completion across all reporters - invoice-checker: pull KSeF invoices, check contractors + MF white list - invoice-prep: summarize Tempo hours per Jira project for invoicing Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
1.5 KiB
Markdown
49 lines
1.5 KiB
Markdown
# Output Format
|
||
|
||
## timesheet_data.json (written by preprocess.py)
|
||
|
||
Machine-readable intermediate file with all fetched and computed data.
|
||
|
||
```json
|
||
{
|
||
"period": {
|
||
"start": "2026-06-16",
|
||
"end": "2026-06-20",
|
||
"label": "last week",
|
||
"working_days": ["2026-06-16", "2026-06-17", "2026-06-18", "2026-06-19", "2026-06-20"],
|
||
"working_day_count": 5
|
||
},
|
||
"summary": {
|
||
"total_employees": 3,
|
||
"total_expected_hours": 120,
|
||
"total_reported_hours": 96.5,
|
||
"overall_completion_pct": 80.4,
|
||
"employees_fully_complete": 1,
|
||
"employees_with_gaps": 2
|
||
},
|
||
"employees": [
|
||
{
|
||
"name": "Jan Kowalski",
|
||
"account_id": "557058:aaaa...",
|
||
"expected_hours": 40,
|
||
"reported_hours": 32.5,
|
||
"missing_hours": 7.5,
|
||
"completion_pct": 81.3
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
Field notes:
|
||
- `employees` is sorted by `missing_hours` descending — the employee furthest behind appears first.
|
||
- `completion_pct` = `reported_hours / expected_hours × 100`. Can exceed 100 if overtime was logged.
|
||
- `missing_hours` = `max(0, expected_hours - reported_hours)`.
|
||
- Working days exclude weekends and Polish public holidays fetched from date.nager.at.
|
||
|
||
## timesheet_report.md (written by postprocess.py)
|
||
|
||
Manager-readable markdown report containing:
|
||
- Period details (dates, working day count)
|
||
- Summary block: expected total, reported total, overall completion %
|
||
- Employee table ranked by missing hours (most behind first)
|
||
- Completion badges: ✓ complete, ⚠ below 75%, ⚠⚠ below 50%
|