263 lines
7.2 KiB
Markdown
263 lines
7.2 KiB
Markdown
# VideoStudy.app - FASE 1: Respostas às Questões
|
||
|
||
Conforme solicitado na FASE 1, aqui estão as respostas às questões:
|
||
|
||
## 1️⃣ Qual versão do Semantic Kernel você usou?
|
||
|
||
**Resposta:** Semantic Kernel 1.70.0 (versão mais recente estável)
|
||
|
||
### Detalhes:
|
||
- **Package Principal:** `Microsoft.SemanticKernel` 1.70.0
|
||
- **Connector OpenAI:** `Microsoft.SemanticKernel.Connectors.OpenAI` 1.70.0
|
||
- **Connector Ollama:** `Microsoft.SemanticKernel.Connectors.Ollama` 1.70.0-alpha
|
||
- **Status:** Estável, production-ready
|
||
- **Compatibilidade:** .NET 8.0 (LTS até 2026)
|
||
|
||
### Por que 1.70.0?
|
||
- É a versão mais recente disponível no NuGet
|
||
- Suporta todos os providers modernos (Groq, OpenAI, Ollama, Google)
|
||
- Melhorias de performance vs versões anteriores
|
||
- Integração simplificada com minimal APIs
|
||
|
||
### Alterações desde 1.26.0 (na REFERENCES.md):
|
||
- Melhor abstração de providers
|
||
- APIs mais simples e intuitivas
|
||
- Suporte para streaming (não usado em FASE 1, mas pronto para FASE 2)
|
||
- Bug fixes e otimizações
|
||
|
||
---
|
||
|
||
## 2️⃣ Stepwise Planner ainda existe? Se não, qual alternativa?
|
||
|
||
**Resposta:** NÃO, Stepwise Planner foi removido. Alternativa implementada: **Hierarchical Query Analysis com Provider Pattern**
|
||
|
||
### Por que Stepwise Planner foi removido?
|
||
- Focava em multi-step function orchestration (chamadas sucessivas de funções)
|
||
- Padrão obsoleto em Semantic Kernel 1.x
|
||
- Arquitetura moderna preferida: plugin system + agents pattern
|
||
|
||
### Alternativa Implementada:
|
||
Em vez de Stepwise Planner, usamos o padrão **Hierarchical Query Analysis** (observado em ChatRAG):
|
||
|
||
```csharp
|
||
// FASE 1: Estrutura preparada para FASE 2
|
||
1. Query Analysis Stage
|
||
└─ Classifica tipo de requisição
|
||
|
||
2. Strategy Selection Stage
|
||
├─ Overview (todos os documentos)
|
||
├─ Specific (busca direcionada)
|
||
├─ Detailed (multi-conceito)
|
||
└─ Out-of-scope (fallback)
|
||
|
||
3. Execution Stage
|
||
└─ Executa a estratégia selecionada
|
||
|
||
4. Response Generation Stage
|
||
└─ Monta resposta com contexto
|
||
```
|
||
|
||
### Como está preparado em FASE 1:
|
||
- Program.cs tem espaço reservado para orchestração
|
||
- Semantic Kernel está registrado (ready)
|
||
- Estrutura de Provider Pattern implementada
|
||
- Pronto para integrar ChatRAG patterns em FASE 2
|
||
|
||
### Alternativas avaliadas:
|
||
| Padrão | Aplicabilidade | Status |
|
||
|--------|---|---|
|
||
| Stepwise Planner | ❌ Obsoleto (removido 1.x) | Descartado |
|
||
| Plugin System | ⚠️ Complexo para FASE 1 | Futuro |
|
||
| Hierarchical RAG | ✅ Pronto (ChatRAG) | **Escolhido** |
|
||
| Agents Pattern | ⚠️ Nova API (1.70.0+) | FASE 3 |
|
||
|
||
---
|
||
|
||
## 3️⃣ Quais dependências do YTExtractor são essenciais?
|
||
|
||
**Resposta:** 3 categorias de dependências, com prioridades
|
||
|
||
### Categoria 1: ESSENCIAIS (FASE 2)
|
||
```csharp
|
||
// yt-dlp - Extração de legendas
|
||
✅ yt-dlp (ferramenta CLI, não NuGet)
|
||
- Versão: latest (via Python/binário)
|
||
- Propósito: Download de metadados + subtítulos
|
||
- Alternativa: YoutubeExplode NuGet
|
||
|
||
// MongoDB - Persistência
|
||
✅ MongoDB.Driver 3.1.0
|
||
✅ MongoDB.Bson 3.1.0
|
||
- Propósito: Cache de vídeos processados
|
||
- Necessário em: FASE 2+
|
||
- Alternativa: Em-memory cache (FASE 1)
|
||
```
|
||
|
||
### Categoria 2: IMPORTANTES (FASE 2)
|
||
```csharp
|
||
// Google YouTube API (Backup)
|
||
⚠️ Google.Apis.YouTube.v3 1.69.0.3707
|
||
- Propósito: Alternativa de extração de legendas
|
||
- Status: Não essencial se yt-dlp funciona
|
||
- Quando usar: Fallback, videos restritivos
|
||
|
||
// Logging
|
||
⚠️ Serilog.AspNetCore 9.0.0
|
||
⚠️ Serilog.Sinks.Seq 9.0.0
|
||
- Propósito: Rastreamento de operações
|
||
- Essencialidade: Nice-to-have (debug)
|
||
```
|
||
|
||
### Categoria 3: OPCIONAIS
|
||
```csharp
|
||
// Swagger/OpenAPI
|
||
❌ Swashbuckle.AspNetCore 6.6.2
|
||
- Propósito: Documentação automática
|
||
- FASE 1: Não habilitado
|
||
- FASE 2+: Recomendado
|
||
```
|
||
|
||
### Dependências que NÃO usamos (otimização):
|
||
- ❌ Google YouTube API (yt-dlp é mais simples)
|
||
- ❌ Serilog em FASE 1 (logging básico suficiente)
|
||
- ❌ Swagger em FASE 1 (adicionaremos em FASE 2)
|
||
|
||
### Plano de integração FASE 2:
|
||
|
||
**Essencial fazer:**
|
||
```bash
|
||
# Para extração de legendas
|
||
dotnet add package YoutubeExplode
|
||
|
||
# Para transcrição
|
||
dotnet add package Whisper.net
|
||
|
||
# Para screenshots
|
||
# FFmpeg será instalado via Windows installer ou brew
|
||
|
||
# Para persistência
|
||
dotnet add package MongoDB.Driver
|
||
```
|
||
|
||
---
|
||
|
||
## 4️⃣ O design do vcart.me.novo usa Tailwind?
|
||
|
||
**Resposta:** NÃO, vcart.me.novo usa **Bootstrap 5.3.2 + Custom CSS Vanilla**
|
||
|
||
### Análise Detalhada:
|
||
|
||
#### CSS Framework
|
||
```
|
||
✅ Bootstrap 5.3.2
|
||
- Utilizado via CDN em layouts
|
||
- Grid 12-coluna
|
||
- Componentes (btn, card, form-control, etc.)
|
||
|
||
❌ Tailwind CSS
|
||
- NÃO ENCONTRADO
|
||
- Nenhuma referência em arquivos
|
||
- Nenhum arquivo tailwind.config.js
|
||
|
||
✅ Custom CSS (Vanilla)
|
||
- Arquivos: site.css, userpage.css, rating.css
|
||
- Sem SCSS/LESS
|
||
- Sem preprocessador
|
||
- CSS Variables para theming
|
||
```
|
||
|
||
#### Arquitetura CSS em vcart.me.novo
|
||
```css
|
||
/* 1. Bootstrap Grid + Utilities */
|
||
<div class="container mx-auto p-4">
|
||
<div class="row">
|
||
<div class="col-md-6">...</div>
|
||
</div>
|
||
</div>
|
||
|
||
/* 2. Custom CSS para estilos únicos */
|
||
.profile-card {
|
||
border-radius: 15px;
|
||
backdrop-filter: blur(10px); /* Glassmorphism */
|
||
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
|
||
}
|
||
|
||
/* 3. CSS Variables para theming */
|
||
:root {
|
||
--primary-color: #007bff;
|
||
--accent-purple: #764ba2;
|
||
--text-color: #212529;
|
||
}
|
||
```
|
||
|
||
### Por que Bootstrap e não Tailwind?
|
||
|
||
| Critério | Bootstrap 5.3.2 | Tailwind CSS |
|
||
|----------|---|---|
|
||
| **Documentação** | ✅ Vasta | ✅ Excelente |
|
||
| **Curva aprendizado** | ✅ Fácil | ⚠️ Ótima mas customização complexa |
|
||
| **CSS resultante** | ⚠️ Maior | ✅ Menor (via purge) |
|
||
| **Uso em vcart.me.novo** | ✅ SIM | ❌ NÃO |
|
||
| **Padrão de mercado** | ✅ Maduro | ✅ Crescente |
|
||
|
||
### Implementação em VideoStudy.app FASE 1
|
||
|
||
Seguindo padrão vcart.me.novo:
|
||
```razor
|
||
<!-- Bootstrap via CDN -->
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
|
||
<!-- Componentes Bootstrap -->
|
||
<div class="card bg-primary text-white">
|
||
<div class="card-header">Título</div>
|
||
<div class="card-body">Conteúdo</div>
|
||
</div>
|
||
|
||
<!-- Custom CSS para styling único -->
|
||
<style>
|
||
.analysis-panel {
|
||
border-radius: 12px;
|
||
box-shadow: 0 4px 20px rgba(0,123,255,0.15);
|
||
}
|
||
</style>
|
||
```
|
||
|
||
### Decisão para FASE 2+:
|
||
|
||
**Recomendação:** Manter Bootstrap 5.3.2 (conforme vcart.me.novo)
|
||
|
||
Benefícios:
|
||
- ✅ Consistência com referência (vcart.me.novo)
|
||
- ✅ Componentes prontos (modals, accordions)
|
||
- ✅ Responsividade built-in
|
||
- ✅ Sem build step adicional (CDN)
|
||
- ✅ Fácil de customizar com CSS custom
|
||
|
||
---
|
||
|
||
## 📊 RESUMO DAS RESPOSTAS
|
||
|
||
| Questão | Resposta |
|
||
|---------|----------|
|
||
| **Versão SK** | 1.70.0 (latest stable) |
|
||
| **Stepwise Planner** | Não existe → Hierarchical RAG pattern |
|
||
| **YTExtractor deps** | yt-dlp, MongoDB, Serilog (essenciais) |
|
||
| **Tailwind CSS** | Não → Bootstrap 5.3.2 + Custom CSS |
|
||
|
||
---
|
||
|
||
## ✅ Próximos Passos FASE 2
|
||
|
||
Com base nestas respostas:
|
||
|
||
1. **Integrar yt-dlp** para extração de legendas
|
||
2. **Adicionar Whisper.NET** para transcrição avançada
|
||
3. **Implementar Hierarchical RAG** do ChatRAG
|
||
4. **Usar Bootstrap 5.3.2** para UI avançada
|
||
5. **Integrar MongoDB** para persistência
|
||
|
||
---
|
||
|
||
**Data:** 2026-02-06
|
||
**FASE:** 1 - Concluída ✅
|