Módulos Odoo generados por IA: audita las reglas de negocio

Volver
Kevin Riedl

13 minutos de lectura · 5 nov 2026
Última revisión

Siguiente
Se crea en tu dispositivo, sin conectar con Instagram. Copiamos el enlace para su sticker de enlace.

Aprobar un descuento parece sencillo: marcar un campo y guardar quién aprobó. Nuestro ejemplo deliberadamente defectuoso aprueba un presupuesto cancelado, confía en un aprobador inventado por quien llama y deja cambios parciales tras un fallo provocado. La demostración habitual sigue funcionando.

Audita un módulo Odoo generado por IA contra unas reglas de negocio aprobadas y la versión exacta instalada. Reproduce fallos relevantes, inspecciona registros finales y verifica las correcciones independientemente. Un modelo local ayuda a definir pruebas; las evidencias nativas de instalación, autorización, transacciones y actualización siguen decidiendo si el módulo puede publicarse.

Investigación revisada: 5 de noviembre de 2026. Revisamos fuentes oficiales de Odoo 20 y ejecutamos trece casos ficticios de aprobación. Ambas implementaciones Python se escribieron para este artículo; no son código de clientes ni una evaluación de una herramienta de IA. No se instaló un addon ni se ejecutó una actualización nativa. Todas las comprobaciones nativas propuestas siguen en NOT_RUN.

¿Qué debe decidir la auditoría del módulo?

Debe decidir si una personalización concreta tiene evidencias suficientes para publicarse, necesita una reparación acotada o conviene reemplazarla por una implementación más sencilla aprobada. Empieza por los cambios permitidos al comando de negocio. Una puntuación de calidad del código no aporta una regla ausente ni decide quién tiene autoridad para aprobarla.

Pide al responsable que demuestre el requisito con la configuración actual antes de ampliar el código. Si un flujo mantenido ya lo satisface, compara esa opción con mantener una sustitución. Es una decisión que verificar en la versión instalada, no una suposición de que toda aprobación personalizada sea innecesaria.

Fija después el alcance: commit del módulo, versión y edición de Odoo, revisiones de dependencias, registros afectados e identidades de ejecución. Incluye los ajustes que modifican el comportamiento. Revisar una rama sin su configuración puede dejar fuera la ruta concreta que utilizará el negocio.

La guía general de QA para código generado por IA cubre la preparación para producción. Aquí revisamos una personalización determinista de Odoo. La guía de estados del negocio para agentes trata tareas completas y elección de herramientas.

¿Qué debe hacer el ejemplo de aprobación?

El ejemplo aprueba la versión actual de un presupuesto en borrador solo si el actor tiene autoridad para su empresa y el descuento está dentro de un límite ficticio de delegación. Registra una vez la identidad fiable. Debe rechazar decisiones desactualizadas o prohibidas sin aprobación parcial, incluso si falla un elemento posterior del lote.

El presupuesto ficticio Q-17 pertenece a A, está en la revisión 3 y empieza con un descuento del 5,00 %. El usuario 7 puede aprobar desde el 0 % hasta el 10,00 %, incluido. Una petición del 10,01 % exige otra decisión. Son reglas ilustrativas, no valores predeterminados de Odoo. Los campos approval y approved_revision pertenecen al modelo Python.

Contrato aprobado del comando ficticio de descuento
ReglaResultado permitidoComportamiento exigido al fallar
Autoridad y empresaEl actor aprobado actual actúa dentro de A.Sin rol o con empresa no autorizada, el registro no cambia.
Revisión y ciclo de vidaLa versión revisada sigue vigente y el presupuesto continúa en borrador.Se rechaza una revisión antigua o un presupuesto cancelado.
Límite delegadoEl 10,00 % está incluido en el límite del ejemplo.El 10,01 % no puede recibir esta aprobación.
Identidad acreditadaSe registra al usuario fiable 7.Una etiqueta del solicitante no puede sustituirlo por el usuario 99.
Selección repetidaUna aprobación y una entrada de auditoría por revisión.Repetir o duplicar la selección no añade otro efecto de aprobación.
Fallo del loteEl lote acordado termina con sus evidencias de auditoría.Un rechazo o fallo de auditoría provocado no deja cambios parciales.

La aprobación modifica aquí un campo de revisión. No confirma el presupuesto, crea una entrega ni contabiliza. Ese límite define qué significa «éxito». Si el módulo real realiza una acción posterior, añade su autorización y el estado final que debe producir.

Resuelve las reglas discutidas antes de generar resultados esperados. La guía de conflictos entre reglas de negocio explica cómo asignar esa decisión. Inspeccionar una función que acepta el 10,00 % no permite deducir que ese límite sea correcto.

¿Qué defectos descubre la revisión comentada?

Descubre requisitos previos ausentes, una identidad de aprobación no fiable y cambios que sobreviven a una acción incompleta. Las llamadas repetidas también añaden otro efecto de auditoría. Cada hallazgo vincula una instrucción concreta con un caso incumplido. Esto ayuda más a decidir una publicación que asignar riesgo genérico a la etiqueta «generado por IA».

La implementación defectuosa contiene esta secuencia, abreviada para mostrar el orden:

quote["approval"] = "approved"
quote["approved_revision"] = expected_revisions[key]
quote["approved_by"] = claimed_approver or actor["uid"]
if key == fail_audit_for:
    raise InjectedAuditFailure(key)
store["audits"].append({
    "quote": key,
    "revision": expected_revisions[key],
    "actor": quote["approved_by"],
})

La secuencia no verifica si el actor puede aprobar el registro actual. Las indicaciones de Odoo sobre métodos públicos consideran no fiables los registros y parámetros suministrados; comprobar acceso CRUD no acredita todas las condiciones de negocio. Revisa el método receptor, no solo el botón visible.

Hallazgos del ejemplo deliberadamente defectuoso
HallazgoConsecuencia en el ejemploCorrección que verificar
Sin controles actuales de autoridad y registroUn actor o empresa no autorizados reciben aprobación.Validar identidad fiable y registro destino antes de modificarlo.
Sin condiciones de revisión, estado o límiteSe aprueba una petición antigua, cancelada o fuera del límite.Comparar el contrato aprobado con los valores actuales.
El solicitante elige al aprobador registradoLa auditoría atribuye el usuario 99 en lugar del 7.Derivar la atribución de la identidad fiable de ejecución.
Cada selección añade un efectoUna repetición o duplicado produce dos entradas de auditoría.Reconocer una aprobación ya completada de esa revisión.
Mutación antes del fallo sin límite atómicoEl fallo de auditoría deja un registro aprobado o un lote parcial.Demostrar el resultado de todo o nada en la implementación real.

La versión corregida valida la selección y aplica cambios sobre una copia antes de reemplazar el estado del modelo. Representa el resultado requerido; no implementa transacciones de Odoo. Las directrices oficiales de desarrollo explican la responsabilidad transaccional del framework y por qué revisar commits manuales sin justificar. Los cursores gestionados explícitamente como excepción necesitan un análisis aparte.

Descarga el registro comentado de hallazgos para relacionar defectos y reproducciones. Las pruebas de acceso entre empresas en Odoo 20 cubren la transición específica de permisos. Una lista antigua y genérica de ACL no basta para esa migración.

¿Qué cambió en las trece pruebas del contrato?

La versión defectuosa incumple once de las trece expectativas fijas. La corregida cumple las trece. Ambas superan la aprobación habitual y el límite exacto, lo que explica cómo una demostración satisfactoria puede ocultar los demás problemas. Estas cifras corresponden a ejemplos construidos deliberadamente, no a una tasa de defectos de código Odoo generado por IA.

Resultados locales ejecutados el 5 de noviembre de 2026
CasoVersión defectuosaVersión corregida
Aprobación habitual del 5,00 %Aprobada; una entrada de auditoríaAprobada; una entrada de auditoría
Límite exacto del 10,00 %Aprobada; una entrada de auditoríaAprobada; una entrada de auditoría
Solicitud del 10,01 %Aprobada incorrectamenteRechazada; sin cambios
Actor sin autoridad de aprobaciónAprobada incorrectamenteRechazada; sin cambios
Registro de B no autorizadaAprobada incorrectamenteRechazada; sin cambios
La revisión cita versión 3; el registro está en 4Aprobada incorrectamente contra versión 3Rechazada; sin cambios
Presupuesto canceladoSe marca la aprobación igualmenteRechazada; sin cambios
Mismo presupuesto seleccionado dos veces en una peticiónDos entradas de auditoríaUna entrada de auditoría
Misma aprobación invocada dos vecesDos entradas de auditoríaUna entrada de auditoría
El solicitante proporciona aprobador 99Atribuye usuario 99Atribuye usuario fiable 7
Fallo de auditoría tras asignar aprobaciónLa marca permanece; ninguna entrada de auditoríaSin cambios
Segundo registro del lote pertenece a B no autorizadaAmbos aprobadosNingún registro cambia
Falla la segunda escritura de auditoría del loteAmbos aprobados; una sola entradaNingún registro cambia

Descarga el ejemplo ejecutable de revisión de aprobación y los estados completos esperados y observados. Guarda el archivo Python y ejecuta:

python3 approval-review-model.py

El script utiliza la biblioteca estándar y comparación decimal para la regla porcentual ficticia. No importa Odoo ni accede a la red. Los estados esperados se definen desde el contrato, independientemente de ambas funciones. La salida incluye errores y campos finales; lanzar una excepción no puede hacer pasar por aceptable una escritura parcial.

El modelo no prueba solicitudes nativas simultáneas. El método real puede necesitar más protección si dos actores aprueban la misma revisión a la vez. El artículo de recuperación con n8n trata la creación externa de pedidos. El efecto de auditoría repetido aquí no acredita idempotencia de un conector.

¿Qué debe verificarse en el módulo Odoo real?

Verifica entradas y registros afectados en la versión real antes de trasladar las conclusiones del modelo. Inspecciona sustituciones y dependencias, y ejecuta los casos aprobados mediante los métodos receptores. Confirma qué identidad hace cada cambio. Una función aislada puede cumplir su contrato y seguir integrada incorrectamente en la aplicación.

Preguntas de revisión nativa más allá del modelo Python
ÁreaPreguntaEvidencia necesaria
Entradas¿Botón, API y automatización alcanzan el mismo comportamiento?Identidad aprobada y estado final por cada ruta relevante.
Dependencias¿El manifiesto declara los módulos utilizados?Instalación reproducible desde las dependencias declaradas.
Sustituciones¿Por qué se reemplaza o amplía cada comportamiento base?Regresiones que demuestren los flujos estándar necesarios.
Empresa y campos¿El comando usa registro, empresa y valor previstos?Evidencia nativa de rol/contexto y campos representativos.
Fallo y concurrencia¿Qué queda tras interrupción o aprobaciones simultáneas?Registros y efectos de auditoría con fallos controlados.
Datos existentes¿Qué ocurre con presupuestos anteriores a esta revisión?Expectativas de actualización aprobadas y registros observados tras ensayo.

El paquete de aceptación nativa propuesto contiene estos controles y los casos del contrato. Empieza en NOT_RUN, con aprobación de política pendiente. Sustituye expectativas ilustrativas por reglas autorizadas, registra identidades y revisiones exactas, y adjunta evidencia real antes de aprobar una fila.

Revisa cada sustitución junto al comportamiento estándar. Una sustitución sin explicación obliga a descubrir qué se eliminó. Si solo falta una comprobación de decisión, pregunta si existe una extensión más acotada que reemplazar todo el proceso. Verifica esa elección con los casos estándar afectados.

¿Cómo se comprueban instalación y actualización?

Trata instalación, actualización y comportamiento en ejecución como controles separados. Una instalación limpia puede revelar dependencias ausentes; un ensayo con datos existentes aborda registros y configuración anteriores. Ninguno demuestra que se ejecutaron las pruebas de negocio correctas. Vincula el informe al commit, entorno objetivo y casos seleccionados exactos.

La documentación de pruebas de Odoo exige importar los módulos de prueba y explica cómo activación y selección determinan su ejecución. Pide una salida del ejecutor que identifique los casos previstos. Un comando verde sin esos casos deja su comportamiento sin verificar.

La guía de actualización de bases personalizadas distingue instalación en base vacía, instalación con datos actualizados y ensayo de funcionamiento. Nuestra ejecución Python no aporta ninguno de esos resultados nativos.

Para esta personalización, incluye un presupuesto antiguo sin nuevos campos de aprobación cumplimentados, uno aprobado cuyo contenido cambió y otro pendiente al comenzar la actualización. Decide su destino antes del ensayo. Un valor predeterminado que hace parecer aprobado un registro antiguo es una decisión comercial.

Mantén un plan controlado de recuperación para el ensayo. Revertir solo el código no demuestra que los datos se hayan revertido. La guía de conciliación de migraciones cubre la comparación más amplia entre esperado y observado.

¿Qué debe incluir la entrega de auditoría?

Cada decisión de publicación debe poder rastrearse hasta una regla aprobada y evidencia reproducible. Para cada bloqueo, registra revisión, reproducción y consecuencia comercial; añade corrección y repetición independiente de pruebas. Mantén visibles los controles no ejecutados. Una lista de mejoras de estilo no responde si un presupuesto puede aprobarse sin autoridad.

El registro del ejemplo distingue un incumplimiento local confirmado de una pregunta nativa aún pendiente. Conserva esa separación en la auditoría real. «El modelo rechaza una aprobación antigua» y «el método desplegado de Odoo la rechaza bajo estas identidades» son afirmaciones de evidencia diferentes.

Separa reparación de implementación y aprobación de política. El revisor puede demostrar que la función aplica el 10,00 %; el responsable decide si esa es la delegación prevista. Si cambia la regla, actualiza resultados esperados y repite los casos afectados.

La lista de QA previa al lanzamiento ofrece contexto general. La guía general de auditoría de software creado con IA describe un encargo más amplio. La revisión del módulo debe conservar su alcance acotado y comprobable.

¿Cuándo publicaríamos, repararíamos o retiraríamos la personalización?

Publica solo el alcance respaldado por evidencia nativa aprobada. Repara incumplimientos demostrados y vuelve a probar los flujos afectados. Considera retirar una personalización innecesaria si una alternativa mantenida y aprobada cumple el requisito, con un plan para sus datos. Una demostración pulida no debe decidir ninguna de estas opciones.

Empezaríamos por un comando relevante, su entrada real y un caso permitido y otro denegado. Añadiríamos fallos capaces de dejar registros incorrectos. Así la auditoría obtiene una primera decisión concreta antes de ampliarse a todos los archivos del repositorio.

Para el servicio de calidad de software de Wavect, prepara commit, detalles de versión y una regla que el responsable pueda aprobar. El resultado útil es un hallazgo reproducible y un control nativo de publicación claro, seguido de evidencia de que la corrección acordada funciona.

Preguntas sobre auditoría de módulos Odoo generados por IA

¿El ejemplo descargable es un addon de Odoo?
No. Es un modelo Python con biblioteca estándar, funciones de aprobación deliberadamente defectuosa y corregida, y estados esperados fijos. No se puede instalar en Odoo. Úsalo para examinar la lógica de revisión y los fallos; después implementa y ejecuta las comprobaciones nativas con tu módulo, dependencias y política reales.
¿Trece casos correctos demuestran que el código de IA es fiable?
Solo demuestran que esta implementación corregida cumple estas trece expectativas. Ambas versiones se escribieron para el artículo y no se midió una muestra de salida de IA. La cifra no compara modelos ni estima defectos en producción. Un módulo real todavía necesita su propio alcance aprobado y evidencias nativas.
¿El 10,00 % es el límite estándar de aprobación de Odoo?
No. Es una delegación inventada para hacer explícita la prueba del límite. El caso habitual usa el 5,00 %, el límite incluido es el 10,00 % y el 10,01 % requiere otra decisión. El responsable debe aprobar la regla real, sus valores y la revisión a la que se aplica antes de definir los resultados esperados.
¿Puede la misma IA generar los resultados esperados?
Puede proponer casos, pero el comportamiento esperado aprobado necesita una base independiente en la regla de negocio. Si implementación y expectativa comparten la misma suposición errónea, pueden coincidir y seguir equivocadas. El responsable debe resolver la regla; después se revisan datos de prueba y afirmaciones sobre registros finales contra esa decisión.
¿Aprobar el descuento confirma el presupuesto?
En este ejemplo, no. La aprobación actualiza un campo personalizado de revisión mientras el presupuesto sigue en borrador. La confirmación o cualquier acción posterior necesitan contrato y autorización propios. Define el estado exacto permitido al comando real e inspecciónalo. No lo deduzcas de una respuesta de aprobación satisfactoria.
¿Hay que eliminar automáticamente cada sudo o commit explícito?
Revisa primero su propósito y límite. Una operación elevada necesita autoridad justificada y pruebas de rutas denegadas; una transacción gestionada expresamente necesita razonar sobre fallos y recuperación. La guía oficial explica por qué revisarlas. Quitar una línea sin comprender sus llamadas puede introducir otro defecto: verifica el comportamiento que la sustituye.
¿Una instalación limpia sustituye las pruebas con datos existentes?
No. Una base nueva no contiene registros históricos ni configuración que el módulo encontrará al actualizar. Aprueba el tratamiento esperado y ensáyalo en una copia protegida. Conserva separadas las evidencias de instalación y de estado del negocio, incluido qué ocurre con trabajo pendiente o anteriormente aprobado.

Del prototipo a producción

Si tu producto vibe-coded o generado con IA debe aguantar usuarios reales, due diligence o una revisión de inversores, Wavect audita, endurece y reconstruye lo que importa.

Mejor siguiente paso:

Tu bandeja, sin ruido

Sigue el trabajo que te importa

Recibe un correo breve cuando publiquemos algo nuevo. Sigue todo el blog o solo los temas que te interesan.

¿Qué quieres recibir?
Elige tus temas

Gratis, doble opt-in y sin píxeles de seguimiento.

Volver
Kevin Riedl

13 minutos de lectura · 5 nov 2026
Última revisión

Siguiente

Recibe la próxima nota de campo sobre Entrega y QA

Un correo breve cuando publiquemos. Sin píxeles de seguimiento ni contenido de relleno.

Gratis, doble opt-in y sin píxeles de seguimiento.