RI-SE / Eltariff-API

1 stars 1 forks source link

Hantera helgdagar i API-definition #2

Open mattiaspalmqvist opened 1 week ago

mattiaspalmqvist commented 1 week ago

Lördag, söndag och helgdagar behöver kunna beskrivas i definitionen.

Vi föreslår att det ska representeras i form av en tydlig kalender/lista med de dagar eller återkommande tider som ska specialhanteras. Vi vill ha en explicit defintion så att det inte uppstår misstolkningar.

mattiaspalmqvist commented 6 days ago

Förslag på hantering av helger och röda dagar: Lägga till "daysOfWeek", "datesIncluded" och "datesExcluded" i varje activePeriod.

Det blir enkelt att hantera olika sekvenser av dagar i veckan, måste inte vara helger. En lista med datum gör också att det kan vara vilka dagar som helst, måste inte vara röda dagar.

En begränsning som detta kanske medför är att "frequency" måste vara "P1D" när man anväder dessa fälten i sina activePeriods.

Exempel:

"recurringPeriods": [
  {
    "reference": "main",
    "frequency": "P1D",
    "activePeriods": [
      {
        "daysOfWeek": [1, 2, 3, 4 ,5],
        "datesIncluded": [],
        "datesExcluded": ["241224", "241225", "241226", "241231", "250101", "250106"],
        "fromIncluding": "07:00:00",
        "toExcluding": "20:00:00"
      }
    ]
  }
]
"recurringPeriods": [
  {
    "reference": "main",
    "frequency": "P1D",
    "activePeriods": [
      {
        "daysOfWeek": [1, 2, 3, 4 ,5],
        "fromIncluding": "00:00:00",
        "toExcluding": "07:00:00"
      },
      {
        "daysOfWeek": [1, 2, 3, 4 ,5],
        "fromIncluding": "20:00:00",
        "toExcluding": "00:00:00"
      },
      {
        "daysOfWeek": [6, 7],
        "datesIncluded": ["241224", "241225", "241226", "241231", "250101", "250106"],
        "datesExcluded": [],
        "fromIncluding": "00:00:00",
        "toExcluding": "00:00:00"
      }
    ]
  }
]
larwa99 commented 6 days ago

Jag tycker man kan överväga att ha dessa definitioner på en separat plats i datastrukturen och referera till den när det behövs i components. Dvs något i stil med:

"calendarPeriods": [
  {
    "reference": "weekday",
      "definition":  {
        "includedDaysOfWeek": [1, 2, 3, 4, 5],
      }
  },
  {
    "reference": "weekend",
      "definition":  {
        "includedDaysOfWeek": [6, 7],
      }
   },
  {
    "reference": "completeweek",
      "definition":  {
        "includedPeriods": ["weekdays", "weekend"],
      }
   },
  {
    "reference": "extended_weekend",
      "definition":  {
        "includedPeriods": ["weekend"],
        "includedDates": ["241224", "241225", "241226", "241231","250101", "250106"],
      }
  }
 ]

...och används i någon component:

"recurringPeriods": [
  {
    "reference": "main",
    "frequency": "P1D",
    "activePeriods": [
      {
        "periodReference": "weekday",
        "fromIncluding": "00:00:00",
        "toExcluding": "07:00:00"
      },
      {
        "periodReference": "weekday",
        "fromIncluding": "20:00:00",
        "toExcluding": "00:00:00"
      },
      {
        "periodReference": "extended_weekend",
        "fromIncluding": "00:00:00",
        "toExcluding": "00:00:00"
      }
    ]
  }
]