feat(calendar): Calendar-Integration Read (Phase 6 von #360) #370
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp#370
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Phase 6 von Epic #360. Calendar-Integration (Read-Only): externe Kalender als blocked-Slots in den Day-View einbinden. Der Planner soll wissen, wann der User schon belegt ist, damit Phase 7 (Planner v1) reale Slots vergeben kann.
v0/v1-Scope ist bewusst Read-Only: ICS-URL-Abos (Outlook/Google/Apple liefern ICS-Exports), kein OAuth, kein Schreiben.
Scope
Schema
calendar_subscriptions:id,ownerSub,name,url(ICS),lastSyncAt,createdAtcalendar_events:id,ownerSub,subscriptionId,uid(ICS UID),title,startsAt,endsAt,allDay,location,createdAt,updatedAtService
CalendarSyncService.syncOne(subscriptionId):subscription.lastSyncAtCalendarSyncService.syncAll(): iteriert alle Subscriptions; wird per Cron getriggert (Default alle 15 Min, viaCALENDAR_SYNC_CRON+CALENDAR_SYNC_DISABLEDEnv).CalendarService.eventsForRange(ownerSub, from, to): liefert die Events im Zeitfenster, sortiert nachstartsAt.API
POST /calendar/subscriptions,GET /calendar/subscriptions,PATCH /calendar/subscriptions/:id,DELETE /calendar/subscriptions/:idGET /calendar/events?from=ISO&to=ISO— Events im RangeDay-View-Integration
GET /planner/todayliefert zusätzlich zuitems(Candidates) auchevents(Calendar-Events des Tages). Format:Tests
CalendarSyncService: ICS-Parsing (Fixture-Datei), Upsert-Idempotenz, lastSyncAt-UpdateCalendarService.eventsForRange: Range-FilterOut of scope (folgt später)
Bezug