Backfill-ul de articole păstrează engleza scrisă din panou
Backfill-ul promitea, în propriul antet și în pasul de CI de lângă el, că adaugă
doar ro/ru care lipsesc și că nu atinge niciodată en. Scria valoarea
compusă din fișierele-sursă întreagă.
Pentru un articol neatins e o operație fără efect — en din sursă și en din
baza de date sunt același șir. Dar panoul scrie toate cele trei limbi
(hyperhub-service.ts pune title/excerpt/heroImageAlt/blocks din
cerere), deci un articol căruia i s-a rescris engleza din panou cât timp ro/ru
încă lipseau își pierdea tăcut rescrierea la următorul seed, înlocuită cu textul
original preluat prin scraping.
Decizia
Promisiunea devine adevărată în cod, nu se șterge din comentariu. en-ul
rândului e purtat mai departe ori de câte ori există; doar limbile care lipsesc
vin din sursă. Asta e regula casei peste tot în acest repo — „an admin's own
upload survives", „an admin's own edit survives".
Rezumatul pe care un rând nu l-a avut niciodată se completează în continuare din
sursă, en inclus: acolo nu există nimic al rândului de protejat, iar fără el
articolul se servește fără descriere în nicio limbă.
en și ro/ru pot ajunge astfel să spună lucruri diferite — exact cum arată
„traducerea nu a prins încă editarea". Nimic nu le împerechează la randare:
resolveLocale întoarce valoarea unei singure limbi, întreagă.
Verificare
Pe o copie a bazei, cu un rând adus exact în forma care pierdea date — engleza rescrisă, rusa lipsă:
HyperhubArticle RO/RU backfill: 1 updated, 71 already complete
title.en = TITLU SCRIS DE ADMIN <- pastrat
title.ru = Избавление от ишиаса... <- adaugat din sursa
excerpt.en = REZUMAT SCRIS DE ADMIN <- pastrat
excerpt.ru = Ишиас, характеризующийся... <- adaugat din sursa
A doua rulare: 0 updated, 72 already complete. Gaura de rezumat, testată
separat pe același fișier, se umple în continuare în toate cele trei limbi.
npm run build cod 0, npm test 600 de teste trecute. .gitlab-ci.yml validat
cu glab ci lint: valid.
Capcană de execuție
MR-ul atinge .gitlab-ci.yml, deci regula din workflow.rules nu îi dă
pipeline deloc. Verificările de mai sus s-au rulat local. După fuziune se
pornește un pipeline manual pe ramura țintă, ca să existe și butonul de seed.