You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+8-13Lines changed: 8 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@
10
10
11
11
* Permite utilizar operadores &, | y ~ para combinar condiciones de forma más legible y mantenible.
12
12
* Se pueden utilizar sobre función `filtered`.
13
+
* También se puede usar `Domain('field', 'op', 'value')` o `Domain(domain)` donde domain es una lista como era habitual `[('field_1', 'op1', 'value1'), ('field_2', 'op2', 'value2'), ...]`.
13
14
* nueva API para manejo de progresos en crons,
14
15
15
16
* Se cambia `notify_progress` por `commit_progress` en crons, ej.
@@ -32,6 +33,7 @@
32
33
* Si ya existe un docstring, puede sugerirse un estilo básico acorde a PEP8, pero **no será un error** si faltan `return`, tipos o parámetros documentados.
33
34
5. No proponer cambios puramente estéticos (espacios, comillas simples vs dobles, orden de imports, etc.).
34
35
6. Mantener el feedback **muy conciso** en los PRs: priorizar pocos puntos claros, evitar párrafos largos y no repetir el contexto que ya está explicado en la descripción delPR.
36
+
7. Sobre traducciones: usar `_()` o `self.env._()` es indistinto; solo marcar si hay mensajes de error o textos no traducidos que deban serlo.
35
37
36
38
---
37
39
@@ -60,13 +62,7 @@
60
62
* Confirmar que todos los archivos usados (vistas, seguridad, datos, reportes, wizards) estén referenciados en el manifest.
61
63
* Verificar dependencias declaradas: que no falten módulos requeridos ni se declaren innecesarios.
62
64
***Regla de versión (obligatoria):**
63
-
Siempre que el diff incluya **modificaciones en**:
64
-
65
-
* definición de campos o modelos (`models/*.py`, `wizards/*.py`),
66
-
* vistas o datos XML (`views/*.xml`, `data/*.xml`, `report/*.xml`, `wizards/*.xml`),
67
-
* seguridad (`security/*.csv`, `security/*.xml`),
68
-
69
-
**y el `__manifest__.py` no incrementa `version`, sugerir el bump de versión** (por ejemplo, `1.0.0 → 1.0.1`).
65
+
Solo sugerir bump de versión si el `__manifest__.py` no incrementa `version` y se modificó la estructura de un modelo, una vista, o algún record .xml (ej. cambios en definición de campos, vistas XML, datos XML, seguridad).
70
66
* Solo hacerlo una vez por revisión, aunque haya múltiples archivos afectados.
71
67
72
68
---
@@ -99,6 +95,7 @@
99
95
* Si se ve `eval()` o domains construidos como strings a partir de input externo, advertir del riesgo de ejecución arbitraria y sugerir el uso de objetos `Domain` o listas de tuplas.
100
96
* Ejemplo a evitar: `domain = "[('name','ilike','%s')]"% user_input; records = self.env['res.partner'].search(eval(domain))`.
* Nota: En Odoo 19, `Domain('field', 'op', 'value')` es válido y no debe marcarse como incorrecto. Los operadores `&`, `|` y `~` pueden usarse sobre instancias de `Domain` para combinar condiciones.
102
99
* Reforzar las recomendaciones de rendimiento conocidas: evitar `search([])` seguido de filtrado en Python, evitar loops con `write`/`search` uno a uno, y proponer alternativas como `search_count`, `mapped`, `filtered`, `browse(ids)` o `search_fetch` para lecturas planas.
103
100
* Ejemplo de mejora: usar `gmail_count = self.env['res.partner'].search_count([('email', 'ilike', 'gmail')])` en lugar de recorrer todos los partners buscando “gmail”.
104
101
* Para lecturas masivas, preferir `names = partners.mapped('name')` frente a acumular manualmente en un bucle, y usar `search_fetch` cuando se necesiten diccionarios planos.
@@ -279,7 +276,7 @@ En estos casos **normalmente corresponde** proponer migración (salvo notas en c
| Manifest |**Bump de versión obligatorio** si hay cambios en modelos/vistas/seguridad/datos; archivos referenciados |
279
+
| Manifest |**Bump de versión obligatorio** si hay cambios estructurales en modelos/vistas/records .xml; archivos referenciados |
283
280
| Seguridad | Accesos mínimos necesarios; reglas revisadas, en especial para IA/VOIP/WhatsApp |
284
281
| Migraciones |**Si hay cambios estructurales (lista actualizada), sugerir scripts en `migrations/` y describir qué hacen**|
285
282
| Rendimiento /ORM| Evitar patrones anti-ORM; aprovechar las mejoras delORM/registro en v19 |
@@ -289,7 +286,7 @@ En estos casos **normalmente corresponde** proponer migración (salvo notas en c
289
286
290
287
## Heurística práctica para el bump de versión
291
288
292
-
***SI** el diff toca cualquiera de: `models/`, `views/`, `data/`, `report/`, `security/`, `wizards/`
289
+
***SI** el diff modifica la estructura de un modelo, una vista, o algún record .xml (ej. cambios en definición de campos, vistas XML, datos XML, seguridad)
293
290
**Y**`__manifest__.py` no cambia `version` → **Sugerir bump**.
294
291
***SI** hay scripts `migrations/pre_*.py` o `migrations/post_*.py` nuevos → **Sugerir al menos minor bump**.
295
292
***SI** hay cambios que rompen compatibilidad (renombres, tipos, limpieza agresiva de datos) → **Sugerir minor/major** según impacto.
@@ -310,12 +307,10 @@ En estos casos **normalmente corresponde** proponer migración (salvo notas en c
310
307
311
308
## Resumen operativo para Copilot
312
309
313
-
1. **Detecta cambios en modelos/vistas/seguridad/datos → exige bump de `version` en `__manifest__.py`.**
310
+
1. **Detecta cambios estructurales en modelos, vistas o records .xml → exige bump de `version` en `__manifest__.py` si no está incrementada.**
314
311
2. **Si hay cambio estructural (según la lista actualizada) → propone y describe script(s) de migración en `migrations/` (pre/post/end)**, con enfoque idempotente y en lotes.
315
312
3. Distingue entre:
316
313
317
314
***cuestiones generales**,
318
315
* y **matices específicos de Odoo 19**, por ej. preferir la nueva API de constraints/índices cuando corresponda.
319
-
4. Mantén el feedback **concreto, breve y accionable**.
320
-
321
-
[^odoo19]: Resumen basado en las Odoo 19 Release Notes oficiales y artículos técnicos sobre cambios delORM e índice/constraints en Odoo 19.
316
+
4. Mantén el feedback **concreto, breve y accionable**.
0 commit comments