73 lines
2.0 KiB
Markdown
73 lines
2.0 KiB
Markdown
|
|
# Commute Architecture
|
||
|
|
|
||
|
|
## Purpose
|
||
|
|
|
||
|
|
Commute is part of personal report parity and household-aware personality.
|
||
|
|
|
||
|
|
The original Jibo report-skill had a commute section that could speak about getting to work, leaving soon, or being too early or too late. In OpenJibo, that behavior now starts with a loop-scoped commute profile so we can stay faithful to stock behavior first and add richer routing later.
|
||
|
|
|
||
|
|
## Current Shape
|
||
|
|
|
||
|
|
The cloud now models commute as persisted loop data instead of a hardcoded reply.
|
||
|
|
|
||
|
|
The current pieces are:
|
||
|
|
|
||
|
|
- `CommuteProfileRecord`
|
||
|
|
- `ICommuteReportProvider`
|
||
|
|
- `CloudStateCommuteReportProvider`
|
||
|
|
- `Person/ListCommute`
|
||
|
|
- `Person/UpsertCommute`
|
||
|
|
|
||
|
|
## Data Model
|
||
|
|
|
||
|
|
The commute profile is stored per loop and can optionally be tied to a person.
|
||
|
|
|
||
|
|
Typical fields include:
|
||
|
|
|
||
|
|
- `LoopId`
|
||
|
|
- `MemberId`
|
||
|
|
- `Mode`
|
||
|
|
- `WorkHour`
|
||
|
|
- `WorkMinute`
|
||
|
|
- `OriginName`
|
||
|
|
- `DestinationName`
|
||
|
|
- `TypicalDurationMinutes`
|
||
|
|
- `IsEnabled`
|
||
|
|
- `IsComplete`
|
||
|
|
|
||
|
|
The provider uses the loop-scoped profile to decide whether commute is ready, missing setup, or ready to render a spoken answer.
|
||
|
|
|
||
|
|
## Runtime Behavior
|
||
|
|
|
||
|
|
At runtime, the commute provider:
|
||
|
|
|
||
|
|
- reads the current loop from the request context
|
||
|
|
- loads the loop commute profile from cloud state
|
||
|
|
- uses the profile plus current time to compute minutes until work
|
||
|
|
- merges in same-day calendar pressure when a calendar event exists before the commute window
|
||
|
|
- returns a safe setup response when the commute profile is missing or incomplete
|
||
|
|
|
||
|
|
## Personal Report Integration
|
||
|
|
|
||
|
|
Personal report uses the commute provider as a section in the broader household report.
|
||
|
|
|
||
|
|
That means the report can now speak in the familiar Jibo shape:
|
||
|
|
|
||
|
|
- weather
|
||
|
|
- calendar
|
||
|
|
- commute
|
||
|
|
- news
|
||
|
|
|
||
|
|
## Next Gaps
|
||
|
|
|
||
|
|
The current commute provider is intentionally conservative.
|
||
|
|
|
||
|
|
Next steps can include:
|
||
|
|
|
||
|
|
- a richer travel-time source
|
||
|
|
- map or transit integration
|
||
|
|
- better depart-time commentary
|
||
|
|
- preference-based commute suppression or reminders
|
||
|
|
|
||
|
|
For now the goal is to keep the interface stable and the behavior stock-like.
|