# Atlas Desk Atlas Desk is a fictional internal support workflow system for small operations teams. ## Vision Give support teams one reliable place to triage customer requests, assign work, track status, and understand operational bottlenecks without relying on shared mailboxes or spreadsheets. ## Goals - Reduce average request triage time by 40 percent. - Make ownership and status visible for every support request. - Provide an audit trail for customer-impacting decisions. ## Non-Goals - Replace the billing system. - Provide public customer self-service in the first release. - Support multi-region deployment before usage requires it. ## Functional Requirements | ID | Requirement | Priority | Status | | --- | --- | --- | --- | | FR-001 | Agents can create, assign, and close support requests. | Must | Accepted | | FR-002 | Managers can view queue health and overdue work. | Must | Accepted | | FR-003 | Users can add internal notes to requests. | Should | Proposed | | FR-004 | The system sends notifications when ownership changes. | Should | Proposed | ## Non-Functional Requirements | Category | Requirement | Measurement | | --- | --- | --- | | Availability | Available during support hours. | 99.5 percent monthly uptime. | | Performance | Common list and detail views feel immediate. | P95 API latency below 300 ms for core endpoints. | | Security | Only authorized users can view or mutate requests. | Authorization tests cover each role. | | Privacy | Customer contact data is minimized and auditable. | Sensitive fields are excluded from debug logs. | | Maintainability | New queue workflows can be added without rewriting the core model. | Feature modules own their workflows. | ## Users And Roles | Role | Description | Key Permissions | | --- | --- | --- | | Agent | Handles support requests. | Create, update, assign, comment, close. | | Manager | Oversees queue health. | All agent permissions plus reporting and reassignment. | | Auditor | Reviews historical activity. | Read-only access to requests and audit events. | ## Tech Stack | Area | Choice | Notes | | --- | --- | --- | | Language | C# and TypeScript | Backend and frontend use separate type systems. | | Framework | ASP.NET Core and Vue | Conventional web application stack. | | Frontend | Vue 3 | Single-page application. | | Backend | ASP.NET Core | Modular monolith API. | | Database | PostgreSQL | Primary transactional store. | | Messaging | None initially | Reconsider if notification volume grows. | | Search | PostgreSQL full-text search | Sufficient for initial request search. | | Cache | None initially | Add only after measured pressure. | ## Runtime | Environment | Purpose | URL or Entry Point | Notes | | --- | --- | --- | --- | | Local | Development | `https://localhost:5173` | Frontend talks to local API. | | Test | Automated validation | CI service containers | Uses ephemeral PostgreSQL. | | Staging | Release verification | `https://staging.atlas-desk.example` | Mirrors production config. | | Production | Live system | `https://atlas-desk.example` | Single-region deployment. | ## Infrastructure | Component | Provider | Responsibility | Notes | | --- | --- | --- | --- | | Hosting | Managed container platform | Run API and frontend assets. | One service initially. | | Storage | PostgreSQL managed database | Store requests, users, audit events. | Daily backups. | | Network | Managed load balancer | TLS and routing. | Internal admin access restricted. | ## Database | Field | Value | | --- | --- | | Database engine | PostgreSQL | | Migration tool | Entity Framework Core migrations | | Backup strategy | Daily automated backup with 14-day retention | | Restore strategy | Restore to staging monthly as a drill | | Data retention | Closed requests retained for 3 years | ## CI/CD | Pipeline | Trigger | Required Checks | Notes | | --- | --- | --- | --- | | CI | Pull request and push to main | Build, unit tests, integration tests, lint | Blocks merge. | | Deploy staging | Push to main | CI success | Automatic. | | Deploy production | Manual approval | Staging smoke test | Release owner approves. | ## Deployment | Area | Policy | | --- | --- | | Deployment strategy | Rolling container deployment | | Rollback strategy | Redeploy previous image and disable feature flags | | Release owner | Support platform maintainer | | Change window | Weekdays before 15:00 local support time | ## Authentication | Field | Value | | --- | --- | | Authentication method | OpenID Connect | | Identity provider | Company identity provider | | Session model | Secure HTTP-only cookie | | Token lifetime | 8-hour workday session | ## Authorization | Field | Value | | --- | --- | | Authorization model | Role-based access with policy checks | | Role source | Identity provider group claims synchronized at login | | Policy location | Backend authorization policies | | Audit requirements | Assignment and close actions generate audit events | ## Logging | Field | Value | | --- | --- | | Logging library | Structured backend logging | | Log sink | Central log service | | Correlation ID | Created at API edge and returned in responses | | Sensitive data policy | Do not log customer email bodies or tokens | ## Monitoring | Signal | Tool | Alert Policy | | --- | --- | --- | | Availability | Health checks | Alert after 3 failed checks. | | Errors | Error tracking | Alert on elevated 5xx rate. | | Performance | API metrics | Alert when P95 exceeds 500 ms for 15 minutes. | | Business metrics | Queue dashboard | Alert managers when overdue work exceeds threshold. | ## Testing | Test Type | Tooling | Required When | | --- | --- | --- | | Unit | Backend and frontend test runners | Domain rules, view logic, formatters. | | Integration | API tests with PostgreSQL | Persistence, auth, and queue workflows. | | End-to-end | Browser automation | Critical request lifecycle. | | Performance | Scripted API checks | Before major queue or reporting changes. | | Security | Dependency audit and auth tests | Each release candidate. | ## Roadmap | Milestone | Target | Outcome | | --- | --- | --- | | M1 | Q1 | Request intake, assignment, and closure. | | M2 | Q2 | Reporting dashboard and overdue alerts. | | M3 | Q3 | Customer-visible request status page. | ## Open Questions | Question | Owner | Needed By | Status | | --- | --- | --- | --- | | Should notification delivery use email only or chat integration too? | Product | M2 planning | Open | | Is audit export required for compliance reviews? | Operations | M1 release | Open |