De principio a fin
Flujo completo de un modulo dentro del CRM
Esta pagina une todo lo anterior en un recorrido unico para que veas que piezas intervienen y en que orden.
Diagrama general
Disenar el modulo
↓
Crear entidades, configuraciones EF y DbContext
↓
Declarar ModuleDescriptor y ModuleInitializer
↓
Crear migracion y seed base
↓
Compilar o desplegar DLL
↓
Copiar a ModulosCompilados
↓
Reiniciar aplicacion
↓
Loader + DI + MVC + DbContext + migraciones + seeds
↓
Menu, hooks, permisos y UI activos
1. Disenar el modulo
- Definir que responsabilidad tiene.
- Definir de que modulo depende.
- Decidir que tablas son propias y cuales referencian maestros existentes.
Primero decide el modelo funcional. No empieces por vistas o botones.
2. Crear estructura de codigo
Modules/MIMODULO
Controllers/
Data/
Configurations/
Migrations/
MIMODULODbContext.cs
Entities/
Hooks/
Seed/
Services/
Views/
ModuleDescriptor.cs
ModuleInitializer.cs3. Crear entidades y configuracion EF
- Crear las clases de entidad.
- Crear configuraciones EF por entidad.
- Aplicarlas desde el
DbContext.
4. Declarar el modulo
En ModuleDescriptor declaras metadatos y dependencias.
requiredModules: new[] { "ENTIDADES" }
dbContextType: typeof(MIMODULODbContext)5. Registrar servicios
En ModuleInitializer registras:
- servicios del modulo
- hooks si extiende otras pantallas
- seed del modulo
6. Crear migracion inicial
Cuando el modelo ya esta claro, generas la migracion del modulo.
dotnet ef migrations add InitMiModulo ...
7. Crear seed de datos base
- Registrar modulo en tabla de modulos
- Crear permisos
- Crear menu base
- Sembrar catalogos o configuracion inicial
8. Despliegue del modulo
- Si lo subes o compilas desde ADMINPANEL, la DLL se deja en
ModulosCompilados. - El sistema la puede detectar y preparar.
- El panel debe avisar que el reinicio es requerido para activacion completa.
9. Arranque del CRM
- El loader descubre el modulo.
- Registra su DbContext y servicios.
- El gestor de migraciones aplica
Migrate()si hay migraciones. - Si no hay migraciones, entra el modo compatibilidad.
- Se ejecutan seeds.
10. Exponer UI o integracion
Segun el tipo de modulo:
- puede tener su propio
Index,Detalle,Nuevo, etc. - puede exponer hooks para tabs o acciones en otro host
- puede registrar menu o
MenuEntry
11. Validar permisos, limites y opciones
Antes de darlo por terminado, comprueba:
- permisos coherentes
- menu filtrado correctamente
- limites en backend
- opciones y configuracion por empresa si aplica
12. Resultado esperado
Modulo creado -> tablas propias correctas -> DbContext propio -> migracion propia -> seed de datos base -> servicios registrados -> permisos consistentes -> menu visible cuando toca -> hooks funcionando si existen -> sin duplicar maestros
Si para que un modulo funcione dependes de SQL manual disperso, claves de permiso distintas o tablas duplicadas, el diseno aun no esta cerrado.