codigo0/backend/README_ESTRUCTURA.md
planetazuzu 5d7a6500fe refactor: Fase 1 - Clean Architecture, refactorización modular y eliminación de duplicidades
-  Ticket 1.1: Estructura Clean Architecture en backend
-  Ticket 1.2: Schemas Zod compartidos
-  Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares)
-  Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares)
-  Ticket 1.5: Eliminación de duplicidades (~50 líneas)

Cambios principales:
- Creada estructura Clean Architecture en backend/src/
- Schemas Zod compartidos en backend/src/shared/schemas/
- Refactorización modular de drugs y procedures
- Utilidades genéricas en src/utils/ (filter, validation)
- Eliminados scripts obsoletos y documentación antigua
- Corregidos errores: QueryClient, import test-error-handling
- Build verificado y funcionando correctamente
2026-01-25 21:09:47 +01:00

3.3 KiB

🏗️ Estructura Clean Architecture - Backend

📁 Estructura de Carpetas

backend/src/
├── domain/                          # 🎯 DOMAIN LAYER
│   ├── entities/                    # Entidades de negocio
│   │   ├── ContentItem.ts
│   │   ├── Drug.ts
│   │   ├── GlossaryTerm.ts
│   │   ├── MediaResource.ts
│   │   ├── MedicalReview.ts
│   │   └── index.ts
│   │
│   ├── value-objects/               # Objetos de valor inmutables
│   │   ├── ContentStatus.ts
│   │   ├── ContentPriority.ts
│   │   └── index.ts
│   │
│   ├── services/                     # Servicios de dominio (pendiente)
│   ├── repositories/                 # Interfaces de repositorios
│   │   ├── IContentRepository.ts
│   │   ├── IDrugRepository.ts
│   │   ├── IGlossaryRepository.ts
│   │   ├── IMediaRepository.ts
│   │   ├── IReviewRepository.ts
│   │   └── index.ts
│   │
│   └── events/                       # Eventos de dominio (pendiente)
│
├── application/                      # 🔧 APPLICATION LAYER
│   ├── services/                     # Servicios de aplicación (pendiente)
│   ├── use-cases/                    # Casos de uso (pendiente)
│   └── dto/                          # Data Transfer Objects (pendiente)
│
├── infrastructure/                    # 🔌 INFRASTRUCTURE LAYER
│   ├── repositories/                 # Implementaciones (pendiente)
│   ├── database/                     # Acceso a BD (pendiente)
│   ├── storage/                      # Almacenamiento (pendiente)
│   ├── cache/                        # Caché (pendiente)
│   └── external/                     # Servicios externos (pendiente)
│
├── presentation/                      # 🌐 PRESENTATION LAYER
│   ├── routes/                       # Rutas Express (existente)
│   ├── middleware/                   # Middleware (existente)
│   └── validators/                   # Validadores Zod (existente)
│
└── shared/                            # 🔗 CÓDIGO COMPARTIDO
    ├── types/                         # Tipos compartidos
    ├── errors/                        # Errores compartidos
    └── utils/                         # Utilidades compartidas

Estado Actual

Completado (Ticket 1.1)

  • Estructura de carpetas creada
  • Interfaces de repositorios definidas
  • Entidades de dominio creadas (tipos TypeScript)
  • Value Objects creados (ContentStatus, ContentPriority)
  • Tipos compartidos exportados
  • Errores de dominio definidos
  • Utilidades compartidas

Pendiente

  • Implementaciones de repositorios (Infrastructure)
  • Servicios de aplicación (Application)
  • Casos de uso (Application)
  • Value Objects adicionales (DoseRange, PatientAge, etc.)
  • Servicios de dominio (Domain)

📝 Próximos Pasos

  1. Ticket 1.2: Crear schemas Zod compartidos
  2. Ticket 1.3: Refactorizar drugs.ts del frontend
  3. Ticket 1.4: Refactorizar procedures.ts del frontend
  4. Ticket 1.5: Eliminar duplicidades

Última actualización: 2025-01-25