oncall-engine/engine/apps/schedules/tests/calendars/quality.ics
Vadim Stepanov 7a1f176cb5
Schedule score backend (#338)
This PR adds an endpoint returning a schedule quality score, overloaded
users and comments on the existing issues (e.g. balance issues or gaps).

## Limitations
- Since working hours editor is not implemented yet, there are only two
scores taken into account: balance score and a score representing the
ratio of time when someone is on-call to the whole time period.
- Time period is now set to be constant (90 days from today), so **in
some cases the results will be inaccurate** (when rotations don't align
with the time period)
- It only takes primary rotations into account (overrides are ignored)

## Usage
`GET /api/internal/v1/schedules/<pk>/quality?date=<TOMORROW_DATE>`

Note that `date` should be tomorrow date, because we can only be sure
about changing tomorrow's shifts (some of the shifts for current day
could be "deleted" but still show up in the UI).

## Example response
```json
{
  "total_score": 90,
  "comments": ["Schedule has no gaps", "Schedule is well-balanced, but still can be improved"],
  "overloaded_users": ["USSZ5WRH2CUA9", "U74XJZSSQGBIH"]
}
```

Issue: #118
2023-01-04 16:49:58 +00:00

372 lines
7.6 KiB
Text

BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:test quality
X-WR-TIMEZONE:Europe/London
BEGIN:VEVENT
DTSTART:20220801T123000Z
DTEND:20220801T133000Z
DTSTAMP:20220913T120725Z
UID:1i2ossr8fu92o1dbs22claq3sc@google.com
CREATED:20220801T130437Z
DESCRIPTION:
LAST-MODIFIED:20220801T130437Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220801T124500Z
DTEND:20220801T141500Z
DTSTAMP:20220913T120725Z
UID:2qmvpinkik8tgjo878i6jqeb8r@google.com
CREATED:20220801T125755Z
DESCRIPTION:
LAST-MODIFIED:20220801T132011Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user2
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220826T120000Z
DTEND:20220826T130000Z
DTSTAMP:20220913T120725Z
UID:42tt0i1c81bb8bb6mtu56a3edc@google.com
CREATED:20220826T133351Z
DESCRIPTION:
LAST-MODIFIED:20220826T133351Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:test
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220826T160000Z
DTEND:20220826T170000Z
DTSTAMP:20220913T120725Z
UID:3rv6jio1sjlpp97vrdv3jodc8t@google.com
CREATED:20220826T133429Z
DESCRIPTION:
LAST-MODIFIED:20220826T133429Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220902
DTEND;VALUE=DATE:20220903
DTSTAMP:20220913T120725Z
UID:36lqrnjaatjj89jj6kspnhi0dg@google.com
CREATED:20220902T135038Z
DESCRIPTION:
LAST-MODIFIED:20220902T135111Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T074500Z
DTEND:20220909T084500Z
DTSTAMP:20220913T120725Z
UID:347r8td6i8c8l7u0ji2tdag4cf@google.com
CREATED:20220909T081157Z
DESCRIPTION:user1
LAST-MODIFIED:20220909T081157Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user2
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T043000Z
DTEND:20220909T053000Z
DTSTAMP:20220913T120725Z
UID:454s5d2crv34ul4m2ia2gv8sl7@google.com
CREATED:20220909T084213Z
DESCRIPTION:
LAST-MODIFIED:20220909T084213Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T121500Z
DTEND:20220909T131500Z
DTSTAMP:20220913T120725Z
UID:2dk7q3tgfpgel1vfn4vnm6i9ht@google.com
CREATED:20220909T081937Z
DESCRIPTION:
LAST-MODIFIED:20220909T084237Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:wrong
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T123000Z
DTEND:20220909T133000Z
DTSTAMP:20220913T120725Z
UID:16bn4ncbjqjb61ms5uh6uqujnh@google.com
CREATED:20220909T081927Z
DESCRIPTION:
LAST-MODIFIED:20220909T084306Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:wrong
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T081500Z
DTEND:20220909T094500Z
DTSTAMP:20220913T120725Z
UID:4e2qpkou72ng9bv5iie6es0e6b@google.com
CREATED:20220909T081607Z
DESCRIPTION:
LAST-MODIFIED:20220909T084403Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:wrong
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T040000Z
DTEND:20220909T060000Z
DTSTAMP:20220913T120725Z
UID:3qapm9eac8440arhffqjb4htcj@google.com
CREATED:20220909T084202Z
DESCRIPTION:
LAST-MODIFIED:20220909T084413Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user2
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T013000Z
DTEND:20220909T020000Z
DTSTAMP:20220913T120725Z
UID:3jftc5rfca54eqff8biqrjrnqg@google.com
CREATED:20220909T084447Z
DESCRIPTION:
LAST-MODIFIED:20220909T090233Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220905
DTEND;VALUE=DATE:20220906
DTSTAMP:20220913T120725Z
UID:7ufaiu3a37bjov1bcoqeo8ouaa@google.com
CREATED:20220909T102119Z
DESCRIPTION:
LAST-MODIFIED:20220909T102119Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220906
DTEND;VALUE=DATE:20220907
DTSTAMP:20220913T120725Z
UID:70eg0ug77ldh42kv9upvv5ssdi@google.com
CREATED:20220909T102129Z
DESCRIPTION:
LAST-MODIFIED:20220909T102129Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:wrong
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART:20220908T160000Z
DTEND:20220908T220000Z
DTSTAMP:20220913T120725Z
UID:12t2h95vf6iatpcb05naq6elb3@google.com
CREATED:20220908T100114Z
DESCRIPTION:
LAST-MODIFIED:20220909T102443Z
LOCATION:
SEQUENCE:2
STATUS:CONFIRMED
SUMMARY:user2
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220909T173000Z
DTEND:20220909T210000Z
DTSTAMP:20220913T120725Z
UID:0ogq7upkb5ogo2cm1ivm4e6gkn@google.com
CREATED:20220909T082000Z
DESCRIPTION:
LAST-MODIFIED:20220909T130430Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:wrong
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220912
DTEND;VALUE=DATE:20220916
DTSTAMP:20220913T120725Z
UID:038fgoffuoabpigf51vj2vftda@google.com
CREATED:20220909T130453Z
DESCRIPTION:
LAST-MODIFIED:20220909T130453Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220917
DTEND;VALUE=DATE:20220918
DTSTAMP:20220913T120725Z
UID:4eko47gsiub8u71bi82ujv43js@google.com
CREATED:20220909T130606Z
DESCRIPTION:
LAST-MODIFIED:20220909T130606Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART:20220919T030000Z
DTEND:20220919T054500Z
DTSTAMP:20220913T120725Z
UID:6l0fc9avshgq5rtmbpg0sps4f0@google.com
CREATED:20220912T130920Z
DESCRIPTION:
LAST-MODIFIED:20220912T130926Z
LOCATION:
SEQUENCE:3
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220919T070000Z
DTEND:20220919T083000Z
DTSTAMP:20220913T120725Z
UID:0n8e27of565bauhem1i9a4er3s@google.com
CREATED:20220912T131012Z
DESCRIPTION:
LAST-MODIFIED:20220912T131030Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220919T110000Z
DTEND:20220919T120000Z
DTSTAMP:20220913T120725Z
UID:1rvhjpoickat4qca0fsqpdqq42@google.com
CREATED:20220912T131036Z
DESCRIPTION:
LAST-MODIFIED:20220912T131036Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220919T193000Z
DTEND:20220919T210000Z
DTSTAMP:20220913T120725Z
UID:79sqpvf4spfiia88rnu701mlnc@google.com
CREATED:20220912T130953Z
DESCRIPTION:
LAST-MODIFIED:20220912T131100Z
LOCATION:
SEQUENCE:3
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220919T150000Z
DTEND:20220919T180000Z
DTSTAMP:20220913T120725Z
UID:59mb4c40bm6622lbqgsaat010g@google.com
CREATED:20220912T131055Z
DESCRIPTION:
LAST-MODIFIED:20220913T094319Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART;VALUE=DATE:20220920
DTEND;VALUE=DATE:20220924
DTSTAMP:20220913T120725Z
UID:50fcgnlamfpqg6bpben2i665df@google.com
CREATED:20220913T094442Z
DESCRIPTION:
LAST-MODIFIED:20220913T094523Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:TRANSPARENT
END:VEVENT
BEGIN:VEVENT
DTSTART:20220926T070000Z
DTEND:20220926T100000Z
DTSTAMP:20220913T120725Z
UID:5eulnlhlqhj3p2n3qol93s4bit@google.com
CREATED:20220913T095624Z
DESCRIPTION:
LAST-MODIFIED:20220913T095624Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:user1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20220926T150000Z
DTEND:20220926T180000Z
DTSTAMP:20220913T120725Z
UID:56dlpijqm7ri172v4jl4m6uo70@google.com
CREATED:20220913T095650Z
DESCRIPTION:
LAST-MODIFIED:20220913T095900Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:user2
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR