# VideoStudy.app - FASE 1 Setup Guide

## ✅ Estrutura Base Criada

```
VideoStudy.app/
├── VideoStudy.API/                     # ✅ Web API (port 5000)
│   ├── Program.cs                      # Endpoints + Semantic Kernel config
│   ├── appsettings.json                # LLM provider configuration
│   └── bin/Debug/...                   # Compiled binaries
│
├── VideoStudy.Desktop/                 # ✅ Blazor Hybrid Desktop App
│   ├── VideoStudy.Desktop/             # Server
│   │   ├── Program.cs                  # App setup + HttpClient
│   │   ├── appsettings.json            # API base URL config
│   │   └── Components/Pages/Home.razor # Main UI with form
│   └── VideoStudy.Desktop.Client/      # WebAssembly client
│
├── VideoStudy.Shared/                  # ✅ Shared Models
│   └── Models.cs                       # AnalysisRequest, AnalysisResponse, etc.
│
├── REFERENCES.md                       # Análise de projetos referência
├── README.md                           # Project documentation
├── SETUP.md                            # Este arquivo
└── VideoStudy.sln                      # Solution file
```

## 🚀 Como Iniciar

### Terminal 1: Executar a API

```bash
cd /mnt/c/vscode/VideoStudy.app/VideoStudy.API
dotnet run
```

**Output esperado:**
```
Building...
Built successfully.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
      Press CTRL+C to quit
```

**Testar Health Check:**
```bash
curl http://localhost:5000/health
```

Resposta esperada:
```json
{"status":"ok","timestamp":"2026-02-06T10:00:00Z"}
```

### Terminal 2: Executar Desktop App

```bash
cd /mnt/c/vscode/VideoStudy.app/VideoStudy.Desktop/VideoStudy.Desktop
dotnet run
```

**Output esperado:**
```
Building...
Built successfully.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5001
      Press CTRL+C to quit
```

**Acesso:** Abra browser em http://localhost:5001

## 🎯 Como Testar a Integração

### 1. Abrir a Interface Web
- URL: http://localhost:5001
- Você verá um formulário com:
  - Campo de URL do YouTube
  - Seletor de idioma
  - Opções: Modo Fast vs Advanced
  - Botão "Analyze Video"

### 2. Enviar Requisição de Teste

Preencha no formulário:
- **YouTube URL:** `https://www.youtube.com/watch?v=dQw4w9WgXcQ`
- **Language:** English
- **Mode:** Fast
- Clique em **"Analyze Video"**

### 3. Verificar Resposta

Você deve ver:
- ✅ Barra de progresso
- ✅ Debug logs mostrando cada etapa
- ✅ Resultado com:
  - Video Title
  - Transcript Summary
  - Analysis
  - Key Moments

### 4. Testar via API diretamente (curl)

```bash
curl -X POST http://localhost:5000/api/analyze \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "language": "en",
    "mode": "fast"
  }'
```

Resposta esperada:
```json
{
  "videoTitle": "Example Video: dQw4w9WgXcQ",
  "transcript": "This is a simulated transcript. Mode: fast, Language: en",
  "analysis": "This is a simulated analysis of the video content...",
  "keyMoments": [
    {
      "timestamp": "00:00:15",
      "description": "Introduction",
      "startSeconds": 15
    },
    {
      "timestamp": "00:02:30",
      "description": "Main topic",
      "startSeconds": 150
    },
    {
      "timestamp": "00:05:00",
      "description": "Conclusion",
      "startSeconds": 300
    }
  ],
  "status": "success",
  "errorMessage": null
}
```

## 🔧 Configuração de Providers

### Usar Ollama (Local)

1. Instale Ollama: https://ollama.ai
2. Inicie: `ollama serve`
3. Puxe modelo: `ollama pull llama2`
4. Edite `VideoStudy.API/Program.cs` (linha 32):

```csharp
builder.Services.AddOpenAIChatCompletion(modelId, new Uri(endpoint), apiKey);
```

Comente e descomente a linha 23:

```csharp
builder.Services.AddOllamaChatCompletion("llama2", new Uri("http://localhost:11434"));
```

### Usar Groq (Cloud, Grátis)

1. Crie conta: https://console.groq.com/
2. Gere API Key
3. Configure em `VideoStudy.API/appsettings.json`:

```json
"LlmSettings": {
  "ApiKey": "gsk_your_actual_key_here"
}
```

## 🏗️ Estrutura de Arquivos Criados

### VideoStudy.Shared/Models.cs
```csharp
- AnalysisRequest      (input)
- AnalysisResponse     (output)
- KeyMoment            (timestamp + description)
- ProgressUpdate       (for future streaming)
```

### VideoStudy.API/Program.cs
- GET `/health` - Health check
- POST `/api/analyze` - Main endpoint (atualmente retorna mock data)
- Semantic Kernel registrado (pronto para FASE 2)
- CORS habilitado
- LLM provider configurable

### VideoStudy.Desktop/Home.razor
- URL input
- Language selector
- Mode selector (Fast/Advanced)
- Progress bar
- Results display
- Debug logs
- Error handling

## 📋 Portas Utilizadas

| Aplicação | Porta | URL |
|-----------|-------|-----|
| API | 5000 | http://localhost:5000 |
| Desktop | 5001 | http://localhost:5001 |

⚠️ Se as portas estiverem em uso:
```bash
# Encontrar processo usando porta 5000
netstat -ano | findstr :5000   # Windows
lsof -i :5000                  # Linux/Mac

# Mudar porta no appsettings.json ou:
dotnet run --urls "http://localhost:5100"
```

## ✨ O que Funciona

- ✅ Build da solução
- ✅ API respondendo em `/health` e `/api/analyze`
- ✅ Desktop conectando à API
- ✅ Formulário web funcional
- ✅ Debug logs mostrando fluxo
- ✅ Tratamento de erros básico
- ✅ Semantic Kernel integrado (ready for FASE 2)

## ⏭️ Próximos Passos (FASE 2)

- [ ] Integrar YouTubeService (download de vídeos)
- [ ] Integrar yt-dlp para extração de legendas
- [ ] Integrar Whisper.NET para transcrição
- [ ] Integrar FFmpeg para screenshots
- [ ] Implementar WebSocket para progress real-time
- [ ] Adicionar persistência (MongoDB)
- [ ] Implementar modos Fast/Advanced completos

## 🐛 Troubleshooting

### "Cannot connect to API"
- Verifique se API está rodando em outro terminal
- Verifique que porta 5000 está aberta
- Verifique `appsettings.json` do Desktop

### "Build failed"
```bash
dotnet clean
dotnet restore
dotnet build
```

### "Semantic Kernel errors"
- Verifique versão: `dotnet package search Microsoft.SemanticKernel`
- Atualize: `dotnet package update`

## 📞 Informações de Compilação

- **Framework:** .NET 8.0
- **Último Build:** ✅ Sucesso (0 erros, 0 warnings)
- **Projetos:** 4 (Shared, API, Desktop, Desktop.Client)
- **Tamanho solução:** ~50MB (depois de compilada)

---

**Status FASE 1:** ✅ COMPLETO E FUNCIONANDO
