task-f.5
This commit is contained in:
474
plans/task-f.5.md
Normal file
474
plans/task-f.5.md
Normal file
@@ -0,0 +1,474 @@
|
||||
# Task F.5: Approval Automation (Reminder & Escalation) Foundation
|
||||
|
||||
## Status
|
||||
|
||||
Planned
|
||||
|
||||
## Objective
|
||||
|
||||
Build the Approval Automation Foundation that manages reminder scheduling, SLA monitoring, escalation policies, timeout handling, and automatic notification for approval workflows.
|
||||
|
||||
This task extends the Notification Framework (F.4) by introducing time-based automation while keeping approval business logic unchanged.
|
||||
|
||||
The goal is to support:
|
||||
|
||||
* Approval SLA
|
||||
* Reminder policies
|
||||
* Escalation policies
|
||||
* Approval timeout handling
|
||||
* Automation scheduler
|
||||
* Approval queue monitoring
|
||||
* Notification integration
|
||||
|
||||
This task does not implement Email, LINE OA, Webhook delivery, Delegation, Vacation replacement, or Analytics Dashboard.
|
||||
|
||||
---
|
||||
|
||||
# Mandatory Review
|
||||
|
||||
Review:
|
||||
|
||||
* `AGENTS.md`
|
||||
* `docs/standards/project-foundations.md`
|
||||
* `docs/standards/task-catalog.md`
|
||||
* `docs/implementation/task-f2-approval-matrix-foundation.md`
|
||||
* `docs/implementation/task-f3-approval-workflow-builder-foundation.md`
|
||||
* `docs/implementation/task-f4-notification-framework-foundation.md`
|
||||
* Approval Runtime
|
||||
* Notification Framework
|
||||
* CRM Authorization Foundation
|
||||
* Audit Foundation
|
||||
|
||||
---
|
||||
|
||||
# Current Foundation
|
||||
|
||||
Already available:
|
||||
|
||||
```txt
|
||||
Approval Matrix
|
||||
Approval Workflow Builder
|
||||
Approval Runtime
|
||||
Notification Framework
|
||||
Audit Foundation
|
||||
```
|
||||
|
||||
Current limitation:
|
||||
|
||||
```txt
|
||||
Approval waits forever until someone approves.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.1 Approval SLA
|
||||
|
||||
Each workflow step may define:
|
||||
|
||||
```txt
|
||||
SLA Hours
|
||||
Due Date
|
||||
Reminder Policy
|
||||
Escalation Policy
|
||||
Timeout Policy
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```txt
|
||||
Sales Manager
|
||||
|
||||
24 Hours
|
||||
|
||||
Department Manager
|
||||
|
||||
48 Hours
|
||||
|
||||
CEO
|
||||
|
||||
72 Hours
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.2 Reminder Policy
|
||||
|
||||
Create:
|
||||
|
||||
```txt
|
||||
crm_approval_reminder_policies
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```txt
|
||||
Workflow A
|
||||
|
||||
Reminder
|
||||
|
||||
After 1 day
|
||||
|
||||
After 3 days
|
||||
|
||||
After 5 days
|
||||
```
|
||||
|
||||
Rules:
|
||||
|
||||
* Multiple reminder points
|
||||
* Prevent duplicate reminders
|
||||
* Configurable per workflow
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.3 Escalation Policy
|
||||
|
||||
Create:
|
||||
|
||||
```txt
|
||||
crm_approval_escalation_policies
|
||||
```
|
||||
|
||||
Supported targets:
|
||||
|
||||
```txt
|
||||
Manager
|
||||
Requester
|
||||
Explicit User
|
||||
Role
|
||||
Permission Group
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```txt
|
||||
After 3 days
|
||||
|
||||
↓
|
||||
|
||||
Notify Manager
|
||||
|
||||
After 5 days
|
||||
|
||||
↓
|
||||
|
||||
Escalate Director
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.4 Timeout Policy
|
||||
|
||||
Supported actions:
|
||||
|
||||
```txt
|
||||
None
|
||||
|
||||
Auto Reject
|
||||
|
||||
Auto Cancel
|
||||
|
||||
Auto Escalate
|
||||
```
|
||||
|
||||
Timeout actions must be configurable per workflow.
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.5 Automation Scheduler
|
||||
|
||||
Create:
|
||||
|
||||
```txt
|
||||
processApprovalAutomation()
|
||||
```
|
||||
|
||||
Responsibilities:
|
||||
|
||||
```txt
|
||||
Find pending approvals
|
||||
|
||||
↓
|
||||
|
||||
Calculate SLA
|
||||
|
||||
↓
|
||||
|
||||
Send reminders
|
||||
|
||||
↓
|
||||
|
||||
Run escalation
|
||||
|
||||
↓
|
||||
|
||||
Execute timeout actions
|
||||
|
||||
↓
|
||||
|
||||
Publish notification events
|
||||
```
|
||||
|
||||
Rules:
|
||||
|
||||
* Idempotent
|
||||
* Safe to execute repeatedly
|
||||
* Transactional where required
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.6 Approval Queue Monitor
|
||||
|
||||
Add service:
|
||||
|
||||
```txt
|
||||
getPendingApprovalQueue()
|
||||
```
|
||||
|
||||
Return:
|
||||
|
||||
```txt
|
||||
Pending
|
||||
|
||||
Due Today
|
||||
|
||||
Overdue
|
||||
|
||||
Escalated
|
||||
|
||||
Waiting Time
|
||||
|
||||
Remaining SLA
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.7 Notification Integration
|
||||
|
||||
Use existing:
|
||||
|
||||
```txt
|
||||
publishNotificationEvent()
|
||||
```
|
||||
|
||||
Events:
|
||||
|
||||
```txt
|
||||
approval.reminder
|
||||
|
||||
approval.escalated
|
||||
|
||||
approval.timeout
|
||||
```
|
||||
|
||||
No direct Email or LINE sending.
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.8 Calendar Support
|
||||
|
||||
Prepare business calendar support.
|
||||
|
||||
For now support:
|
||||
|
||||
```txt
|
||||
Calendar Days
|
||||
```
|
||||
|
||||
Future-ready for:
|
||||
|
||||
```txt
|
||||
Working Days
|
||||
|
||||
Holiday Calendar
|
||||
|
||||
Business Hours
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.9 APIs
|
||||
|
||||
Create:
|
||||
|
||||
```txt
|
||||
GET /api/crm/approval/automation/pending
|
||||
|
||||
POST /api/crm/approval/automation/run
|
||||
|
||||
GET /api/crm/approval/reminder-policies
|
||||
|
||||
POST /api/crm/approval/reminder-policies
|
||||
|
||||
GET /api/crm/approval/escalation-policies
|
||||
|
||||
POST /api/crm/approval/escalation-policies
|
||||
```
|
||||
|
||||
Admin only.
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.10 UI
|
||||
|
||||
Add settings pages:
|
||||
|
||||
```txt
|
||||
Approval Reminder Policies
|
||||
|
||||
Approval Escalation Policies
|
||||
```
|
||||
|
||||
Features:
|
||||
|
||||
* CRUD policies
|
||||
* SLA configuration
|
||||
* Reminder schedule
|
||||
* Escalation target
|
||||
* Timeout action
|
||||
|
||||
Use existing design system.
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.11 Audit
|
||||
|
||||
Audit actions:
|
||||
|
||||
```txt
|
||||
approval_reminder_sent
|
||||
|
||||
approval_escalated
|
||||
|
||||
approval_timeout
|
||||
|
||||
approval_policy_created
|
||||
|
||||
approval_policy_updated
|
||||
|
||||
approval_policy_deleted
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Scope F.5.12 Permissions
|
||||
|
||||
Verify or add:
|
||||
|
||||
```txt
|
||||
crm.approval.automation.read
|
||||
|
||||
crm.approval.automation.run
|
||||
|
||||
crm.approval.reminder.manage
|
||||
|
||||
crm.approval.escalation.manage
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Documentation
|
||||
|
||||
Create:
|
||||
|
||||
```txt
|
||||
docs/implementation/task-f5-approval-automation-foundation.md
|
||||
```
|
||||
|
||||
Document:
|
||||
|
||||
```txt
|
||||
SLA model
|
||||
|
||||
Reminder model
|
||||
|
||||
Escalation model
|
||||
|
||||
Timeout model
|
||||
|
||||
Automation scheduler
|
||||
|
||||
Notification integration
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Explicit Non-Scope
|
||||
|
||||
Do not implement:
|
||||
|
||||
* SMTP Email
|
||||
* LINE OA
|
||||
* Webhook delivery
|
||||
* Vacation replacement
|
||||
* Delegate approval
|
||||
* AI reminder suggestions
|
||||
* Approval Analytics Dashboard
|
||||
* Real-time push notifications
|
||||
|
||||
These belong to later tasks.
|
||||
|
||||
---
|
||||
|
||||
# Verification
|
||||
|
||||
Run:
|
||||
|
||||
```txt
|
||||
npm exec tsc --noEmit
|
||||
|
||||
npm run build
|
||||
```
|
||||
|
||||
Manual verification:
|
||||
|
||||
```txt
|
||||
Create reminder policy
|
||||
|
||||
Create escalation policy
|
||||
|
||||
Submit approval
|
||||
|
||||
Reminder generated after SLA
|
||||
|
||||
Escalation generated after configured threshold
|
||||
|
||||
Timeout action executes correctly
|
||||
|
||||
Notification created
|
||||
|
||||
Approval remains consistent
|
||||
|
||||
Audit logs created
|
||||
|
||||
Scheduler safe to rerun
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Definition of Done
|
||||
|
||||
Task is complete when:
|
||||
|
||||
* Approval SLA exists
|
||||
* Reminder policies exist
|
||||
* Escalation policies exist
|
||||
* Timeout policies exist
|
||||
* Automation scheduler exists
|
||||
* Reminder notifications are generated
|
||||
* Escalation notifications are generated
|
||||
* Notification Framework is reused
|
||||
* Audit logs capture automation
|
||||
* Existing approval flow remains operational
|
||||
|
||||
Result:
|
||||
|
||||
```txt
|
||||
Approval Automation Foundation = Established
|
||||
|
||||
Reminder Engine = Operational
|
||||
|
||||
Escalation Engine = Operational
|
||||
|
||||
Ready for F.6 Approval Analytics & Dashboard
|
||||
```
|
||||
Reference in New Issue
Block a user