feat: backfill_document_links_legacy para docs legados de cove/edoc por numero (T2025-09-004)
Algunos documentos viejos quedaron con nomenclatura olvidada (otro pedimento_app y/o prefijo, p.ej. vu_EDC_0201_800_..._04382515ZIFF5) que el matcher estricto no liga. Como el numero_cove/numero_edocument es unico y esta en el nombre, este comando los liga por ese numero (con frontera), sin exigir app ni prefijo. Solo cove/edoc (llaves unicas); partida queda fuera (enteros cortos -> colisiones) y nativos no tienen entidad. Correr despues de backfill_document_links. Agrega core.document_links.numero_en_nombre. Fix: el DISTINCT de pedimento_id limpia el ordering por defecto del modelo para no duplicar. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -829,3 +829,18 @@ class DocumentFKResolutionTests(TestCase):
|
||||
restantes = list(Document.objects.filter(edocument=self.edoc, document_type_id=5))
|
||||
self.assertEqual(len(restantes), 1)
|
||||
self.assertEqual(restantes[0].id, d1.id) # conservó el único con archivo válido
|
||||
|
||||
def test_backfill_legacy_liga_por_numero(self):
|
||||
# Doc legado: app y prefijo viejos (vu_EDC, otro pedimento_app), pero el
|
||||
# numero_edocument (EDOC001) SÍ está en el nombre.
|
||||
legado = self._doc("vu_EDC_0201_800_3452_5000586_EDOC001_abc123.pdf", 5)
|
||||
legado.refresh_from_db()
|
||||
self.assertIsNone(legado.edocument_id) # save() (match estricto) no lo ligó
|
||||
# el backfill estricto tampoco (app/prefijo no coinciden)
|
||||
call_command("backfill_document_links", pedimento=str(self.pedimento.id), stdout=StringIO())
|
||||
legado.refresh_from_db()
|
||||
self.assertIsNone(legado.edocument_id)
|
||||
# el backfill LEGADO sí lo liga por número único
|
||||
call_command("backfill_document_links_legacy", pedimento=str(self.pedimento.id), stdout=StringIO())
|
||||
legado.refresh_from_db()
|
||||
self.assertEqual(legado.edocument_id, self.edoc.id)
|
||||
|
||||
Reference in New Issue
Block a user