task-ep.1.6
This commit is contained in:
844
plans/task-ep.1.6.md
Normal file
844
plans/task-ep.1.6.md
Normal file
@@ -0,0 +1,844 @@
|
||||
# Task EP.1.6 – Calendar Projection, Workspace & Big Calendar Foundation
|
||||
|
||||
**Status:** Foundation Implemented
|
||||
|
||||
**Priority:** Critical
|
||||
|
||||
**Type:** Projection Platform / Workspace / UI Foundation
|
||||
|
||||
---
|
||||
|
||||
# Depends On
|
||||
|
||||
* EP.1.1 Activity Domain Foundation
|
||||
* EP.1.2 Activity Integration & Legacy Follow-up Adapter
|
||||
* EP.1.3 Business Event Foundation
|
||||
* EP.1.4 Projection Foundation & Delivery Reliability
|
||||
* EP.1.4.1 Transactional Outbox Activation & Worker Runtime
|
||||
* EP.1.5 Timeline Projection Foundation
|
||||
* BU-R.0 Business Blueprint Freeze
|
||||
* BU-R.0.1 Workspace & Activity Blueprint
|
||||
* BU-R.1 Business Capability Audit
|
||||
* AR.1 Architecture Transition Plan
|
||||
* AR.2 Epic Technical Design
|
||||
* AR.2 Workspace UI/UX Design Note
|
||||
* ENG.0 Engineering Constitution
|
||||
|
||||
---
|
||||
|
||||
# Objective
|
||||
|
||||
Introduce the first production Calendar Workspace of ALLA OS by combining:
|
||||
|
||||
* Calendar Projection
|
||||
* Calendar Workspace
|
||||
* Big Calendar UI Foundation
|
||||
* Activity scheduling
|
||||
* Business milestones
|
||||
* Team visibility
|
||||
* Calendar interaction
|
||||
|
||||
Calendar becomes the operational scheduling workspace for CRM while preserving existing source-domain ownership.
|
||||
|
||||
Calendar is **NOT**:
|
||||
|
||||
* a source-of-truth
|
||||
* another Activity module
|
||||
* another Opportunity module
|
||||
* another Quotation module
|
||||
|
||||
Calendar is a governed projection and operational workspace.
|
||||
|
||||
---
|
||||
|
||||
# Business Outcome
|
||||
|
||||
After EP.1.6 users can answer:
|
||||
|
||||
* What should I do today?
|
||||
* Which customers should I visit?
|
||||
* Which follow-ups are overdue?
|
||||
* Which quotations are expiring?
|
||||
* Which projects are Hot Projects?
|
||||
* Which approvals are waiting?
|
||||
* Which customer visits are scheduled?
|
||||
* What is my team's workload today?
|
||||
* What are tomorrow's priorities?
|
||||
|
||||
Managers gain a Team Calendar without creating duplicate business data.
|
||||
|
||||
---
|
||||
|
||||
# Calendar Business Principles
|
||||
|
||||
## Calendar is Projection
|
||||
|
||||
Calendar is generated from:
|
||||
|
||||
* Activity
|
||||
* Business Events
|
||||
* Opportunity milestones
|
||||
* Quotation milestones
|
||||
* Approval milestones
|
||||
* Legacy adapters during rebuild
|
||||
|
||||
Calendar rows are rebuildable.
|
||||
|
||||
---
|
||||
|
||||
## Activity Owns Operational Work
|
||||
|
||||
Editable Calendar events always belong to Activity.
|
||||
|
||||
Examples:
|
||||
|
||||
* Follow-up
|
||||
* Meeting
|
||||
* Site Survey
|
||||
* Visit
|
||||
* Internal Task
|
||||
* Phone Call
|
||||
* Reminder
|
||||
|
||||
Calendar actions must call Activity Services.
|
||||
|
||||
Calendar never edits projection rows directly.
|
||||
|
||||
---
|
||||
|
||||
## Milestones Remain Source-Owned
|
||||
|
||||
Read-only Calendar milestones include:
|
||||
|
||||
* Expected Award Date
|
||||
* Expected Delivery Date
|
||||
* Quotation Expiration
|
||||
* Approval Due
|
||||
* Approval Escalation
|
||||
* PO Milestones
|
||||
|
||||
Editing must always occur through the owning domain.
|
||||
|
||||
---
|
||||
|
||||
## Calendar ≠ Timeline
|
||||
|
||||
Timeline answers:
|
||||
|
||||
> What happened?
|
||||
|
||||
Calendar answers:
|
||||
|
||||
> What must happen?
|
||||
|
||||
Both consume Business Events but serve different business purposes.
|
||||
|
||||
---
|
||||
|
||||
# UI Foundation Decision
|
||||
|
||||
The Calendar UI must adopt:
|
||||
|
||||
**lramos33/big-calendar**
|
||||
|
||||
Repository:
|
||||
|
||||
```text
|
||||
https://github.com/lramos33/big-calendar
|
||||
```
|
||||
|
||||
This repository becomes the Calendar UI foundation only.
|
||||
|
||||
It does **NOT** become:
|
||||
|
||||
* Calendar database
|
||||
* Calendar backend
|
||||
* Activity service
|
||||
* Projection runtime
|
||||
* CRM authorization
|
||||
* Source-of-truth
|
||||
|
||||
The governed architecture remains:
|
||||
|
||||
```text
|
||||
Activity / Opportunity / Quotation / Approval
|
||||
↓
|
||||
Business Events
|
||||
↓
|
||||
Projection Runtime
|
||||
↓
|
||||
crm_calendar_projection
|
||||
↓
|
||||
Calendar Adapter
|
||||
↓
|
||||
lramos33/big-calendar
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Review Required
|
||||
|
||||
## Governance
|
||||
|
||||
Review:
|
||||
|
||||
* AGENTS.md
|
||||
* Engineering Constitution
|
||||
* Project Foundations
|
||||
* Architecture Rules
|
||||
* UI UX Rules
|
||||
* Task Review Checklist
|
||||
* CRM Authorization Boundaries
|
||||
* LAYOUT.md
|
||||
|
||||
## Business
|
||||
|
||||
Review:
|
||||
|
||||
* Relationship Sales Workspace Blueprint
|
||||
* BU-R.1
|
||||
|
||||
## Architecture
|
||||
|
||||
Review:
|
||||
|
||||
* AR.1
|
||||
* AR.2
|
||||
* Workspace UI UX Design Note
|
||||
|
||||
## Existing Runtime
|
||||
|
||||
Review:
|
||||
|
||||
* Projection Runtime
|
||||
* Worker Runtime
|
||||
* Timeline Projection
|
||||
* Activity Service
|
||||
* Business Event Registry
|
||||
* Calendar-related Activity scheduling
|
||||
* Date formatting utilities
|
||||
* CRM security
|
||||
|
||||
## UI Review
|
||||
|
||||
Must use:
|
||||
|
||||
* ui-ux-pro-max
|
||||
* LAYOUT.md
|
||||
* ui-ux-rules.md
|
||||
|
||||
No code-first Calendar implementation is allowed.
|
||||
|
||||
---
|
||||
|
||||
# Scope
|
||||
|
||||
# Part 1 — Calendar Projection Schema
|
||||
|
||||
Introduce:
|
||||
|
||||
```text
|
||||
crm_calendar_projection
|
||||
```
|
||||
|
||||
Containing:
|
||||
|
||||
* organization
|
||||
* branch
|
||||
* product
|
||||
* activity
|
||||
* customer
|
||||
* lead
|
||||
* opportunity
|
||||
* quotation
|
||||
* approval
|
||||
* owner
|
||||
* assignee
|
||||
* title
|
||||
* summary
|
||||
* location
|
||||
* start
|
||||
* end
|
||||
* timezone
|
||||
* priority
|
||||
* category
|
||||
* editable
|
||||
* milestone
|
||||
* overdue
|
||||
* hot project
|
||||
* projection version
|
||||
* source event
|
||||
* metadata
|
||||
|
||||
Projection rows remain rebuildable.
|
||||
|
||||
---
|
||||
|
||||
# Part 2 — Calendar Projection Builder
|
||||
|
||||
Implement
|
||||
|
||||
CalendarProjectionBuilder
|
||||
|
||||
Responsibilities
|
||||
|
||||
* Business Event mapping
|
||||
* milestone mapping
|
||||
* display enrichment
|
||||
* permission metadata
|
||||
* icon registry
|
||||
* urgency calculation
|
||||
* projection persistence
|
||||
|
||||
Builder never mutates source domains.
|
||||
|
||||
---
|
||||
|
||||
# Part 3 — Activity Event Mapping
|
||||
|
||||
Support
|
||||
|
||||
* activity.created
|
||||
* activity.assigned
|
||||
* activity.reassigned
|
||||
* activity.started
|
||||
* activity.rescheduled
|
||||
* activity.completed
|
||||
* activity.cancelled
|
||||
* activity.deleted
|
||||
|
||||
Projection updates must be incremental through Business Events.
|
||||
|
||||
---
|
||||
|
||||
# Part 4 — Milestone Projection
|
||||
|
||||
Project:
|
||||
|
||||
Opportunity
|
||||
|
||||
* Expected Award Date
|
||||
* Expected Delivery Date
|
||||
* Hot Project review
|
||||
|
||||
Quotation
|
||||
|
||||
* Valid Until
|
||||
* Delivery milestone
|
||||
|
||||
Approval
|
||||
|
||||
* Due
|
||||
* Escalation
|
||||
|
||||
Milestones are read-only.
|
||||
|
||||
---
|
||||
|
||||
# Part 5 — Calendar Projection Consumer
|
||||
|
||||
Activate Calendar consumer through Projection Runtime.
|
||||
|
||||
Must support:
|
||||
|
||||
* checkpoint
|
||||
* retry
|
||||
* dead letter
|
||||
* rebuild
|
||||
* idempotency
|
||||
|
||||
---
|
||||
|
||||
# Part 6 — Calendar Query Service
|
||||
|
||||
Provide secured query service.
|
||||
|
||||
Filters:
|
||||
|
||||
* date range
|
||||
* user
|
||||
* team
|
||||
* branch
|
||||
* product
|
||||
* customer
|
||||
* lead
|
||||
* opportunity
|
||||
* quotation
|
||||
* activity type
|
||||
* category
|
||||
* priority
|
||||
* overdue
|
||||
* milestone
|
||||
* Hot Project
|
||||
* search
|
||||
|
||||
Supported lenses:
|
||||
|
||||
* Personal
|
||||
* Team
|
||||
* Manager
|
||||
* Executive
|
||||
|
||||
---
|
||||
|
||||
# Part 7 — Calendar Rebuild
|
||||
|
||||
Hybrid rebuild.
|
||||
|
||||
Initial build:
|
||||
|
||||
* Activity
|
||||
* Opportunity
|
||||
* Quotation
|
||||
* Approval
|
||||
|
||||
Incremental:
|
||||
|
||||
* Business Events
|
||||
|
||||
Support:
|
||||
|
||||
* organization
|
||||
* customer
|
||||
* opportunity
|
||||
* quotation
|
||||
* date range
|
||||
* dry run
|
||||
* reset existing
|
||||
* restart
|
||||
|
||||
---
|
||||
|
||||
# Part 8 — Calendar Workspace
|
||||
|
||||
Route:
|
||||
|
||||
```text
|
||||
/dashboard/crm/calendar
|
||||
```
|
||||
|
||||
Views:
|
||||
|
||||
* Day
|
||||
* Week
|
||||
* Month
|
||||
* Agenda
|
||||
|
||||
Agenda is default for:
|
||||
|
||||
* mobile
|
||||
* manager
|
||||
* high-density work
|
||||
|
||||
---
|
||||
|
||||
# Part 9 — Big Calendar Source Audit
|
||||
|
||||
Before implementation:
|
||||
|
||||
Audit:
|
||||
|
||||
* dependency compatibility
|
||||
* React compatibility
|
||||
* Next.js compatibility
|
||||
* shadcn compatibility
|
||||
* Tailwind compatibility
|
||||
* accessibility
|
||||
* dark mode
|
||||
* timezone assumptions
|
||||
* drag/drop libraries
|
||||
* demo code
|
||||
* mock data
|
||||
|
||||
Document:
|
||||
|
||||
* files adopted
|
||||
* files rejected
|
||||
* modification strategy
|
||||
|
||||
---
|
||||
|
||||
# Part 10 — Big Calendar Adaptation
|
||||
|
||||
Do **NOT** import the whole repository.
|
||||
|
||||
Only adapt:
|
||||
|
||||
* Calendar Views
|
||||
* Toolbar
|
||||
* Event Rendering
|
||||
* Drag & Drop
|
||||
* Resize
|
||||
* Navigation
|
||||
* User Filter
|
||||
* Working Hours
|
||||
|
||||
Move adapted source into:
|
||||
|
||||
```text
|
||||
src/features/crm/calendar/
|
||||
```
|
||||
|
||||
Maintain ALLA OS architecture.
|
||||
|
||||
---
|
||||
|
||||
# Part 11 — Calendar Adapter Layer
|
||||
|
||||
Introduce
|
||||
|
||||
CalendarProjectionItem
|
||||
|
||||
↓
|
||||
|
||||
BigCalendarEvent
|
||||
|
||||
Implement
|
||||
|
||||
```ts
|
||||
mapCalendarProjectionToBigCalendarEvent()
|
||||
```
|
||||
|
||||
UI must never consume database rows directly.
|
||||
|
||||
---
|
||||
|
||||
# Part 12 — Calendar Rendering Strategy
|
||||
|
||||
Differentiate:
|
||||
|
||||
## Editable Activity
|
||||
|
||||
Examples
|
||||
|
||||
* Follow-up
|
||||
* Meeting
|
||||
* Visit
|
||||
* Site Survey
|
||||
|
||||
Supports
|
||||
|
||||
* Complete
|
||||
* Reschedule
|
||||
* Cancel
|
||||
* Open
|
||||
* Reassign
|
||||
|
||||
---
|
||||
|
||||
## Read-only Milestone
|
||||
|
||||
Examples
|
||||
|
||||
* Expected Award
|
||||
* Expected Delivery
|
||||
* Approval Due
|
||||
* Quotation Expiration
|
||||
|
||||
Supports
|
||||
|
||||
* Open Source
|
||||
* View Detail
|
||||
* Create Related Activity
|
||||
|
||||
No editing.
|
||||
|
||||
---
|
||||
|
||||
# Part 13 — Drag and Drop
|
||||
|
||||
For Activities
|
||||
|
||||
Drag
|
||||
|
||||
↓
|
||||
|
||||
Activity API
|
||||
|
||||
↓
|
||||
|
||||
Business Event
|
||||
|
||||
↓
|
||||
|
||||
Projection Update
|
||||
|
||||
↓
|
||||
|
||||
Calendar Refresh
|
||||
|
||||
No direct Calendar persistence.
|
||||
|
||||
Milestones cannot be dragged.
|
||||
|
||||
---
|
||||
|
||||
# Part 14 — User Filter
|
||||
|
||||
Integrate upstream user filter with:
|
||||
|
||||
* CRM permissions
|
||||
* team hierarchy
|
||||
* ownership
|
||||
* manager scope
|
||||
|
||||
Never load unauthorized users.
|
||||
|
||||
---
|
||||
|
||||
# Part 15 — Working Hours
|
||||
|
||||
Support
|
||||
|
||||
* organization defaults
|
||||
* user preferences
|
||||
* Bangkok timezone
|
||||
* all-day events
|
||||
* current time
|
||||
* business hours
|
||||
|
||||
---
|
||||
|
||||
# Part 16 — Schedule Conflict Detection
|
||||
|
||||
Detect
|
||||
|
||||
* overlapping visits
|
||||
* meetings
|
||||
* site surveys
|
||||
* tasks
|
||||
|
||||
Read-only advisory.
|
||||
|
||||
No blocking.
|
||||
|
||||
---
|
||||
|
||||
# Part 17 — Calendar Summary
|
||||
|
||||
Display
|
||||
|
||||
* Due Today
|
||||
* Overdue
|
||||
* Meetings
|
||||
* Visits
|
||||
* Milestones
|
||||
* Approval Due
|
||||
* Hot Projects
|
||||
|
||||
Derived from Calendar projection.
|
||||
|
||||
---
|
||||
|
||||
# Part 18 — Calendar Performance
|
||||
|
||||
Support
|
||||
|
||||
* indexes
|
||||
* bounded queries
|
||||
* lazy loading
|
||||
* virtual agenda
|
||||
* cursor pagination
|
||||
* projection batching
|
||||
|
||||
No N+1.
|
||||
|
||||
---
|
||||
|
||||
# Part 19 — Projection Health
|
||||
|
||||
Track
|
||||
|
||||
* lag
|
||||
* retries
|
||||
* dead letters
|
||||
* row count
|
||||
* stale rows
|
||||
* rebuild status
|
||||
|
||||
---
|
||||
|
||||
# Part 20 — Calendar Delivery Matrix
|
||||
|
||||
Document
|
||||
|
||||
Source
|
||||
|
||||
↓
|
||||
|
||||
Business Event
|
||||
|
||||
↓
|
||||
|
||||
Projection
|
||||
|
||||
↓
|
||||
|
||||
Calendar Item
|
||||
|
||||
↓
|
||||
|
||||
Workspace
|
||||
|
||||
Include:
|
||||
|
||||
* Activity
|
||||
* Opportunity
|
||||
* Quotation
|
||||
* Approval
|
||||
|
||||
---
|
||||
|
||||
# Part 21 — Calendar UI / UX Review
|
||||
|
||||
Review with
|
||||
|
||||
* ui-ux-pro-max
|
||||
* LAYOUT.md
|
||||
* ui-ux-rules.md
|
||||
|
||||
Validate
|
||||
|
||||
* hierarchy
|
||||
* spacing
|
||||
* typography
|
||||
* icons
|
||||
* filters
|
||||
* density
|
||||
* accessibility
|
||||
* dark mode
|
||||
* responsiveness
|
||||
* keyboard
|
||||
* loading
|
||||
* empty state
|
||||
|
||||
---
|
||||
|
||||
# Part 22 — Upstream License
|
||||
|
||||
Retain
|
||||
|
||||
MIT License
|
||||
|
||||
Document
|
||||
|
||||
* adopted files
|
||||
* attribution
|
||||
* modification history
|
||||
|
||||
---
|
||||
|
||||
# Deliverables
|
||||
|
||||
1. Calendar Projection Schema
|
||||
2. Calendar Builder
|
||||
3. Calendar Projection Consumer
|
||||
4. Calendar Query Service
|
||||
5. Calendar Rebuild
|
||||
6. Calendar Workspace
|
||||
7. Day / Week / Month / Agenda
|
||||
8. Big Calendar Source Audit
|
||||
9. Big Calendar Adaptation
|
||||
10. Calendar Adapter Layer
|
||||
11. Activity Calendar Actions
|
||||
12. Milestone Projection
|
||||
13. Drag & Drop Integration
|
||||
14. User Filter Integration
|
||||
15. Working Hours Support
|
||||
16. Schedule Conflict Detection
|
||||
17. Calendar Summary Panels
|
||||
18. Projection Health
|
||||
19. Calendar Delivery Matrix
|
||||
20. UI/UX Review Report
|
||||
21. Upstream License & Attribution Report
|
||||
22. EP.1.7 Readiness Report
|
||||
|
||||
---
|
||||
|
||||
# Constraints
|
||||
|
||||
Must preserve:
|
||||
|
||||
* Activity ownership
|
||||
* Opportunity ownership
|
||||
* Quotation ownership
|
||||
* Approval ownership
|
||||
* Timeline
|
||||
* Dashboard
|
||||
* Reports
|
||||
* Notifications
|
||||
* Audit Log
|
||||
* CRM security
|
||||
* Projection Runtime
|
||||
|
||||
Do NOT implement:
|
||||
|
||||
* Google Calendar Sync
|
||||
* Outlook Sync
|
||||
* recurring engine
|
||||
* My Day
|
||||
* Manager Workspace
|
||||
* Executive Workspace
|
||||
* Relationship Health
|
||||
* Forecast
|
||||
* automatic Activity generation
|
||||
* legacy migration
|
||||
|
||||
Calendar remains an additive projection.
|
||||
|
||||
---
|
||||
|
||||
# Testing
|
||||
|
||||
* Projection
|
||||
* Builder
|
||||
* Consumer
|
||||
* Rebuild
|
||||
* Activity Events
|
||||
* Milestones
|
||||
* Query
|
||||
* Permissions
|
||||
* Drag & Drop
|
||||
* Resize
|
||||
* Agenda
|
||||
* Day
|
||||
* Week
|
||||
* Month
|
||||
* Timezone
|
||||
* Conflict Detection
|
||||
* UI
|
||||
* Accessibility
|
||||
* Dark Mode
|
||||
* Performance
|
||||
* Compatibility
|
||||
|
||||
---
|
||||
|
||||
# Acceptance Criteria
|
||||
|
||||
* Calendar Projection is fully rebuildable.
|
||||
* Calendar uses Business Events for incremental updates.
|
||||
* Activity remains the only editable operational work source.
|
||||
* Opportunity, Quotation, and Approval milestones are projected as read-only Calendar items.
|
||||
* `lramos33/big-calendar` is successfully adopted as the UI foundation without importing its application shell or backend.
|
||||
* A dedicated adapter maps `CalendarProjectionItem` to the Calendar UI event model.
|
||||
* Drag-and-drop and resize update Activities only through Activity Services and Business Events.
|
||||
* Read-only milestones cannot be dragged or resized.
|
||||
* Personal, Team, Manager, and Executive lenses enforce existing CRM authorization.
|
||||
* Day, Week, Month, and Agenda views are available, with Agenda optimized for managers and mobile.
|
||||
* Working hours, timezone, and schedule conflict detection behave consistently.
|
||||
* Calendar integrates with the Projection Runtime (checkpoint, retry, rebuild, health).
|
||||
* UI conforms to `LAYOUT.md`, `ui-ux-rules.md`, and `ui-ux-pro-max`.
|
||||
* Existing Activity, Timeline, Dashboard, Reports, Notifications, Approval flows, and Follow-up APIs remain unchanged.
|
||||
|
||||
---
|
||||
|
||||
# Success Criteria
|
||||
|
||||
ALLA OS gains a production-ready Calendar Workspace built on a governed Projection architecture.
|
||||
|
||||
Users can plan and execute daily operational work from a single Calendar while preserving Activity, Opportunity, Quotation, and Approval as the authoritative business domains.
|
||||
|
||||
The Calendar foundation is ready for:
|
||||
|
||||
**EP.1.7 – My Day Workspace Foundation**
|
||||
Reference in New Issue
Block a user