Issue Reporting And Support
The issue-reporting and support-telemetry domains give downstream apps a shared path for user-submitted issues, event ingest, deduplication, case linking, and operator review. They keep product support data near identity, application, and entitlement context instead of making every app invent a support pipeline.
Mental Model
Primary Domains
| Domain | Responsibility |
|---|---|
issue_reporting_platform | Canonical issue report creation, voice-token support, and case linking |
support_telemetry_platform | Event ingest, deduplication, case lifecycle, and operator views |
security | Security alerts that can be created by other domains |
audit | Audit log query and retention lifecycle |
Example Event Shape
{
"application_id": "app_123",
"kind": "frontend_error",
"fingerprint": "checkout-button-timeout",
"metadata": {
"route": "/checkout",
"browser": "chrome"
}
}Common Mistakes
Support telemetry can grow quickly. Preserve dedupe and backpressure behavior when changing ingest paths.
- Treating support telemetry as a general analytics pipeline.
- Forgetting to scope operator views by application and role.
- Logging sensitive content into issue metadata without checking PII handling.
Frontend Integration (spaps-issue-reporting-react)
Backend behavior lives here. Frontend composition belongs to the React package in packages/issue-reporting-react; see Companion packages.
The React package expects a client object with an issueReporting surface:
getStatuslistgetcreateupdatereply- optional
createVoiceTokenfor voice mode
import { FloatingIssueReportButton, IssueReportingProvider } from 'spaps-issue-reporting-react'
;<IssueReportingProvider
client={spaps}
isEligible={true}
principalId="user_123"
defaultScope="mine"
inputModes={['text', 'voice']}
>
<FloatingIssueReportButton />
</IssueReportingProvider>Voice mode integration requires:
- SPAPS server-side
ELEVENLABS_API_KEY - issue-reporting input modes configured on the owning SPAPS application
- an authenticated user token so
createVoiceTokencan mint short-lived browser tokens