# Relatorio Extension API

## Objetivo

Criar a camada oficial da futura extensao Chrome em `/api/v1/extension` sem alterar banco, telas ou regras de negocio, reaproveitando a infraestrutura e os services ja existentes da API.

## Endpoints Criados

- `GET /api/v1/extension/customer-context`
- `GET /api/v1/extension/conversation-context`

## O Que Cada Endpoint Faz

### `GET /api/v1/extension/customer-context`

Recebe `phone` e devolve, em uma unica chamada:

- cliente encontrado por telefone
- perfil da empresa autenticada
- ultimos orcamentos
- ultimos pedidos
- estatisticas comerciais consolidadas
- ticket medio
- valor total comprado
- ultima compra
- status comercial atual
- top produtos relacionados ao historico

### `GET /api/v1/extension/conversation-context`

Recebe `phone` e devolve, em uma unica chamada:

- cliente
- produtos relacionados
- orcamentos recentes
- pedidos recentes
- historico comercial consolidado
- sugestoes disponiveis para a extensao

## Services Reutilizados

### Services existentes reaproveitados diretamente

- `company-service.ts`
- `products-service.ts`
- `quotes-service.ts`

### Services compartilhados extraidos para evitar duplicacao

- `customer-service.ts`
- `orders-service.ts`

### Service agregador criado

- `services/extension/extension-service.ts`

Esse service nao cria regra de negocio nova. Ele apenas compoe respostas usando services compartilhados da camada `/api/v1`.

## Consultas Agregadas

### Customer Context

- lookup de cliente por telefone em `clients`
- perfil da empresa em `profiles` + `companies`
- orcamentos do cliente em `quotes`
- pedidos do cliente em `orders`
- itens em `quote_items` e `order_items`
- enriquecimento de produtos em `products`

### Conversation Context

- reaproveita a mesma base de lookup do `customer-context`
- agrega produtos relacionados a partir do historico real de `quote_items` e `order_items`
- faz fallback para produtos ativos quando nao ha historico suficiente

## Regras Reaproveitadas

- autenticacao externa via `requireApiV1Auth`
- isolamento por empresa via `company-context`
- permissoes por recurso ja existentes:
  - `clients.read`
  - `quotes.read`
  - `orders.read`
  - `products.read`
- envelope padrao da API via `apiJsonOk` e `toApiErrorResponse`
- validacao de query via `validators.ts`
- rate limit da `/api/v1` via `applyApiRateLimit`

## Nenhum Codigo Duplicado

- nao foi criado sistema paralelo para extensao
- nao foi criada regra de negocio nova
- a agregacao acontece em um unico service composto
- consultas de `products`, `quotes`, `company`, `customers` e `orders` ficaram centralizadas ou reaproveitadas em services compartilhados

## Impacto na Arquitetura

- a camada `/api/v1` passa a ter um modulo orientado a experiencia da extensao, e nao apenas recursos CRUD
- a extensao deixa de depender de multiplas chamadas para montar contexto comercial
- a Ktalogu passa a concentrar a agregacao no servidor, preservando controle de permissao, consistencia e performance

## Preparacao Para Evolucao Futura

A estrutura criada permite adicionar depois, sem refatoracao arquitetural:

- `POST /api/v1/extension/create-quote`
- `POST /api/v1/extension/create-order`
- `POST /api/v1/extension/analyze-conversation`
- `GET /api/v1/extension/lead-score`
- `POST /api/v1/extension/image-analysis`
- `POST /api/v1/extension/mockup-generation`

O ponto de extensao natural para isso passa a ser `services/extension/extension-service.ts`.

## Arquivos Principais

- `apps/admin/src/app/api/v1/extension/customer-context/route.ts`
- `apps/admin/src/app/api/v1/extension/conversation-context/route.ts`
- `apps/admin/src/lib/api-v1/services/extension/extension-service.ts`
- `apps/admin/src/lib/api-v1/services/customer-service.ts`
- `apps/admin/src/lib/api-v1/services/orders-service.ts`
- `apps/admin/src/lib/api-v1/services/products-service.ts`
- `apps/admin/src/lib/api-v1/services/quotes-service.ts`
- `apps/admin/src/lib/api-v1/openapi.ts`

## Resultado

A camada `/api/v1/extension` passa a ser a interface oficial entre a futura extensao Chrome e a Ktalogu, com agregacao server-side, autenticacao padrao, validacao, rate limit e reaproveitamento integral da arquitetura atual da API.
