Skip to content

eezzekl/sdd-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

InventarioApi - Sistema de Gestión (Legacy)

⚠️ IMPORTANTE: CÓDIGO LEGACY POR DISEÑO Este proyecto ha sido construido intencionalmente siguiendo malas prácticas de arquitectura y desarrollo. Su propósito es puramente pedagógico para el curso "IA para Desarrolladores", sirviendo como base para ejercicios de:

  • Identificación de Deuda Técnica.
  • Aplicación de Spec-Driven Development (SDD).
  • Refactorización progresiva sin romper funcionalidad.

🚀 Cómo ejecutar

  1. Asegúrate de tener instalado el SDK de .NET 6 o superior.
  2. Navega a la carpeta del proyecto: cd InventarioApi
  3. Ejecuta el comando:
    dotnet run
  4. La API estará disponible en: http://localhost:5197 (revisar consola para puerto exacto).

📋 Endpoints Disponibles

Método Endpoint Descripción
GET /api/productos Lista todos los productos
GET /api/productos/{id} Obtiene un producto por ID
POST /api/productos Crea un nuevo producto
PUT /api/productos/{id} Actualiza un producto existente
DELETE /api/productos/{id} Elimina un producto
POST /api/productos/{id}/stock Ajusta el stock (recibe { "delta": N })

🚩 Mapa de Deuda Técnica (Antipatrones Implementados)

Para los fines del ejercicio, se han incluido deliberadamente los siguientes problemas:

  • Fat Controllers: Toda la lógica de negocio, orquestación y validación vive directamente en ProductosController.cs.
  • God Class (Helper): La clase InventarioHelper.cs mezcla acceso a archivos (I/O), lógica de validación, cálculos y logging.
  • Acoplamiento Fuerte: No se utiliza Inyección de Dependencias. Las clases se instancian manualmente mediante new.
  • Persistencia Precaria: El sistema lee y sobreescribe el archivo inventario.json completo en cada operación.
  • Inconsistencia de Errores: Las respuestas de error no siguen un estándar (algunas son strings, otras objetos JSON, otras excepciones crudas).
  • Nomenclatura Mixta (Spanglish): Mezcla desordenada de inglés y español en nombres de variables y métodos (listaProductos, GetById, isValido).
  • Manejo de Logging: Escritura síncrona directa a log.txt sin control de concurrencia ni abstracción.

Material desarrollado para la Sesión 2 - Bloque 4 del curso "IA para Desarrolladores".

About

Proyecto siguiendo malas prácticas de arquitectura y desarrollo, con intenciones pedagogicas.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages