fix(cuod-bundle): seed records for existing definitions too

Importer бросал early-return для уже существующих definitions, поэтому
records никогда не наполнялись на повторных стартах. Records seed
теперь вызывается всегда (idempotent — skip по businessKey).
This commit is contained in:
Александр Зимин
2026-05-03 23:38:52 +03:00
parent aab7199600
commit 0752b3acd6
@@ -103,14 +103,7 @@ public class CuodBundleImporter {
Optional<DictionaryDefinition> existing = repository.findByName(entry.name()); Optional<DictionaryDefinition> existing = repository.findByName(entry.name());
if (existing.isPresent()) { if (existing.isPresent()) {
DictionaryDefinition def = existing.get(); DictionaryDefinition def = existing.get();
if (!props.updateExistingSchema()) { if (props.updateExistingSchema() && !entry.schemaVersion().equals(def.getSchemaVersion())) {
log.debug("Справочник '{}' уже существует, update_existing_schema=false — пропускаем", entry.name());
return;
}
if (entry.schemaVersion().equals(def.getSchemaVersion())) {
log.debug("Справочник '{}' v{} актуален", entry.name(), def.getSchemaVersion());
return;
}
JsonNode prevSchema = def.getSchemaJson(); JsonNode prevSchema = def.getSchemaJson();
def.setSchemaJson(schema); def.setSchemaJson(schema);
def.setSchemaVersion(entry.schemaVersion()); def.setSchemaVersion(entry.schemaVersion());
@@ -132,6 +125,12 @@ public class CuodBundleImporter {
"definition:" + saved.getName(), "definition:" + saved.getName(),
EventEnvelope.of(saved.getName(), toEventScope(saved.getScope()), manifest.bundle(), event)); EventEnvelope.of(saved.getName(), toEventScope(saved.getScope()), manifest.bundle(), event));
log.info("Справочник '{}' обновлён до v{}", saved.getName(), saved.getSchemaVersion()); log.info("Справочник '{}' обновлён до v{}", saved.getName(), saved.getSchemaVersion());
def = saved;
} else {
log.debug("Справочник '{}' v{} актуален, schema не трогаем", entry.name(), def.getSchemaVersion());
}
// Records seed запускаем всегда — они идемпотентны (skip on existing businessKey).
importRecords(manifest, entry, def);
return; return;
} }