Portal do Fornecedor - Documentação

Documentação técnica, fluxos de arquitetura e integrações.

1. Introdução

O Portal do Fornecedor (Concert) permite que fornecedores gerenciem suas Faturas (Notas Fiscais) e solicitem novas Ordens de Compra (OCs). Originalmente construído apenas com HTML e JS injetados sob o ecossistema Power Platform, o projeto passou por uma modernização para React + Vite no Frontend e Cloudflare Workers (Hono) no backend para abstrair o manuseio das APIs e melhorar o SEO, performance e segurança.

2. Arquitetura

                    graph TD
                        A[Navegador do Fornecedor
React / Vite] -->|HTTPS| B(Cloudflare Worker
API Proxy - Hono.js) B -->|Gatilho Webhook POST| C{Power Automate} C -->|Leitura/Escrita| D[(SharePoint / Dataverse)] style A fill:#E6F4FD,stroke:#0C4280,stroke-width:2px style B fill:#F6AD55,stroke:#DD6B20,stroke-width:2px style C fill:#4299e1,stroke:#2b6cb0,stroke-width:2px,color:#fff style D fill:#48BB78,stroke:#2F855A,stroke-width:2px,color:#fff

O Cloudflare Worker age como uma camada de proxy segura. O Frontend não guarda mais os gigantescos links Webhooks do PowerAutomate. Ao invés disso, o React bate em /api/invoices/submit do Worker, e o Worker assina e retransmite o payload de forma segura injetando o Webhook real proveniente de suas Environment Variables (Secrets).

2.1. Variáveis e Segredos (Cloudflare Workers)

O projeto Cloudflare api-worker-portal-fornecedor depende da configuração destas 6 variáveis para funcionar corretamente (todas injetadas via WRANGLER SECRETS):

  • PA_LOGIN_FLOW: URL do Power Automate para verificar credenciais.
  • PA_SUBMIT_NF_FLOW: URL do Automate para salvar as faturas.
  • PA_SUBMIT_OC_FLOW: URL para gerar a solicitação de OC.
  • PA_LIST_OC_FLOW: URL para retornar as requisições de OC.
  • PA_RESPONSAVEIS_FLOW: URL para retornar coordenadores / unidades e responsáveis.
  • PA_FORGOT_PASSWORD_FLOW: URL para recuperar a senha perdida.

3. Fluxos Principais

3.1. Autenticação & Cadastro

O Cadastro de Usuário agora possui validação de campos local e repassa os dados a um JSON via backend. O Login salva um `portalToken` no LocalStorage mantendo a persistência da seção no FrontEnd.

3.2. Envio de Faturas (Notas Fiscais)

  • 1
    Fornecedor preenche o formulário

    Obrigatório: OC Pai, Valor e Descrição. Anexos obrigatórios: PDF da NF e XML da NF.
    O anexo de Boletim de Medição é opcional e pode ser de qualquer tipo de formato.

  • 2
    Conversão de Base64

    Todos os arquivos são lidos pela API de Arquivos Nativa do navegador de convertidos nativamente para formato Base64 antes de enviar.

  • 3
    Cloudflare Processa

    Repassa o Payload como Status inicial: Fatura Criada.

Pipeline de Aprovações (Backend Power Automate)

                            flowchart LR
                                A((Portal)) -->|Envia| B[Status: Fatura Criada]
                                B --> C[1ª Aprovação: Coordenador]
                                C -->|Aprova| D[2ª Aprovação: Financeiro]
                                C -->|Reprova| E((Reprovado - Email))
                                D -->|Aprova| F((Pagamento Concluído))
                                D -->|Reprova| G((Reprovado - Email))
                        

3.3. Solicitações de Ordem de Compra

Fluxos de solicitação contam com renderização sob demanda: a lista de Responsáveis e Coordenadores é dinamicamente carregada com base na escolha da Unidade da Concert feita pelo Fornecedor. Arquivos em Base64 também são suportados no array de anexos.

                    graph TD
                        A[Preenchimento da OC] --> B{Possui Unidade?}
                        B -->|Sim| C[Carrega Responsaveis_Flow]
                        C --> D(Envio via /api/oc-requests/submit)
                        D --> E[Status: Pendente Aprovação]
                    

4. Stack Tecnológico

React / Vite

Ecossistema frontend renderizado rápido, usando react-router-dom para as navegações seguras e modais declarativos.

TailwindCSS

Design System, criado para mimetizar precisamente as cores do projeto originário (#0C4280 / brand-light).

Cloudflare Workers

Roteamento e proteção de infraestrutura serveless rodando na borda (Edge). Escrito com o leve micro-framework Hono.js.

Power Automate

Base do banco de dados, aprovação de fluxos, e interações diretas via envio SMTP de emails para coordenação.