# NeuraV2 Legal Platform Foundation

Aplicação full stack em evolução para um sistema jurídico multi-tenant focado em imigração, automação de fluxos e questionário inteligente orientado por lacunas.

## Estrutura

- `docs/system-foundation.md`: arquitetura, modelagem, relacionamentos, estrutura sugerida e MVP.
- `docs/system-test-playbook.md`: roteiro completo de homologacao do sistema, incluindo aprendizado humano e validacao do fluxo ponta a ponta.
- `database/mysql/001_schema.sql`: DDL completo MySQL 8.
- `database/mysql/002_seed_master_data.sql`: dados mestres iniciais.
- `apps/api`: backend Node.js + Fastify + Prisma.
- `apps/web`: frontend React + Vite.

## Decisões principais

- Multi-tenant por `law_firm_id`.
- Chaves de IA por escritório em tabela separada de credenciais, criptografadas.
- Camada de fatos estruturados (`case_facts`, `fact_sources`) como base para IA e auditoria.
- Questionário inteligente tratado como subsistema próprio, com análise, sessão, perguntas, respostas e eventos.
- Repositório unificado com item genérico (`repository_items`) e tabelas especializadas por canal/tipo.

## O que já funciona

- `POST /auth/signup`: cria `law_firm`, `office`, `user`, `user_roles` e sessão do admin.
- `POST /auth/login`: login com e-mail e senha.
- `GET /auth/me`: perfil autenticado.
- `GET /dashboard/bootstrap`: dashboard inicial com contadores, clientes, casos, status e credenciais de IA.
- `POST /clients`: criação de cliente.
- `POST /cases`: criação de caso.
- `POST /ai/credentials`: grava credencial OpenAI criptografada por escritório.
- Frontend com rotas:
  - `http://localhost:5173/`
  - `http://localhost:5173/signup`
  - `http://localhost:5173/login`
  - `http://localhost:5173/app`

## Como rodar

1. Garanta que exista um MySQL local acessível em `127.0.0.1:3306`.
2. Use o arquivo `.env` da raiz como referência local.
3. O schema já pode ser aplicado com:
   - `mysql -uroot -e "CREATE DATABASE IF NOT EXISTS neurav2_legal CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"`
   - `mysql -uroot neurav2_legal < database/mysql/001_schema.sql`
   - `mysql -uroot neurav2_legal < database/mysql/002_seed_master_data.sql`
4. Instale dependências:
   - `npm install --cache .npm-cache`
5. Gere o client Prisma:
   - `npx prisma generate --schema apps/api/prisma/schema.prisma`
6. Suba os serviços:
   - `npm run dev:api`
   - `npm run dev:web`
   - `npm run dev:phpmyadmin`

## Sincronizacao com producao via lftp

O projeto agora inclui um script pronto em [scripts/lftp-sync.sh](/Users/mini1/Downloads/neurav2/scripts/lftp-sync.sh) para sincronizar frontend build, backend build, `storage` e dump opcional do banco.

1. Copie o arquivo de exemplo:
   - `cp .env.lftp.example .env.lftp`
2. Preencha host, usuario, senha e diretorios remotos.
3. Rode um dos comandos:
   - `npm run sync:prod:lftp`
   - `npm run sync:prod:lftp:files`
   - `npm run sync:prod:lftp:storage`
   - `npm run sync:prod:lftp:db`

Observacoes importantes:
- `lftp` sincroniza arquivos. Para dados do MySQL, o script envia um `mysqldump` compactado; a importacao no servidor de producao continua sendo feita do lado remoto.
- O script nao executa `npm install` nem reinicia processos no servidor remoto.
- As credenciais ficam em `.env.lftp`, que permanece fora do versionamento.

## phpMyAdmin local

- URL: `http://127.0.0.1:8081`
- Server: `127.0.0.1`
- Username: `root`
- Password: deixe em branco
- Database opcional: `neurav2_legal`

## Próximos módulos

1. Provisionar MySQL 8 e aplicar `database/mysql/001_schema.sql`.
2. Aplicar `database/mysql/002_seed_master_data.sql`.
3. Expandir para repositório unificado, documentos, workflows, facts e questionário inteligente.
4. Conectar a camada de IA aos `ai_runs`, `case_facts` e `questionnaire_*`.
