feat: abrir un expediente exige jurisdiccion y fuero, no los pide despues - #39
feat: abrir un expediente exige jurisdiccion y fuero, no los pide despues#39leocagli wants to merge 1 commit into
Conversation
…pues
`argentina-vigia` reporta como bloqueado todo caso al que le falta la
jurisdiccion, porque sin ella no se computa ni un plazo. Esos casos no nacen
bloqueados por descuido: nacen asi porque abrir uno era copiar la carpeta a mano
y completar la ficha despues, y el despues a veces no llega.
Un caso con la ficha a medias no se ve como un problema. Se ve como un caso
nuevo. Y mientras tanto sus plazos corren sin que nadie los pueda calcular.
Esta skill hace lo mismo que se hacia a mano, pero pide los dos datos antes de
dejar el caso abierto. Es la unica diferencia, y es toda la diferencia.
## Lo que impide
- abrir sin jurisdiccion o sin fuero
- abrir con una jurisdiccion que no tiene ficha en jurisdicciones/: sin ella
el computo no tiene contra que verificarse
- pisar un caso que ya existe
- archivar un caso que todavia tiene plazos marcados 🔲, porque un caso
archivado deja de aparecer en el vigia y cerrarlo asi no lo cierra: lo
vuelve invisible
## Lo que hace
nuevo, listar, validar y cerrar. `listar` y `validar` devuelven codigo distinto
de cero si hay fichas incompletas, asi que sirven para los casos que ya existian
antes de esta skill o que alguien copio a mano.
## Un bug que encontraron los tests
`completar()` usaba `\s*.*` para reemplazar el valor de un campo de la ficha. El
`\s` incluye el salto de linea, asi que completar "Fecha de inicio" se comia la
linea siguiente entera y borraba "Estado actual" de la ficha.
Quedo acotado a `[^\n]*` con el porque escrito al lado, que es la clase de
detalle que se vuelve a romper si no se explica.
## Verificacion
node test/casos-test.mjs 16 ok, 0 mal
Todo ocurre en /tmp. Nunca se escribe dentro de casos/, ni con datos inventados.
| function completar(md, etiqueta, valor) { | ||
| // Acotado a una linea a proposito: con `\s*.*` el espacio en blanco incluye | ||
| // el salto de linea, asi que completar un campo se comia el siguiente. | ||
| // Completar "Fecha de inicio" borraba "Estado actual". | ||
| const re = new RegExp(`(\\*\\*${etiqueta}:?\\*\\*)[^\\n]*`, 'i'); | ||
| return re.test(md) ? md.replace(re, `$1 ${valor}`) : md; | ||
| } |
There was a problem hiding this comment.
💡 Edge Case: Carátula con $ puede corromper la ficha en completar()
En completar() el valor se pasa como segundo argumento de String.replace: md.replace(re, ). Los patrones especiales de reemplazo (, $', $$) que aparezcan en valor no se insertan literalmente. La carátula es texto libre del usuario (--caratula`), así que una carátula con esos caracteres escribiría contenido incorrecto en FICHA.md silenciosamente. Usar una función de reemplazo evita la interpretación de $.
Reemplazo mediante callback: el valor se inserta literal, sin patrones especiales.:
function completar(md, etiqueta, valor) {
const re = new RegExp(`(\*\*${etiqueta}:?\*\*)[^\n]*`, 'i');
// Reemplazo con función para que $ en `valor` (carátula libre) no se interprete.
return re.test(md) ? md.replace(re, (_, p1) => `${p1} ${valor}`) : md;
}
- Apply fix
Check the box to apply the fix or reply for a change | Was this helpful? React with 👍 / 👎
CI failed: Smoke tests failed because the repository is missing a dependency lock file for npm/yarn caching.Overview1 log error found across 1 affected job (smoke-test), caused by a missing dependency lock file needed for package caching during setup-node. FailuresMissing Dependencies Lock File (confidence: high)
Summary
Code Review 👍 Approved with suggestions 0 resolved / 1 findingsAdds case file opening that now requires jurisdiction and court type upfront instead of requesting them later, preventing incomplete case files from being created. Validates jurisdiction against existing templates and includes a regex fix in Consider handling special replacement patterns ( 💡 Edge Case: Carátula con $ puede corromper la ficha en completar()📄 componentes/casos/casos.mjs:56-62 📄 componentes/casos/casos.mjs:124-125 En completar() el valor se pasa como segundo argumento de String.replace: Reemplazo mediante callback: el valor se inserta literal, sin patrones especiales.🤖 Prompt for agentsTip Comment OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change the behavior for this request:
Important Your trial ends in 4 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more. Was this helpful? React with 👍 / 👎 | Gitar |
argentina-vigiareporta como bloqueado todo caso al que le falta lajurisdiccion, porque sin ella no se computa ni un plazo. Esos casos no nacen
bloqueados por descuido: nacen asi porque abrir uno era copiar la carpeta a mano
y completar la ficha despues, y el despues a veces no llega.
Un caso con la ficha a medias no se ve como un problema. Se ve como un caso
nuevo. Y mientras tanto sus plazos corren sin que nadie los pueda calcular.
Esta skill hace lo mismo que se hacia a mano, pero pide los dos datos antes de
dejar el caso abierto. Es la unica diferencia, y es toda la diferencia.
Lo que impide
el computo no tiene contra que verificarse
archivado deja de aparecer en el vigia y cerrarlo asi no lo cierra: lo
vuelve invisible
Lo que hace
nuevo, listar, validar y cerrar.
listaryvalidardevuelven codigo distintode cero si hay fichas incompletas, asi que sirven para los casos que ya existian
antes de esta skill o que alguien copio a mano.
Un bug que encontraron los tests
completar()usaba\s*.*para reemplazar el valor de un campo de la ficha. El\sincluye el salto de linea, asi que completar "Fecha de inicio" se comia lalinea siguiente entera y borraba "Estado actual" de la ficha.
Quedo acotado a
[^\n]*con el porque escrito al lado, que es la clase dedetalle que se vuelve a romper si no se explica.
Verificacion
Todo ocurre en /tmp. Nunca se escribe dentro de casos/, ni con datos inventados.
Va junto con #38 (el vigía) y son un par: el vigía detecta las fichas
incompletas, esta evita que se creen. Se pueden mergear en cualquier orden.
Ejemplo