Skip to content

Commit 5c85217

Browse files
[UPD] Copilot instructions
1 parent 70b1eba commit 5c85217

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

.github/copilot-instructions.md

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
* Permite utilizar operadores &, | y ~ para combinar condiciones de forma más legible y mantenible.
1212
* 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'), ...]`.
1314
* nueva API para manejo de progresos en crons,
1415

1516
* Se cambia `notify_progress` por `commit_progress` en crons, ej.
@@ -32,6 +33,7 @@
3233
* 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.
3334
5. No proponer cambios puramente estéticos (espacios, comillas simples vs dobles, orden de imports, etc.).
3435
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 del PR.
36+
7. Sobre traducciones: usar `_()` o `self.env._()` es indistinto; solo marcar si hay mensajes de error o textos no traducidos que deban serlo.
3537

3638
---
3739

@@ -60,13 +62,7 @@
6062
* Confirmar que todos los archivos usados (vistas, seguridad, datos, reportes, wizards) estén referenciados en el manifest.
6163
* Verificar dependencias declaradas: que no falten módulos requeridos ni se declaren innecesarios.
6264
* **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).
7066
* Solo hacerlo una vez por revisión, aunque haya múltiples archivos afectados.
7167

7268
---
@@ -99,6 +95,7 @@
9995
* 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.
10096
* Ejemplo a evitar: `domain = "[('name','ilike','%s')]" % user_input; records = self.env['res.partner'].search(eval(domain))`.
10197
* Alternativa segura: `records = self.env['res.partner'].search([('name', 'ilike', user_input)])` o `Domain([('name', 'ilike', user_input)])`.
98+
* 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.
10299
* 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.
103100
* Ejemplo de mejora: usar `gmail_count = self.env['res.partner'].search_count([('email', 'ilike', 'gmail')])` en lugar de recorrer todos los partners buscando “gmail”.
104101
* 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
279276
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
280277
| Modelos | Relaciones válidas; constraints; uso de `@api.depends`; `super()` correcto |
281278
| Vistas XML | Herencias correctas; campos válidos; adaptación a componentes modernos (IA, secciones, etc.) |
282-
| 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 |
283280
| Seguridad | Accesos mínimos necesarios; reglas revisadas, en especial para IA/VOIP/WhatsApp |
284281
| Migraciones | **Si hay cambios estructurales (lista actualizada), sugerir scripts en `migrations/` y describir qué hacen** |
285282
| Rendimiento / ORM | Evitar patrones anti-ORM; aprovechar las mejoras del ORM/registro en v19 |
@@ -289,7 +286,7 @@ En estos casos **normalmente corresponde** proponer migración (salvo notas en c
289286

290287
## Heurística práctica para el bump de versión
291288

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)
293290
**Y** `__manifest__.py` no cambia `version`**Sugerir bump**.
294291
* **SI** hay scripts `migrations/pre_*.py` o `migrations/post_*.py` nuevos → **Sugerir al menos minor bump**.
295292
* **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
310307

311308
## Resumen operativo para Copilot
312309

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.**
314311
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.
315312
3. Distingue entre:
316313

317314
* **cuestiones generales**,
318315
* 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 del ORM e índice/constraints en Odoo 19.
316+
4. Mantén el feedback **concreto, breve y accionable**.

0 commit comments

Comments
 (0)