A profile's active hours can only express single moments in PoracleWeb.NET. PoracleNG has supported ranges the whole time: an entry carries step, end_hours and end_mins, and step > 0 makes it a range that fires every step hours between start and end.
So "switch to this profile at 08:00" is expressible here and "keep this profile active from 08:00 to 17:00" is not, even though the bot can set exactly that with !settime weekday:9-17/2. A user who sets a range through the bot then opens this UI sees a schedule it cannot represent, which is worse than not offering it.
What to build
step, end_hours and end_mins on the model, the validator and the parser.
- Range entries in
ActiveHoursEditorDialogComponent. The existing day picker and presets carry over; the time picker gains an end and a repeat interval.
ActiveHoursChipComponent needs a range form. PoracleNG renders these as <day> HH:MM-HH:MM/N; the chips should read as naturally as the single-fire ones do now, not fall back to the wire format.
- The weekly preview grid should show a range as a span, which is the clearest argument for building this at all.
- Round-trip a bot-set range without altering it. That is the regression test worth writing first.
Day numbering
The scheduler uses ISO weekdays, Monday 1 through Sunday 7, and ValidateActiveHours already enforces 1-7 correctly. Do not take the numbering from the v2 OpenAPI schema, which is wrong — see the separate issue.
A profile's active hours can only express single moments in PoracleWeb.NET. PoracleNG has supported ranges the whole time: an entry carries
step,end_hoursandend_mins, andstep > 0makes it a range that fires everystephours between start and end.So "switch to this profile at 08:00" is expressible here and "keep this profile active from 08:00 to 17:00" is not, even though the bot can set exactly that with
!settime weekday:9-17/2. A user who sets a range through the bot then opens this UI sees a schedule it cannot represent, which is worse than not offering it.What to build
step,end_hoursandend_minson the model, the validator and the parser.ActiveHoursEditorDialogComponent. The existing day picker and presets carry over; the time picker gains an end and a repeat interval.ActiveHoursChipComponentneeds a range form. PoracleNG renders these as<day> HH:MM-HH:MM/N; the chips should read as naturally as the single-fire ones do now, not fall back to the wire format.Day numbering
The scheduler uses ISO weekdays, Monday 1 through Sunday 7, and
ValidateActiveHoursalready enforces 1-7 correctly. Do not take the numbering from the v2 OpenAPI schema, which is wrong — see the separate issue.