Ticket Management System (Issue #85)
Overview
KoproGo provides a complete maintenance ticket system for property managers (syndics) and co-owners. Tickets track maintenance requests from creation through resolution, with automatic due dates based on priority.
Belgian Context
Belgian copropriété law (Article 577-8 §4 Code Civil) requires the syndic to ensure proper maintenance of common areas. This system provides:
Traceability: Full audit trail of maintenance requests
SLA compliance: Automatic due dates by priority level
Contractor management: Assignment and progress tracking
Workflow
Open → Assigned → InProgress → Resolved → Closed
↓ ↓
Cancelled Reopened → Open
States
Open: Ticket created by owner or syndic
Assigned: Contractor designated
InProgress: Work started
Resolved: Work completed, pending validation
Closed: Validated and archived
Cancelled: Ticket no longer relevant
Priorities & SLA
Priority |
Due Time |
Use Case |
|---|---|---|
Critical |
1 hour |
Gas leak, flooding |
Urgent |
4 hours |
Elevator stuck, no heat |
High |
24 hours |
Broken lock, water leak |
Medium |
3 days |
Light replacement |
Low |
7 days |
Cosmetic repair |
Categories
Plumbing, Electrical, Heating, Cleaning, Security, General, Emergency
API Endpoints
POST /tickets- Create ticketGET /tickets/:id- Get ticketGET /buildings/:id/tickets- List building ticketsGET /tickets/my- List requester’s ticketsGET /tickets/assigned- List contractor’s ticketsGET /tickets/status/:status- Filter by statusPUT /tickets/:id/assign- Assign to contractorPUT /tickets/:id/start- Start workPUT /tickets/:id/resolve- Mark resolvedPUT /tickets/:id/close- Close ticketPUT /tickets/:id/cancel- CancelPUT /tickets/:id/reopen- ReopenGET /tickets/statistics- StatisticsGET /tickets/overdue- Overdue ticketsDELETE /tickets/:id- Delete
Architecture
Domain:
backend/src/domain/entities/ticket.rs(310 lines)Use Cases:
backend/src/application/use_cases/ticket_use_cases.rs(18 methods)Repository:
backend/src/infrastructure/database/repositories/ticket_repository_impl.rsHandlers:
backend/src/infrastructure/web/handlers/ticket_handlers.rs(17 endpoints)Migration:
backend/migrations/20251117000000_create_tickets.sqlBDD Tests:
backend/tests/features/tickets.feature(17 scenarios)
Audit Events
TicketCreated, TicketAssigned, TicketStatusChanged,
TicketResolved, TicketClosed, TicketCancelled,
TicketReopened, TicketDeleted