Skip to content

REF-501-02: ServiceRequest Workflow

ADR: ADR-501 — Service DeliveryEscopo: Fluxo completo de OS, estados, análise detalhada como SR separada, campos, Jira vs Plugin


1. Diagrama de Estados

                                  ┌──── rejected ────► CLOSED

DRAFT ──► PENDING_APPROVAL ──► APPROVED ──► IN_PROGRESS ──► COMPLETED ──► BILLED

                                                └──── blocked ────► ON_HOLD
EstadoSignificadoTransições
draftCriada, aguardando envio para aprovação→ pending_approval
pending_approvalAguardando aprovação do cliente→ approved, closed (rejected)
approvedCliente aprovou, pronta para execução→ in_progress
in_progressTrabalho em andamento→ completed, on_hold
on_holdBloqueada (dependência externa, espera do cliente)→ in_progress
completedTrabalho concluído, UST real registrada→ billed
closedEncerrada sem execução (rejeitada ou cancelada)Estado terminal
billedFaturada ao clienteEstado terminal

2. Fluxo Completo

1. Criação
   ├── Jira: issue criada (primário para equipe)
   ├── Plugin: SR criada via webhook (espelho)
   └── Campos preenchidos: catalog_service, complexity, ust_estimated

2. Triagem
   ├── Validar escopo e determinar complexidade
   ├── USTs pré-aprovadas E adequadas? → Pular para Execução
   └── Caso contrário → Etapa de Aprovação

3. Aprovação
   ├── Requer análise detalhada? → SR de análise separada (ver seção 3)
   ├── Cliente notificado: "OS #X requer aprovação — Y créditos estimados"
   ├── Aprovado → approved
   └── Rejeitado → closed (zero billing)

4. Execução
   ├── Equipe trabalha no Jira
   ├── Status sincronizado Jira → Plugin via webhook
   └── Bloqueio → on_hold (com motivo)

5. Conclusão
   ├── ust_actual preenchido (pode diferir do estimado)
   ├── billed_value calculado: ust_actual × complexity_factor × base_value_at_creation
   └── Status: completed

6. Faturamento
   ├── SR incluída na fatura mensal
   ├── Créditos debitados do CreditBalance (se aplicável)
   └── Status: billed

3. Análise Detalhada como SR Separada

Serviços marcados "Requer Análise" (itens 4-8, 10-13) exigem fase de análise antes da execução.

SR-20260002 (Integração de API — execução)

    └── SR-20260003 (Análise de Requisitos — análise)
        ├── parent_sr: SR-20260002
        ├── Faturável independentemente
        └── Se cliente rejeita execução após análise:
            → SR-20260003 faturada (análise realizada)
            → SR-20260002 closed (zero billing)

Regra crítica: Análise e execução são SRs separadas com faturamento independente.


4. Campos do ServiceRequest

CampoTipoDescrição
idstringFormato SR-YYYYNNNN
entitlement_idFKEntitlement pai (SVC ou ENV)
service_idFKService contêiner (se aplicável)
catalog_serviceenumServiço do catálogo (1-13) ou custom
complexityenumlow / medium / high
ust_estimateddecimalPré-preenchido do catálogo, editável pelo admin
ust_actualdecimalUSTs reais (preenchido na conclusão)
base_value_at_creationdecimalSnapshot do valor base quando SR criada
billed_valuedecimalCalculado: ust_actual × complexity_factor × base_value
statusenumdraft / pending_approval / approved / in_progress / on_hold / completed / closed / billed
requires_analysisbooleanDo catálogo — direciona fluxo de aprovação
parent_srFK (nullable)Se SR de análise, aponta para SR de execução
jira_issue_keystringIssue Jira vinculada (ex: PROJ-123)
billing_modeenumust (padrão) ou hourly (taxa por função)

5. Jira vs Plugin — Responsabilidade por Dado

DadoFonte de VerdadeSyncNotas
Status da OSJiraJira → PluginJira vence para workflow
UST estimadaPluginPlugin → JiraPlugin define, Jira lê
UST realPluginCalculadoDerivado de worklogs Jira + complexidade
Valor faturadoPluginN/APlugin é autoridade única de billing
Tipo de serviçoPluginPlugin → JiraCatálogo do plugin
TarefasJiraN/APlugin não replica gestão de projeto
SLA rulesJiraJira → PluginJira aplica, plugin exibe no portal

6. Criação de SR pelo Cliente (modo standalone)

O cliente pode solicitar ServiceRequests diretamente pelo portal para Entitlements de classe ENV (manutenção de ambientes gerenciados):

EtapaDescrição
1. AcessoNa página de detalhe do Environment, cliente clica "Solicitar Serviço"
2. DadosPreenche: título, descrição, prioridade (low/normal/high/urgent)
3. CriaçãoSistema cria SR com status draft, vinculada ao Entitlement ENV do Environment
4. Númeroservice_request_number gerado atomicamente no formato SR-YYYYNNNN
5. AdminAdmin recebe notificação, revisa a SR e transiciona para pending_approval ou approved

O cliente também pode solicitar via Jira (redirecionamento externo) — nesse caso o admin cria a SR internamente no plugin.

Para SRs vinculadas a Service (modo vinculado), apenas o admin pode criar — o cliente não tem acesso a essa funcionalidade.


7. Notificações

ServiceRequests disparam notificações em pontos-chave do ciclo de vida:

EventoDestinatárioCanal
SR criada (pelo cliente)AdminEmail + painel admin
SR atribuídaResponsável internoEmail + Jira (se vinculado)
SR em review/completedClienteEmail + portal
SR aprovada pelo clienteEquipe internaEmail + Jira
SR atrasada (due_date excedida)Admin + responsávelEmail + alerta admin

NotificationPolicy (configurável no admin) determina quais canais são ativados para cada evento.


8. Portal Visibility (ServiceRequest)

Regras de visibilidade para o cliente no portal:

DadoVisível ao cliente?Nota
StatusSimTodos os estados do workflow
PrioridadeSim
Due dateSim
Título e descriçãoSim
Client notesSimCampo específico para comunicação com cliente
Notas internasNãoVisível apenas para admin e equipe
Horas reaisNãoust_actual não exposto ao cliente
Assigned_toNãoDetalhe interno de atribuição
Billed valueSim (após billed)Visível apenas quando SR está no estado billed
Créditos consumidosSimExibido no extrato de CreditBalance

SRs são exibidas em dois contextos:

  • Modo vinculado: dentro do detalhe do Service pai
  • Modo standalone: na página de detalhe do Environment