Skip to content

CAP-PFM-QRY-013Render a report for download

Markdown

CAP-PFM-QRY-013

Render a report for download

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Staff receive report files suitable for circulation.Rendering checks the requester’s current access.Failed or excessive rendering does not publish a partial file.
Surfaces
consoleapijob

Controls

34 controls apply, from the corpus control catalogue.

TC-AVL-004 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-004 TC-DAT-005 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-LOG-001 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-004 TC-PI-005 TC-SEC-001 TC-SEC-002 TC-SEC-003 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.reports.useapitenant
platform.queries.read (to follow and download, CAP-014)apitenant

Business Rules

11 rules, 11 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Report export requires report use and a visible report, returns not found for an inaccessible report and writes nothing for rejected requests.
permissionapi, servicetest
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#answers a colleague who may not see the private report 404, writing nothing
02must prove
Proposed
All report kinds support PDF, only coded and table reports support Excel, and report CSV is rejected.
validationservicetest
03must prove
Proposed
Print parameters preserve submitted values and accept at most fifty names, text up to five hundred characters and lists up to one hundred entries, rejecting unsupported values and the renderer’s reserved name.
validationservicetest
services-platform:modules/queries/tests/integration/services/rendering/report-exports.integration.spec.js#refuses the renderer’s own parameter name at parameters, writing nothing
04must prove
Proposed
Before opening a browser, rendering rechecks the report and requester, failing deleted or newly inaccessible reports and lost report-use access as access lost.
policyservicetest
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#fails a requester who may not use reports access_lost, saying so plainly
05must prove
Proposed
Print-page API calls run internally as the requester through an allowed route set in the export workspace, with other origins, operations and routes refused and logged without query strings.
invariantservicetest
services-platform:modules/queries/tests/unit/services/rendering/api-interception.spec.ts#aborts a route of Platform off the allowlist, a write among them
06must prove
Proposed
Each page request renews its access check, and revoked access fails the export rather than producing a file of refusal messages.
policyservicetest
07must prove
Proposed
Rendering rejects work beyond five minutes, PDFs above two hundred pages, and invalid or oversized Excel files above one hundred megabytes, without storing a rejected file.
validationservicetest
08must prove
Proposed
Completed files use the report name and workspace date and remain available for thirty days.
lifecycleservicetest
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#keeps the file thirty days from its completion, as the bucket’s rule removes it
09must prove
Proposed
Report deletion leaves completed files downloadable but causes queued rendering to fail for lost access.
lifecycleservice, databasedocumented
10must prove
Proposed
Rendering uses a fresh browser without a login session or stored credentials, disables service workers and downloads, and rejects page-opened connections.
invariantservicetest
11must prove
Proposed
Internal rendering failures retry through the queue and become a generic final failure on the last attempt.
policyservicetest
services-platform:modules/queries/tests/integration/services/rendering/render-report.integration.spec.js#records internal on the last receive, with the sentence that never says what went wrong

Scenarios

IdGivenWhenThenProvenance
01A report render begins while its requester has access.A required grant is revoked during page requests.The export ends as access lost rather than storing refusal content.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.