🔐

Documentação Confidencial

SCPRI - Sistema de Consulta de Políticas e Regras Internas
v1.0 Protegido

❌ Senha incorreta. Tente novamente.
✅ Senha correta! Abrindo documento...
💡 Dica: A senha é SCPRI-2026-DOC (copie exatamente como está, incluindo os hífens).
Entre em contato com o administrador para obter acesso.
Protegido com PBKDF2-SHA256 + Salt (100k iterações)

SCPRI

Sistema de Consulta de Políticas e Regras Internas

Documentação v1.0 - CONFIDENCIAL

📋 Resumo Executivo

🎯 Objetivo
Sistema inteligente baseado em IA (RAG) que permite funcionários consultar políticas, procedimentos e regras internas via chat conversacional, reduzindo em 60% o volume de tickets para RH.
🏗️ Arquitetura
Microserviços com Next.js (Frontend), NestJS/Python FastAPI (Backend), PostgreSQL + pgvector (Dados), Redis (Cache), e integração com LLMs via RAG.
⏱️ Cronograma
MVP em 16 semanas (4 meses), dividido em 8 sprints de 2 semanas. Go-live planejado com capacidade para 1000 requisições/minuto.
50
Req. Funcionais
40
Req. Não-Funcionais
57
User Stories
99.9%
SLA

📑 Especificação de Requisitos (SRS)

Módulo de Chat Inteligente

IDRequisitoPrioridadeMétrica
RF-001Login via SSO corporativoAltaLogin < 2s
RF-002Chatbot linguagem naturalAlta85% precisão
RF-003Técnica RAGAltaScore > 0.8
RF-004Citação de fontesAlta100% respostas
RF-005Avaliação thumbs up/downMédiaRegistrado
RF-006Histórico conversasMédia90 dias
RF-007Sugestões relacionadasMédia3 sugestões
RF-008Detecção não-saber + RHAltaEscalonamento < 5s
RF-009Multi-idioma PT/EN/ESBaixav2.0
RF-010Compartilhar respostasMédiaLink expirável

Requisitos Não-Funcionais

IDRequisitoMétricaEstratégia
RNF-001Tempo resposta< 3sRedis + Streaming
RNF-002Disponibilidade99.9%K8s HA
RNF-003Throughput1000 req/minAuto-scaling
RNF-011TLS1.3Cert-Manager
RNF-012CriptografiaAES-256HashiCorp Vault
RNF-014RBACRow-levelCasbin + PG RLS
RNF-020LGPD/GDPRPrivacy by DesignAnonimização

📦 Backlog do Produto

Sprint 1-2
Fundação Técnica + Autenticação
Setup K8s, CI/CD, SSO, estrutura base (US-001 a US-010)
Sprint 3-4
Chat Core + Base de Conhecimento
Pipeline RAG, CRUD docs, upload (US-011 a US-030)
Sprint 5-6
IA + Administração
Fine-tuning, dashboard, relatórios (US-031 a US-044)
Sprint 7-8
Integrações + Lançamento
APIs, Slack/Teams, testes (US-045 a US-057)
IDUser StoryPtsSprintStatus
US-006Login com conta corporativa82To Do
US-011Perguntas linguagem natural132To Do
US-021Cadastrar políticas53To Do
US-031Implementar RAG133To Do
US-038Dashboard métricas85To Do

🔗 Matriz de Rastreabilidade

RequisitoCaso UsoUser StoryComponenteTeste
RF-001 (Login)UC-01US-006Auth ServiceTC-001
RF-002 (Chat)UC-02US-011Chat EngineTC-002
RF-003 (RAG)UC-02US-031RAG PipelineTC-003
RF-004 (Fontes)UC-03US-012Chat EngineTC-004
RF-021 (CRUD)UC-20US-021Document ServiceTC-021
RF-036 (Dash)UC-35US-038DashboardTC-036
📊 Cobertura
0/104 testes
RF: 0/50 | RNF: 0/40
🎯 Aceitação
Precisão: 85%
Tempo: < 3s
SLA: 99.9%
NPS: > 50

🎭 Casos de Uso (UML)

🏗️

Visão Geral

Atores: Funcionário, Gestor, Admin, Auditor, RH

Sistemas: SSO, Serviço de IA

💬 Módulo de Chat
UC-01: Autenticar
UC-02: Consultar Política
UC-03: Visualizar Fonte
UC-04: Avaliar Resposta
UC-05: Ver Histórico
UC-06: Sugestões
UC-07: Escalar RH
UC-08: Modo Anônimo
📚 Base de Conhecimento
UC-20: Cadastrar Doc
UC-21: Versionar
UC-22: Categorizar
UC-23: Indexar Auto
UC-24: Upload
UC-25: Aprovar
UC-26: Gerar FAQ
UC-27: Métricas
⚙️ Administração
UC-35: Dashboard
UC-36: Gerenciar Users
UC-37: Integrações
UC-38: Treinar IA
UC-39: Config Prompts
UC-42: Não Respondidas
UC-43: Relatórios
UC-44: Auditoria

Pipeline RAG

# UC-02: Consultar Política class RAGPipeline: def process_query(self, query, user_context): intent = self.intent_classifier.classify(query) query_embedding = self.encoder.encode(query) contexts = self.vector_store.similarity_search( query_embedding, k=5, filter={"department": user_context.department} ) prompt = self.build_prompt(query, contexts, user_context) response_stream = self.llm.generate_stream(prompt) return self.format_response(response_stream, contexts)

🏗️ Documento de Arquitetura

🖥️

C4 Model - Nível 1

Next.js → Kong → NestJS/FastAPI

PostgreSQL+pgvector | Redis | ES | MinIO

OpenAI/LLM | Azure AD | Slack | LDAP

🎨 Frontend
Next.js 14
Tailwind + shadcn/ui
TanStack Query
Zustand
Socket.io
⚙️ Backend
Kong/AWS ALB
NestJS (Auth/Docs)
FastAPI (Chat)
Celery + Redis
🗄️ Dados
PostgreSQL 15
pgvector
Redis
Elasticsearch
MinIO/S3
🤖 IA/ML
LangChain
OpenAI/Local LLM
text-embedding-3
RAG Pipeline
LoRA/QLoRA

ADRs

ADRDecisãoJustificativa
ADR-001RAG vs Fine-tuningSem re-treinamento, menor custo, transparência
ADR-002pgvector vs PineconeMenor complexidade, ACID, custo reduzido
ADR-003MicroserviçosPython ML + Node.js I/O, escala independente

🗃️ Diagrama Entidade-Relacionamento

🗄️

Modelo ER

users | departments | roles | conversations | messages | documents | chunks | embeddings | feedbacks | audit_logs

👤 users
id (PK)
email (UK)
name
department_id (FK)
role_id (FK)
preferences (JSONB)
💬 conversations
id (PK)
user_id (FK)
is_anonymous
context (JSONB)
satisfaction_score
Particionado mês
📄 documents
id (PK)
author_id (FK)
title, slug (UK)
status, visibility
content_text (FULLTEXT)
file_hash
🔍 embeddings
id (PK)
chunk_id (FK)
embedding (VECTOR 1536)
model_name
ivfflat index

Schema pgvector

CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE embeddings ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), chunk_id UUID REFERENCES chunks(id) ON DELETE CASCADE, embedding VECTOR(1536), model_name VARCHAR(100) NOT NULL ); CREATE INDEX ON embeddings USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);

📖 Dicionário de Dados

users

CampoTipoTam.Obrig.DefaultRegras
idUUID36Simuuid_generate_v4()PK
emailVARCHAR255Sim-UK, válido
nameVARCHAR255Sim-Min 2 chars
department_idUUID36Sim-FK
role_idUUID36Sim-FK
is_activeBOOLEAN-Simtrue-
preferencesJSONB-Não{}Tema
created_atTIMESTAMP-SimCURRENT_TIMESTAMP-

conversations

CampoTipoObrig.DefaultDescrição
idUUIDSimuuid_generate_v4()PK
user_idUUIDNãoNULLFK (NULL=anônimo)
is_anonymousBOOLEANSimfalseLGPD
contextJSONBNão{}Intenções
satisfaction_scoreINTEGERNãoNULLNPS 0-10

messages

CampoTipoObrig.Descrição
idUUIDSimPK
conversation_idUUIDSimFK
typeENUMSimuser, assistant, system, error
contentTEXTSimMax 4000 chars
sourcesJSONBNãoCitações
latency_msFLOATNãoTempo ms

🎨 Wireframes

1. Chat Funcionário

[Logo] SCPRI [🔔] [👤] [⚙️]
🤖 Assistente
Olá! Como posso ajudar?
🏖️ Férias 💰 Benefícios
👤 Você
Quanto tempo de férias tenho?
🤖 Assistente
Você tem direito a 30 dias de férias.
📄 Fontes:
[1] Política Férias 2024 - Seção 3.2
👍 👎 [💬 Fale com RH]
💬 Digite... [📎] [🎤] [➤]

2. Dashboard Admin

[Logo] SCPRI Admin [Dashboard] [Docs] [Users] [Config]
1,247
📊 Total Chats
87%
✅ Taxa Acerto
2.3s
⏱️ Tempo Médio
📈 Volume
[Gráfico]
🎯 Top Perguntas
1. Férias (234x)
2. Benefícios (189x)

3. Gestão Documentos

Documentos
+ Novo
📄 Política de Férias 2024
📁 RH | ✅ Publicado | v2.3
[✏️] [🗑️]
📄 Código de Conduta
📁 Compliance | 🟡 Em Revisão
[✏️] [🗑️]

4. Editor com Workflow

Status: 🟡 Em Revisão | v2.3 | Maria S.
Aprovar ✅ Rejeitar ❌
Título:
Política de Férias 2024
Conteúdo:
# 1. Objetivo
# 2. Abrangência
# 3. Direitos...
Salvar Enviar Revisão