Skip to content

REF-501-05: Service Spec

ADR: ADR-501 — Service DeliveryEscopo: Service lifecycle states (project mode), field reference, auto-criação via Entitlement, naming convention


1. Lifecycle States (Project Mode)

Quando lifecycle = project, o Service segue uma state machine com 7 estados:

EstadoSignificadoTransições permitidas
proposalServiço proposto, aguardando aprovação-> approved, cancelled
approvedAprovado pelo cliente, aguardando início-> in_progress, cancelled
in_progressTrabalho em andamento-> on_hold, delivered, cancelled
on_holdTemporariamente pausado (bloqueio externo)-> in_progress, cancelled
deliveredEntregas concluídas, aguardando aceite cliente-> closed, in_progress (ajustes solicitados)
closedAceite do cliente recebido, serviço encerradoEstado terminal
cancelledCanceladoEstado terminal

Transições de estado registram timestamp e responsável para trilha de auditoria. Quando lifecycle = ongoing, o Service permanece active indefinidamente (sem state machine de projeto).

2. Service Field Reference

CampoTipoDescrição
service_idauto-incrementIdentificador interno
entitlement_idFKEntitlement pai (classe SVC) — obrigatório
organization_idFKOrganization proprietária
service_typeenumservice, lab, development
lifecycleenumongoing ou project
titlestringNome do projeto/serviço
descriptiontextDescrição detalhada
statusenumEstados conforme tabela acima (project) ou active (ongoing)
priorityenumlow, normal, high, urgent
start_datedate (nullable)Data de início efetivo
estimated_enddate (nullable)Data estimada de conclusão (project mode)
actual_enddate (nullable)Data real de conclusão
contract_idFK (nullable)Contract de SLA/jurídico vinculado
jira_project_keystring (nullable)Chave do projeto Jira (ex: PROJ)
assigned_teamstring (nullable)Referência interna de equipe
metadataJSONExtensível para dados adicionais

3. Auto-Criação via Entitlement

Quando um Entitlement de classe SVC é provisionado (a partir de aceitação de Quote), o sistema cria automaticamente um Service com status proposal. O admin revisa e transiciona para approved quando pronto para início. ServiceRequests são criadas sob o Service conforme necessário.

4. Naming Convention

A classe de orquestração do domínio Service no namespace Middag\Account\Domain\Service\ é nomeada ProjectService (em vez de ServiceService) para evitar colisão com o padrão de sufixo "Service" da convenção DDD usada neste codebase.