-
Notifications
You must be signed in to change notification settings - Fork 29
[ADD] base_bg: Add batch job processing with threshold-based record splitting #347
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 18.0
Are you sure you want to change the base?
Conversation
420287b to
27d2934
Compare
27d2934 to
47a3146
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Este pull request introduce mejoras significativas en el módulo base_bg para procesamiento de trabajos en background, añadiendo capacidad de procesamiento por lotes con división basada en umbrales y mejoras en la política de ejecución de trabajos.
Changes:
- Implementación de procesamiento batch de jobs con división automática por threshold
- Nuevo sistema de jobs encadenados usando next_job_id y estados "waiting"
- Refactorización del cron para ejecutar un job por vez con locking optimista (SELECT FOR UPDATE SKIP LOCKED)
- Adición de campos batch_id, next_job_id, batch_job_count y batch_progress_count
- Migración de channel_get a _get_or_create_chat
- Script de migración para poblar batch_id en jobs existentes
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| base_bg/manifest.py | Incremento de versión de 18.0.1.0.1 a 18.0.1.0.2 |
| base_bg/models/bg_job.py | Añade nuevos campos para batching, refactoriza cron para procesamiento de un job por vez, implementa lógica de cancelación en cascada, actualiza notificaciones de usuario |
| base_bg/models/base_bg.py | Reescribe bg_enqueue como bg_enqueue_records con soporte para batching por threshold, añade método _json_safe para serialización segura de contexto |
| base_bg/migrations/18.0.1.0.2/post-migration.py | Script de migración para asignar batch_id único a jobs existentes |
| base_bg/views/bg_job_views.xml | Añade campos de batch a vistas, remueve atributos readonly de vista form, añade botón para ver jobs del batch, nuevos filtros de búsqueda |
| base_bg/demo/bg_job_demo.xml | Actualiza datos demo con ejemplos de batches completados y fallidos |
| base_bg/tests/test_bg_job.py | Añade tests para nueva funcionalidad de batching, elimina test de ordenamiento por prioridad, actualiza tests existentes |
f259c98 to
9d4d5ce
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 11 comments.
Comments suppressed due to low confidence (1)
base_bg/models/bg_job.py:152
- El método action_cancel solo permite cancelar jobs en estado "enqueued", pero con la nueva funcionalidad de batches, también deberían poder cancelarse jobs en estado "waiting". Un usuario podría querer cancelar un job que está esperando a que termine el job anterior en un batch. Considera ampliar la validación para incluir el estado "waiting".
def action_cancel(self):
"""
Action to manually cancel enqueued jobs
"""
self.ensure_one()
if self.state != "enqueued":
raise UserError(_("Only enqueued jobs can be canceled"))
self.write(
{
"state": "canceled",
"cancel_time": fields.Datetime.now(),
}
)
b5b9fec to
c84adb8
Compare
6dcc73a to
8742ce2
Compare
e4cd5b2 to
edeb07e
Compare
edeb07e to
4b7e89a
Compare

No description provided.