Pular para o conteúdo principal

Funcionários

Homologação da rota /funcionarios, criação/edição via /parceiros/novo (com estado) e detalhe unificado em /parceiros/:id quando o registo é funcionário. Inclui cenários desejados mesmo que ainda não existam na UI — para guiar pendências.


Lista (/funcionarios)

  • Cabeçalho — Título “Funcionários” e texto sobre credenciais de acesso.
  • Permissão — Acesso com AdminUsers (rota protegida); sem permissão, fluxo de negação adequado.
  • Novo Funcionário — Link para /parceiros/novo com state: { presetPartnerType: "funcionario" }; formulário abre com tipo funcionário e fluxo “Novo funcionário”.
  • Resumo (EmployeeCardSummary) — Seis cartões: Total, Ativos, Inativos, Com login, Ativos (atual), Acesso ao sistema — dados de /api/employees/summary (ou endpoint equivalente); loading com skeletons; erro com “Não foi possível carregar o resumo.”
  • Filtros — Busca (reinicia página), status (todos/ativo/inativo), departamento (texto livre, filtro department), login (todos/habilitado/desabilitado), Limpar Filtros.
  • API da listaGET /api/employees com query descriptor; ordenação por nome ascendente.
  • Erro na lista — Mensagem genérica sobre permissões ou servidor.
  • Tabela — Colunas: código, nome, documento, email, telefone (phone ou cell), cargo, departamento, status, login (Sim/Não), ações.
  • Células vazias — “—” onde aplicável.
  • Ver detalhe — Ícone olho → /parceiros/{id}; detalhe reconhece kind === "employee" e mostra fluxo de funcionário.
  • Lista vazia — “Nenhum funcionário encontrado com os filtros aplicados.”
  • PaginaçãoPAGE_SIZE 10, visível com total > 0.

Cadastro e edição de funcionário (/parceiros/novo)

  • Modo novo — Abas: Dados básicos, Endereços, Documentos, Permissões (só para tipo funcionário).
  • Modo editar — A partir do detalhe, state: { mode: "edit", kind: "employee", employee }; título “Editar funcionário”; PUT /api/employees/{id} com campos mapeados; redirect para /parceiros/{id} ou /funcionarios.
  • Validação — Nome e tipo obrigatórios; se preencher credenciais parcialmente, exigir usuário + senha + email; mensagens toast.
  • Criação com loginPOST /api/employees com userName, password, canLogin, initialAccess (rascunho de permissões quando aplicável).
  • Endereços e documentos no cadastro de funcionário — Persistidos na API (POST por item) tal como em parceiro comercial, ou ocultar abas até existir backend.
    Hoje: o submit de funcionário usa apenas create/update employee; endereços/documentos do formulário podem não ser gravados para funcionário. (pendência de implementação — alinhar UI ao contrato da API)
  • Botão Voltar no cadastro — Comportamento esperado: voltar para /funcionarios quando o fluxo foi iniciado a partir de funcionários.
    Hoje: pode voltar sempre para /parceiros. (pendência / melhoria de UX)

Detalhe funcionário (/parceiros/:id)

  • Loading / erro / não encontrado — Skeleton, mensagem e voltar para lista adequada.
  • Voltar — Navega para /funcionarios.
  • Cabeçalho — Nome, badge Funcionário, status, código.
  • Editar — Abre /parceiros/novo com estado de edição.
  • Abas — Dados gerais, Endereços (contagem), Documentos (contagem), Permissões (PermissoesTab com userId).
  • Toggle / gestão de login — Ação explícita para habilitar/desabilitar login (PATCH .../login) onde existir na UI.
    Hook useToggleEmployeeLoginMutation existe; confirmar se há botão no detalhe ou noutro ecrã. (homologar ou registar pendência)

Funcionalidades alargadas (backlog)

  • Exclusão de funcionário — Ação com confirmação e DELETE /api/employees/{id}; atualizar lista e resumo.
    Mutação existe; pode faltar botão na lista/detalhe. (pendência de UI)
  • Exportar lista — CSV/Excel. (pendência opcional)
  • Debounce na busca — Reduzir chamadas à API. (melhoria)
  • Departamento como select — Lista fixa de departamentos da API. (melhoria)

Regressão

  • Acentos e emails — Busca e exibição corretas.
  • Deep link — Abrir /parceiros/:id de funcionário diretamente (bookmark).

Registe na equipa quando endereços/documentos de funcionário no cadastro e o botão Voltar contextual estiverem alinhados com a API e a UX.