Aplicación desktop WPF para validar pedidos recibidos por correo electrónico.
cd src/Prisma.App
dotnet runLa aplicación arranca con 30 correos simulados, pedidos extraídos y datos de ejemplo. No requiere conexión a Outlook, Gemini ni SQL Server.
Prisma.sln
├── Prisma.Core → Modelos, enums, interfaces, configuración
├── Prisma.Infrastructure → Mocks, settings, placeholders para servicios reales
└── Prisma.App → WPF UI, MainWindow, MainWindowState
Archivo: %LocalAppData%\Prisma\settings.json
Se crea automáticamente. Persiste:
- Tema (System/Light/Dark)
- Posición y tamaño de ventana
- Anchos de paneles
- Filtros y búsqueda
- Columnas del DataGrid
En src/Prisma.App/App.xaml.cs, sustituir los registros de DI:
// Antes:
services.AddSingleton<IOutlookMailService, MockOutlookMailService>();
// Después:
services.AddSingleton<IOutlookMailService, GraphOutlookMailService>();Configuración necesaria en settings.json:
{
"outlook": {
"tenantId": "tu-tenant-id",
"clientId": "tu-client-id",
"mailbox": "[email protected]"
}
}Variables de entorno:
PRISMA_OUTLOOK_SECRET→ Client secret de Azure AD
Dependencias NuGet a añadir:
Microsoft.GraphAzure.Identity
// Antes:
services.AddSingleton<IGeminiExtractionService, MockGeminiExtractionService>();
// Después:
services.AddSingleton<IGeminiExtractionService, GeminiExtractionService>();Configuración necesaria en settings.json:
{
"gemini": {
"apiKey": "",
"modelName": "gemini-2.0-flash"
}
}Variables de entorno:
PRISMA_GEMINI_KEY→ API key de Google AI Studio
// Antes:
services.AddSingleton<IEmailRepository, MockEmailRepository>();
services.AddSingleton<IOrderRepository, MockOrderRepository>();
// Después:
services.AddSingleton<IEmailRepository, DapperEmailRepository>();
services.AddSingleton<IOrderRepository, DapperOrderRepository>();Configuración necesaria en settings.json:
{
"sql": {
"connectionString": "Server=localhost;Database=Prisma;Trusted_Connection=True;TrustServerCertificate=True;"
}
}Esquema SQL: src/Prisma.Infrastructure/SqlServer/schema.sql
Dependencias NuGet a añadir:
DapperMicrosoft.Data.SqlClient
| Servicio | Estado |
|---|---|
| Outlook 365 | Mock (placeholder listo) |
| Gemini | Mock (placeholder listo) |
| SQL Server | Mock (schema.sql listo) |
| Persistencia UI | Funcional (JsonSettingsService) |
| Theming | Funcional (System/Light/Dark) |
Los servicios reales NO están activos. Los placeholders contienen la estructura, comentarios y TODOs necesarios para implementar la integración real.