2026-03-26 22:01:06 +00:00
|
|
|
# PhronCare
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 📌 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.
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Incluye módulos principales como:
|
|
|
|
|
- Presupuestos (Quotes)
|
|
|
|
|
- Expediciones (Expeditions)
|
|
|
|
|
- Stock médico con trazabilidad GS1
|
|
|
|
|
- Generación de documentos (PDF / Excel)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 🧱 Arquitectura
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
El sistema sigue una arquitectura estricta por capas:
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Data → Domain → Core → API → UI (Blazor)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
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
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 📦 Estructura del proyecto
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
/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
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## ⚙️ Requisitos
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
- .NET 8 SDK
|
|
|
|
|
- SQL Server
|
|
|
|
|
- Docker (opcional)
|
|
|
|
|
- Node.js (solo si se utiliza en contenedor o build específico)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 🚀 Ejecución local
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
1. Configurar `appsettings.json` con la conexión a base de datos
|
|
|
|
|
2. Verificar que la base de datos esté disponible
|
|
|
|
|
3. Ejecutar la API:
|
|
|
|
|
dotnet run (en proyecto API)
|
|
|
|
|
4. Ejecutar la UI Blazor:
|
|
|
|
|
dotnet run (en proyecto UIBlazor)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Opcional:
|
|
|
|
|
- Ejecutar con Docker Compose si está configurado
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 🔌 Endpoints principales
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
- /api/quotes
|
|
|
|
|
- /api/expeditions
|
|
|
|
|
- /api/stock
|
|
|
|
|
- /api/lsstockscan
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Swagger disponible en:
|
|
|
|
|
- /swagger
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 📄 Generación de documentos
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
El sistema soporta generación de:
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
- PDF (Quotes, Expeditions, Delivery Notes)
|
|
|
|
|
- Excel (exportaciones)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Implementación basada en:
|
|
|
|
|
- DocumentTemplateService
|
|
|
|
|
- Templates Razor
|
|
|
|
|
- PuppeteerSharp
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 🧠 Convenciones del proyecto
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
- Tablas: PascalCase
|
|
|
|
|
- Campos: snake_case
|
|
|
|
|
- Foreign Keys: *_id
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Prefijos por módulo:
|
|
|
|
|
- PhS_ → Sales
|
|
|
|
|
- PhLSM_ → Logística y Stock Médico
|
|
|
|
|
- PhOH_ → Operations Hub
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
Otros:
|
|
|
|
|
- Entidades Domain: prefijo E (EQuoteHeader, etc.)
|
|
|
|
|
- DTOs separados de entidades
|
|
|
|
|
- No usar AutoMapper (usar EntityMapper)
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
---
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
## 🔄 Flujo de desarrollo
|
2025-01-24 19:17:26 -03:00
|
|
|
|
2026-03-26 22:01:06 +00:00
|
|
|
- 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
|