chiguyong
|
d36e45bbe7
|
feat(calendar): U2 backend service & REST API
Add CalendarService business logic layer and 14 REST endpoints:
- service.py: event CRUD with RRULE expansion, event types, tags,
invitations, non-admin user search (G5/A3), type-level default
reminder rule cloning
- routes/calendar.py: JWT-authenticated endpoints for events, types,
tags, invitations, user search — with ownership checks
- 17 new tests (12 service + 5 routes), 33 total calendar tests passing
|
2026-06-23 21:43:39 +08:00 |
chiguyong
|
2ea799f6c4
|
feat(calendar): U1 backend data model, storage & RRULE expansion
Add calendar subsystem foundation mirroring documents/ pattern:
- models.py: 8 dataclasses (CalendarEvent with is_invited, EventType,
Tag, EventTag, ReminderRule, ReminderDelivery, ExternalCalendarConfig,
Invitation)
- db.py: aiosqlite bare-connection CRUD for all 8 tables with WAL mode
- recurrence.py: RRULE expansion via dateutil.rrule (RFC 5545)
- 16 unit tests covering DB CRUD and RRULE edge cases (DST, UNTIL, range)
- Add python-dateutil>=2.9 to pyproject.toml
|
2026-06-23 21:30:39 +08:00 |