Reviewed-on: http://saludlab.com.ar:3000/leandro/phronCare/pulls/47
PhronCare
📌 Descripción
PhronCare es una plataforma back-office desarrollada en .NET 8 para la gestión de operaciones en ortopedia y logística médica.
Incluye módulos principales como:
- Presupuestos (Quotes)
- Expediciones (Expeditions)
- Stock médico con trazabilidad GS1
- Generación de documentos (PDF / Excel)
🧱 Arquitectura
El sistema sigue una arquitectura estricta por capas:
Data → Domain → Core → API → UI (Blazor)
Reglas clave:
- NO modificar modelos EF generados por scaffold (Models/Data)
- La lógica de negocio vive en Domain/Core
- Las entidades de dominio (E*) replican estructura de DB
- Core orquesta casos de uso y transacciones
📦 Estructura del proyecto
/src ├── 1.1 Data → EF Models + Repositories ├── 1.2 Domain → Entidades E*, contratos, enums ├── 1.3 Core → Servicios de negocio ├── API → Controllers / Endpoints ├── UIBlazor → Frontend Blazor ├── Documents → Templates PDF / Excel
⚙️ Requisitos
- .NET 8 SDK
- SQL Server
- Docker (opcional)
- Node.js (solo si se utiliza en contenedor o build específico)
🚀 Ejecución local
- Configurar
appsettings.jsoncon la conexión a base de datos - Verificar que la base de datos esté disponible
- Ejecutar la API: dotnet run (en proyecto API)
- Ejecutar la UI Blazor: dotnet run (en proyecto UIBlazor)
Opcional:
- Ejecutar con Docker Compose si está configurado
🔌 Endpoints principales
- /api/quotes
- /api/expeditions
- /api/stock
- /api/lsstockscan
Swagger disponible en:
- /swagger
📄 Generación de documentos
El sistema soporta generación de:
- PDF (Quotes, Expeditions, Delivery Notes)
- Excel (exportaciones)
Implementación basada en:
- DocumentTemplateService
- Templates Razor
- PuppeteerSharp
🧠 Convenciones del proyecto
- Tablas: PascalCase
- Campos: snake_case
- Foreign Keys: *_id
Prefijos por módulo:
- PhS_ → Sales
- PhLSM_ → Logística y Stock Médico
- PhOH_ → Operations Hub
Otros:
- Entidades Domain: prefijo E (EQuoteHeader, etc.)
- DTOs separados de entidades
- No usar AutoMapper (usar EntityMapper)
🔄 Flujo de desarrollo
- API-First
- Stories pequeñas y atómicas
- Branching:
- feature/{issue}-{desc}
- fix/{issue}-{desc}
Commits:
- Conventional Commits
- Uso de “Closes #issue” en PR
📋 Stories y documentación
Las stories del proyecto siguen una plantilla estándar ubicada en:
/docs/story-template.md
Incluye:
- Objetivo
- Contexto
- Alcance
- Criterios de aceptación
- Decisiones de diseño
⚠️ Notas importantes
- No romper contratos existentes de la API
- Mantener consistencia con módulos existentes
- Priorizar claridad sobre complejidad