feat(messages): rapport van een dispatch-antwoord downloaden als .md (M41 G8c) #122

Merged
janpeter merged 1 commit from feat/m41-g8c-report-download into main 2026-10-03 12:03:26 +02:00
Owner

Samenvatting

M41 G8c, taak T-1970 (story ST-1617).

Een dispatch-antwoord in Messages krijgt een knop "Rapport downloaden". Die downloadt de antwoordtekst als report-<eerste 8 tekens van de verzoek-id>.md (text/markdown).

  • Wanneer: de knop staat er alleen bij een antwoord met resultaat (meta.result) en een niet-lege body.
  • Waarom deze aanpak: de body is het canonieke report_markdown. JP koos op 2026-10-03 voor optie A: geen service-aanroep en geen artefact-id. Het artefact-id in de projectie zou het ruwe result.json van het kind opleveren, dat kan afwijken van het opgeslagen resultaat. Het zou ook drie repo's tegelijk raken.
  • Bestaande antwoorden: werken ook.
  • Downloadroute uit #118: die blijft staan, maar deze knop gebruikt hem niet.

Test

  • Test-first: de downloadtest (Blob-type, inhoud en bestandsnaam) faalde eerst en is nu groen.
  • Een tweede test controleert dat er zonder resultaat of zonder body geen knop is.
  • npm run verify is groen: 1417 tests.
  • Er is 1 lintwaarschuwing (taskCode). Die bestond al op main en zit niet in deze diff.
  • Een schermcontrole volgt na de uitrol.

🤖 Generated with Claude Code

## Samenvatting M41 G8c, taak T-1970 (story ST-1617). Een dispatch-antwoord in Messages krijgt een knop "Rapport downloaden". Die downloadt de antwoordtekst als `report-<eerste 8 tekens van de verzoek-id>.md` (`text/markdown`). - **Wanneer:** de knop staat er alleen bij een antwoord met resultaat (`meta.result`) en een niet-lege body. - **Waarom deze aanpak:** de body is het canonieke `report_markdown`. JP koos op 2026-10-03 voor optie A: geen service-aanroep en geen artefact-id. Het artefact-id in de projectie zou het ruwe `result.json` van het kind opleveren, dat kan afwijken van het opgeslagen resultaat. Het zou ook drie repo's tegelijk raken. - **Bestaande antwoorden:** werken ook. - **Downloadroute uit #118:** die blijft staan, maar deze knop gebruikt hem niet. ## Test - Test-first: de downloadtest (Blob-type, inhoud en bestandsnaam) faalde eerst en is nu groen. - Een tweede test controleert dat er zonder resultaat of zonder body geen knop is. - `npm run verify` is groen: 1417 tests. - Er is 1 lintwaarschuwing (`taskCode`). Die bestond al op main en zit niet in deze diff. - Een schermcontrole volgt na de uitrol. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(messages): rapport van een dispatch-antwoord downloaden als .md (M41 G8c)
All checks were successful
CI / Verify (pull_request) Successful in 2m5s
57f6af35a5
De antwoordtekst is het canonieke report_markdown; de knop downloadt die als
report-<verzoek-id prefix>.md, zonder service-aanroep of artefact-id (JP 2026-10-03).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

COMMENT

geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • Minor — __tests__/components/queue/dispatch-status.test.tsx:49: Object.assign(URL, ...) wijzigt het oorspronkelijke globale URL-object vóór vi.stubGlobal. vi.unstubAllGlobals() herstelt vervolgens hetzelfde, al gewijzigde object, zodat de URL-functies mocks blijven voor latere tests binnen deze testomgeving. Gebruik spies met herstel in afterEach/finally, of herstel de oorspronkelijke property descriptors.

Beoordeling en verificatie

De download gebruikt de volledige antwoordbody; de gedeelde dispatch-projectie bevestigt dat dit het canonieke report_markdown is. De knop vereist geldige resultaatmetadata en een niet-lege body. De wijziging past binnen het bestaande clientcomponent en introduceert geen nieuwe serverroute of bronautoriteit. Geen blokkerende runtimebevinding gevonden. De toegevoegde tests controleren MIME-type, inhoud, bestandsnaam, URL-opruiming en het ontbreken van de knop zonder resultaat of inhoud.

Beoordeeld op commit 57f6af35a50fcb63a7e55be31783bef529fad79d; Forgejo-head en aangeleverde diff komen overeen. Relevante productdocumentatie: specs/idea-214-messages-design en manual/page-queue-messages. De PR-beschrijving documenteert de gekozen lokale download; de diff wijzigt geen producthandleiding.

Lint en typecheck slagen; lint toont één bestaande waarschuwing buiten de diff. Tests konden in deze reviewomgeving niet starten: native Rollup-modules onder /tmp kunnen niet worden geladen (failed to map segment from shared object); uitvoerbare npm-scripts geven daar eveneens Permission denied. De gemelde 1417 groene tests uit de PR-beschrijving zijn dus niet onafhankelijk bevestigd. Vanwege de kleine bevinding en deze verificatiebeperking kies ik COMMENT.

# COMMENT geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - **Minor — `__tests__/components/queue/dispatch-status.test.tsx:49`**: `Object.assign(URL, ...)` wijzigt het oorspronkelijke globale URL-object vóór `vi.stubGlobal`. `vi.unstubAllGlobals()` herstelt vervolgens hetzelfde, al gewijzigde object, zodat de URL-functies mocks blijven voor latere tests binnen deze testomgeving. Gebruik spies met herstel in `afterEach`/`finally`, of herstel de oorspronkelijke property descriptors. ## Beoordeling en verificatie De download gebruikt de volledige antwoordbody; de gedeelde dispatch-projectie bevestigt dat dit het canonieke `report_markdown` is. De knop vereist geldige resultaatmetadata en een niet-lege body. De wijziging past binnen het bestaande clientcomponent en introduceert geen nieuwe serverroute of bronautoriteit. Geen blokkerende runtimebevinding gevonden. De toegevoegde tests controleren MIME-type, inhoud, bestandsnaam, URL-opruiming en het ontbreken van de knop zonder resultaat of inhoud. Beoordeeld op commit `57f6af35a50fcb63a7e55be31783bef529fad79d`; Forgejo-head en aangeleverde diff komen overeen. Relevante productdocumentatie: `specs/idea-214-messages-design` en `manual/page-queue-messages`. De PR-beschrijving documenteert de gekozen lokale download; de diff wijzigt geen producthandleiding. Lint en typecheck slagen; lint toont één bestaande waarschuwing buiten de diff. Tests konden in deze reviewomgeving niet starten: native Rollup-modules onder `/tmp` kunnen niet worden geladen (`failed to map segment from shared object`); uitvoerbare npm-scripts geven daar eveneens `Permission denied`. De gemelde 1417 groene tests uit de PR-beschrijving zijn dus niet onafhankelijk bevestigd. Vanwege de kleine bevinding en deze verificatiebeperking kies ik `COMMENT`.
Sign in to join this conversation.
No reviewers
No labels
severity/s4
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-workers!122
No description provided.