fix(importer): stabilize 9 selected OVH re-import defects (epic #1260) (#1288)
Commit: 438955aa3f1fa7ca2fba1d1f31f772862c4ebb49
Date: 2026-05-13 11:47:35 +0200
Author: Copilot
Commit Message
fix(importer): stabilize 9 selected OVH re-import defects (epic #1260) (#1288)
* Initial plan
* feat(importer): implement stories #1261–#1269 (OVH legacy re-import fixes)
Story #1261 – Normalize artist lookup and duplicate retry
- sanitizeAllStrings + 255-char slice for sanitizedName in ArtistHelper
- findArtistByName retry in catch block after BC lookup fails
Story #1262 – Complete image-sync summaries
- syncTable(): start/completed INFO logs per table
- run(): Completed image sync summary log after tables loop
Story #1263 – MariaDB-compatible transaction control
- DatabaseConnection type: beginTransaction/commit/rollback
- deleteProjectsWithoutItems uses native tx methods
- ResilientConnection: added beginTransaction/commit/rollback methods
Story #1264 – Map Explore monument museum country from actual legacy column
- exploremonument_museums query: country AS museum_country alias
Story #1265 – Map Explore itinerary cross-schema links from actual mwnf3 columns
- LegacyCrossSchemaLink: project_id, institution_id fields
- Query includes project_id, institution_id; BC and links updated
Story #1266 – Key-based idempotency for THG Gallery Lang
- getCollectionTranslationByKey check after buildExtra()
- setCollectionTranslationExtraByKey for extra merge on update
Story #1267 – Classify expected THG Gallery Content gaps without hard errors
- logo/partner/country/type failures are warnings+skip not errors
- URL extension-based content type inference
- basename title fallback; resolveCountryId returns string|null
Story #1268 – Normalize object item date years before writing smallint columns
- parseItemYear() export with range/format validation
- TransformedObject.warnings[]; TransformedExploreMonument.warnings[]
- object-importer.ts: iterate warnings array
Story #1269 – Resolve Explore monument candidates by source
- ResolutionMode: 'resolvedCandidates' replaces 'ambiguous'
- ExploreMonumentResolution.resolvedCandidates optional array
- resolveForSource() method on ExploreMonumentResolver
- All six phase-06 importers updated for resolvedCandidates/resolveForSource
Tests: 304/304 pass; lint clean; type-check clean
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: metanull <20630081+metanull@users.noreply.github.com>
* fix: make ImportResult.warnings non-optional, remove ! assertions, address code review findings
Agent-Logs-Url: https://github.com/metanull/inventory-app/sessions/35dac83d-0c8c-4bc0-8b4f-8be00a4775ed
Co-authored-by: metanull <20630081+metanull@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: metanull <20630081+metanull@users.noreply.github.com>
Co-authored-by: PascalHavelange <havelangep@gmail.com>
---------
Fixes #1261
Fixes #1262
Fixes #1263
Fixes #1264
Fixes #1265
Fixes #1266
Fixes #1267
Fixes #1268
Fixes #1269
Files Changed
- 📝 Modified:
scripts/importer/src/cli/import.ts - 📝 Modified:
scripts/importer/src/core/strategy.ts - 📝 Modified:
scripts/importer/src/core/types.ts - 📝 Modified:
scripts/importer/src/domain/transformers/explore-monument-transformer.ts - 📝 Modified:
scripts/importer/src/domain/transformers/object-transformer.ts - 📝 Modified:
scripts/importer/src/helpers/artist-helper.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/dynasty-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/item-item-link-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/monument-detail-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/monument-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/object-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/partner-hierarchy-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-01/partner-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-02/monument-detail-picture-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-02/monument-picture-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-02/object-picture-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-03/sh-monument-detail-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-03/sh-monument-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-03/sh-object-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-03/sh-partner-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-itinerary-content-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-monument-crossref-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-monument-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-monument-resolver.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-monument-theme-link-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-06/explore-monument-translation-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-10/thg-gallery-content-importer.ts - 📝 Modified:
scripts/importer/src/importers/phase-10/thg-gallery-lang-importer.ts - 📝 Modified:
scripts/importer/src/strategies/sql-strategy.ts - 📝 Modified:
scripts/importer/src/tools/image-sync.ts - ✅ Added:
scripts/importer/tests/unit/artist-helper.test.ts - 📝 Modified:
scripts/importer/tests/unit/country-importer.test.ts - 📝 Modified:
scripts/importer/tests/unit/explore-itinerary-content-importer.test.ts - ✅ Added:
scripts/importer/tests/unit/explore-monument-crossref-importer.test.ts - 📝 Modified:
scripts/importer/tests/unit/explore-monument-resolution.test.ts - 📝 Modified:
scripts/importer/tests/unit/explore-monument-transformer.test.ts - 📝 Modified:
scripts/importer/tests/unit/image-sync.test.ts - 📝 Modified:
scripts/importer/tests/unit/language-importer.test.ts - 📝 Modified:
scripts/importer/tests/unit/object-transformer.test.ts - 📝 Modified:
scripts/importer/tests/unit/sql-strategy-provenance.test.ts - 📝 Modified:
scripts/importer/tests/unit/thg-gallery-lang-importer.test.ts
Links
This documentation was automatically generated from Git commit data.