rp-quick-runtime

Par wix · skills

Récupération déterministe de la limite cible partagée et exécution du rapport final que chaque adaptateur quick-mode rp-quick-<platform> utilise avant une écriture Wix Stores.

npx skills add https://github.com/wix/skills --skill rp-quick-runtime

rp-quick-runtime

Non invoqué directement — c'est une librairie partagée (lib/limit-recovery.js), pas un adaptateur autonome. Chaque adaptateur quick-mode spécifique à une plateforme (rp-quick-shopify, rp-quick-woocommerce) la require depuis son propre scripts/quick-mode.js et doit l'utiliser depuis sa première version (spec 0051, Decision 1). Les adaptateurs de plateforme possèdent l'extraction de source et la sémantique des champs ; ce runtime possède l'application des limites cibles, l'agrégation du ledger de récupération, et le rapport final lisible — donc une limite de validation Wix Stores ne transforme jamais silencieusement un enregistrement valide en un skip opaque.

const recovery = require('../rp-quick-runtime/lib/limit-recovery.js');

const normalized = recovery.normalizeProduct({ sourceId, sku, tagIds });
// normalized.sku / normalized.tagIds are the capped/trimmed values to write;
// normalized.recoveries lists what was capped or trimmed, if anything.
await writeProduct({ ...product, sku: normalized.sku, tagIds: normalized.tagIds });
// Record written_with_loss only after the target write succeeds.
if (normalized.recoveries.length) {
  await recovery.appendRecoveries(projectDir, adapterName, sourceId, normalized.recoveries);
  recovery.recordRecoveredRecord(summary, normalized.recoveries);
}
// ...after the run:
await recovery.writeFinalReport(projectDir, summary);

normalizeProduct applique les deux limites Stores vérifiées de manière déterministe : plafonne tagIds à STORES_PRODUCT_TAGS_MAX (ordre de première apparition source, extras omis) et réduit sku à STORES_SKU_MAX caractères Unicode-safe avec un suffixe dérivé de l'ID source stable pour qu'une SKU réduite reste unique. Chaque plafonnement/réduction est rapporté en retour dans recoveries[], jamais appliqué silencieusement.

appendRecoveries enregistre chaque récupération dans execution/quick-limit-recoveries.ndjson sous le nom de l'adaptateur, taggé outcome: written_with_loss — l'enregistrement durable de ce qui a été préservé versus perdu, par enregistrement source. Appelez-le seulement après que l'écriture cible réussisse.

recordRecoveredRecord incrémente summary.recovered une fois pour l'enregistrement source écrit et incrémente summary.recoveryCounts une fois pour chaque événement de récupération sur cet enregistrement.

writeFinalReport génère execution/quick-mode-final-report.md : un décompte des enregistrements importés avec récupération déterministe plus une ventilation par code de récupération, pour que l'opérateur obtienne un compte compact et actionnable au lieu d'un simple décompte de skips.

Skills similaires