De helft van de outbox, hotlinks in de tekst, en een lege images-tab
Robin na de echte fetch: 18 van de 35 berichten binnen, alle plaatjes
hotlinken naar de oude site, en de images-tab is leeg. Drie oorzaken, en de
eerste was de pijnlijkste omdat hij zonder één waarschuwing "klaar" meldde.
DE KALE OUTBOX IS EEN VALSTRIK. Klonkt zet er first EN een kopie van pagina 1
in (Pleroma eiste ooit een first, sindsdien staan ze er allebei). De ingest
zag items op de kale collectie, sloeg first over, vond daarna geen next (dat
veld bestaat alleen op echte pagina's) en dacht klaar te zijn. Precies 18 van
de 35, en "ingest klaar" in het log. Nu wordt de keten ALTIJD via first
gevolgd, en telt de ingest na: meldt de bron meer items dan er verwerkt zijn,
dan staat dat in het verslag.
PLAATJES IN DE TEKST BLEVEN HOTLINKS. De gebakken content draagt absolute
verwijzingen naar de bron, in img en in de href eromheen. Die worden nu
gedownload naar HETZELFDE pad onder onze mediamap en relatief herschreven.
Hetzelfde pad is drie reparaties in een: de verwijzingen in de tekst kloppen,
de zip en de pull convergeren op dezelfde bestanden, en de images-tab (die de
MAP post-images scant, niet de databasetabel) is niet langer leeg.
BESTAANDE POSTS WORDEN GEREPAREERD. Robins 18 staan er al, met hotlinks en
zonder cover. Een tweede ronde herschrijft hun tekst, haalt de bestanden
binnen en vult de cover aan. Overslaan is voortaan alleen voor posts waar
niets aan mankeert.
En onderweg twee eigen missers gevonden en gedicht:
- de regex voor het herschrijven stond als string in een template literal;
\s verloor zijn backslash en werd de LETTER s, dus elke URL met een s erin
(post-images!) knapte af. De waarschuwing ".../media/po" gaf hem weg.
- haalBijlage plakte /media/ voor een pad dat al met /media/ begon.
Gemeten op twee instanties met 28 posts, elk met cover en inline plaatje:
28/28 binnen, 0 hotlinks, 28 covers met bestand, post-images-map 28 stuks, en
de reparatieronde maakt een met opzet kapotgemaakte post weer heel.
Changed files:
src/services/MigrationService.js
- first wordt altijd gevolgd; natellen tegen totalItems
- bronMediaPad(): bron-media naar hetzelfde pad hier, met ../-bewaking
- inhoudMediaBinnen(): alle bron-media in de tekst binnenhalen en relatief
maken; idempotent
- bestaande posts: tekst gerepareerd en cover aangevuld op een tweede ronde
- de dubbele /media/ en de opgegeten backslash
src/views/pages/admin-migrate.ejs
- "berichten gerepareerd" in het ophaalverslag
src/services/i18n.js
- mig.r_posts_updated in nl/en/de
test/fep1580-migration.test.js
- regressietests: de kale-collectie-valstrik, de verzwegen pagina, en het
herschrijven van een URL met een s erin, letter voor letter
remarks: de reden dat mijn eigen proef dit nooit zag: mijn nepbron gaf
orderedItems zonder first, precies de vorm die de bug ontweek. En een post met
een ongeldige published_at sloopt de HELE outbox van de bron (unhandled
rejection in buildOutbox); hier gevonden met kapotte testdata, nog niet
gerepareerd. Suite 997 groen; tegenproef op de paginatie en de backslash, en de
eerste tegenproef op die backslash was VALS (sabotage kwam niet aan), daarna
opnieuw met bewijs.
-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>