docs(03): capture phase context
Phase 03: Operational Modules - Implementation decisions documented - Phase boundary established
This commit is contained in:
105
.planning/phases/03-operational-modules/03-CONTEXT.md
Normal file
105
.planning/phases/03-operational-modules/03-CONTEXT.md
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# Phase 3: Operational Modules - Context
|
||||||
|
|
||||||
|
**Gathered:** 2026-03-05
|
||||||
|
**Status:** Ready for planning
|
||||||
|
|
||||||
|
<domain>
|
||||||
|
## Phase Boundary
|
||||||
|
|
||||||
|
Collectors can log field cash collections and remit to management with a verified audit trail; staff can create support tickets and convert them to job orders; technicians update their assigned work; the system calculates technician compensation per job or monthly salary. Client portal ticket submission is Phase 5. Inventory/expense tracking is Phase 4.
|
||||||
|
|
||||||
|
</domain>
|
||||||
|
|
||||||
|
<decisions>
|
||||||
|
## Implementation Decisions
|
||||||
|
|
||||||
|
### Collector field collection
|
||||||
|
- Collector selects subscriber and logs total amount received (lump sum per subscriber)
|
||||||
|
- System applies FIFO allocation against outstanding invoices — same pattern as existing PaymentService
|
||||||
|
- No per-invoice selection in the field — keeps collector workflow fast and simple
|
||||||
|
|
||||||
|
### Remittance verification
|
||||||
|
- Independent count model: office staff enters their own counted total
|
||||||
|
- System compares staff count against collector's logged collections and displays variance
|
||||||
|
- Collector does NOT declare a remittance total — the logged collections are the collector's side of the ledger
|
||||||
|
|
||||||
|
### Variance handling
|
||||||
|
- Variance is recorded and flagged for review but does NOT block remittance completion
|
||||||
|
- Remittance completes with the actual counted amount
|
||||||
|
- Discrepancy tracked separately for management review
|
||||||
|
- Journal entry posts based on verified (staff-counted) amount
|
||||||
|
|
||||||
|
### Daily collection summary
|
||||||
|
- Summary level: totals per collector (collected, remitted, variance, number of collections)
|
||||||
|
- Drill-down to per-subscriber detail on click
|
||||||
|
- Not per-subscriber detail by default — keeps the report scannable
|
||||||
|
|
||||||
|
### Ticket creation and sources
|
||||||
|
- Ticket model supports both staff and subscriber as source types from the start
|
||||||
|
- Only staff creation UI built in Phase 3 — subscriber self-service portal hooks in Phase 5
|
||||||
|
- Avoids model rework when Phase 5 adds portal ticket submission
|
||||||
|
|
||||||
|
### Ticket categories
|
||||||
|
- Admin-configurable categories per tenant (not a fixed enum)
|
||||||
|
- Tenant admin can create, edit, and deactivate ticket categories
|
||||||
|
- Default seed categories provided at tenant creation (No Connection, Slow Speed, Billing Inquiry, New Installation, Equipment Issue, Other)
|
||||||
|
|
||||||
|
### Ticket-to-job-order conversion
|
||||||
|
- One ticket can have multiple job orders (1:many relationship)
|
||||||
|
- Covers complex issues needing multiple visits or different skill types
|
||||||
|
- Each job order tracks independently but rolls up to parent ticket
|
||||||
|
|
||||||
|
### Ticket-job status synchronization
|
||||||
|
- When ALL job orders on a ticket are completed, ticket auto-moves to Resolved
|
||||||
|
- Staff manually closes ticket after confirming resolution with subscriber
|
||||||
|
- Two-step: auto-resolve (system) → close (staff confirmation)
|
||||||
|
|
||||||
|
### Technician compensation model
|
||||||
|
- Hybrid model: technician can have base monthly salary PLUS per-job bonuses
|
||||||
|
- Both components are optional — pure salary, pure per-job, or hybrid all supported
|
||||||
|
- Admin configures per technician
|
||||||
|
|
||||||
|
### Per-job rate structure
|
||||||
|
- Flat rate per job type (e.g., Installation = ₱500, Repair = ₱300)
|
||||||
|
- Admin sets rates per job type at the tenant level
|
||||||
|
- No tiered/distance-based rates — simple and predictable
|
||||||
|
|
||||||
|
### Job completion for compensation
|
||||||
|
- Only jobs with "completed" status count toward per-job compensation
|
||||||
|
- Cancelled, failed, or in-progress jobs earn nothing
|
||||||
|
- No partial credit mechanism
|
||||||
|
|
||||||
|
### Compensation summary
|
||||||
|
- Summary level: technician name, total jobs completed, base salary, job bonuses, total compensation
|
||||||
|
- Drill-down to job-by-job detail (type, date, rate) per technician
|
||||||
|
- Same drill-down pattern as collector daily summary — consistent report UX
|
||||||
|
|
||||||
|
### Claude's Discretion
|
||||||
|
- Zone/territory data model design
|
||||||
|
- Ticket priority levels and SLA implementation
|
||||||
|
- Job order status state machine details
|
||||||
|
- Exact report query optimization
|
||||||
|
- Remittance variance threshold for flagging (if any)
|
||||||
|
|
||||||
|
</decisions>
|
||||||
|
|
||||||
|
<specifics>
|
||||||
|
## Specific Ideas
|
||||||
|
|
||||||
|
- Collector payment logging reuses existing PaymentService FIFO allocation pattern — consistency across payment entry points
|
||||||
|
- Reports follow summary-with-drill-down pattern throughout (collector summary, compensation summary)
|
||||||
|
- Ticket categories seeded with ISP-relevant defaults but fully configurable
|
||||||
|
|
||||||
|
</specifics>
|
||||||
|
|
||||||
|
<deferred>
|
||||||
|
## Deferred Ideas
|
||||||
|
|
||||||
|
None — discussion stayed within phase scope
|
||||||
|
|
||||||
|
</deferred>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Phase: 03-operational-modules*
|
||||||
|
*Context gathered: 2026-03-05*
|
||||||
Reference in New Issue
Block a user