feat(fusion_clock): native recurring shifts engine [A4-A5]

fusion.clock.schedule.recurrence (repeat every N day/week/month/year;
forever/until/N-times) re-fit from planning.recurrency onto per-day rows;
daily generation cron; _fclk_on_leave skip; planner Repeat…/Stop-repeat
UI + endpoints; recurrence + role indicators on cells.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-04 20:49:26 -04:00
parent b4ca85e291
commit 734b3b94fd
12 changed files with 591 additions and 0 deletions

View File

@@ -14,3 +14,14 @@ class ResCompany(models.Model):
domain="[('company_id', '=', id)]",
help="Clock location bound to the on-site kiosk (NFC and PIN) for this company.",
)
fclk_planning_generation_months = fields.Integer(
string='Schedule Generation Horizon (months)',
default=6,
help="How many months ahead recurring shifts are pre-generated.",
)
fclk_self_unassign_days_before = fields.Integer(
string='Self-Unassign Cutoff (days before shift)',
default=1,
help="Employees may release an open shift they claimed up to this many "
"days before it starts.",
)