Jira ticket status column in privacy request manager#7619
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Greptile SummaryThis PR adds frontend support for the However, two issues in the new auto-generated Extended type files need to be resolved before merging:
Confidence Score: 2/5
Important Files Changed
Reviews (2): Last reviewed commit: "Merge branch 'main' into jpople/eng-2648..." | Re-trigger Greptile |
| {flags.alphaJiraIntegration && privacyRequest.jira_ticket_key && ( | ||
| <Flex gap={4} align="center"> | ||
| <Typography.Link | ||
| href={privacyRequest.jira_ticket_url ?? undefined} | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| > | ||
| {privacyRequest.jira_ticket_key} | ||
| </Typography.Link> |
There was a problem hiding this comment.
Ticket link renders as non-functional when URL is absent
The outer condition only checks for jira_ticket_key, but jira_ticket_url is separately optional. When a request has a ticket key but no URL (e.g., the integration stores the key before the URL is available), the Typography.Link receives href={undefined} and renders as a styled clickable element that does nothing on click — which is confusing for users.
Consider either guarding the link on the presence of both fields, or falling back to plain text when the URL is missing:
| {flags.alphaJiraIntegration && privacyRequest.jira_ticket_key && ( | |
| <Flex gap={4} align="center"> | |
| <Typography.Link | |
| href={privacyRequest.jira_ticket_url ?? undefined} | |
| target="_blank" | |
| rel="noopener noreferrer" | |
| > | |
| {privacyRequest.jira_ticket_key} | |
| </Typography.Link> | |
| {flags.alphaJiraIntegration && privacyRequest.jira_ticket_key && ( | |
| <Flex gap={4} align="center"> | |
| {privacyRequest.jira_ticket_url ? ( | |
| <Typography.Link | |
| href={privacyRequest.jira_ticket_url} | |
| target="_blank" | |
| rel="noopener noreferrer" | |
| > | |
| {privacyRequest.jira_ticket_key} | |
| </Typography.Link> | |
| ) : ( | |
| <Typography.Text>{privacyRequest.jira_ticket_key}</Typography.Text> | |
| )} |
54be26a to
293c2e8
Compare
There was a problem hiding this comment.
Code Review — PR #7619: Jira ticket status column in privacy request manager
Overall this is a clean, focused PR. The feature flag gating is applied consistently, the new status is wired into all the right places (badge maps, filter options, bulk-delete allow-list), and the rel="noopener noreferrer" on the external link is a good catch.
One functional concern worth addressing before merge (inline): the PrivacyRequestResponseExtended type is a full copy of PrivacyRequestResponse rather than an intersection, and in doing so it drops the manually-overridden custom_privacy_request_fields type that was carefully preserved in the base type. The other inline comments are style/clarity suggestions.
Summary of findings
Suggestions
PrivacyRequestResponseExtendedloses the manually-overriddencustom_privacy_request_fieldstype from the base. Using an intersection type (PrivacyRequestResponse & { jira_tickets?: ... }) avoids this drift and keeps the two in sync."Pending External"uses title case; the rest of the status map uses sentence case ("Requires input","In progress", etc.).- Only
jira_tickets[0]is shown — either add a comment that one ticket per request is a deliberate constraint, or render all tickets.
Nice to have
- The old
Page_Union_PrivacyRequestVerboseResponse__PrivacyRequestResponse__export inindex.tsappears to be dead code now that the slice uses the extended variant.
clients/admin-ui/src/types/api/models/PrivacyRequestResponseExtended.ts
Outdated
Show resolved
Hide resolved
clients/admin-ui/src/features/privacy-requests/dashboard/list-item/components/Header.tsx
Show resolved
Hide resolved
clients/admin-ui/src/types/api/models/PrivacyRequestResponseExtended.ts
Outdated
Show resolved
Hide resolved
…om/ethyca/fides into jpople/eng-2648/jira-status-column
Ticket ENG-2648
Description Of Changes
Adds frontend support for the
pending_externalprivacy request status and surfacesJira ticket metadata on privacy request cards, both gated behind the
alphaJiraIntegrationfeature flag.When a privacy request has an associated Jira ticket (
jira_ticket_key,jira_ticket_url,jira_ticket_status), users will see a clickable Jira ticketlink and status tag in the request list item header. The
pending_externalstatusis available as a filter option and renders with the "Marble" badge color throughout
the UI.
Code Changes
pending_externaltoPrivacyRequestStatus,RequestStatusBadge, andSubjectRequestStatusMapwith "Marble" badge colorpending_externalto the bulk delete allow-list inhelpers.tsgated behind
alphaJiraIntegrationpending_externalas a filter option inusePrivacyRequestsFiltersJiraTicketSummary,PrivacyRequestResponseExtended,PrivacyRequestVerboseResponseExtendedSteps to Confirm
With
alphaJiraIntegrationflag off:Pending Externaldoes not appear in the status filter dropdownWith
alphaJiraIntegrationflag on:3. Confirm
Pending Externalappears in the status filter dropdown with the Marble badge style4. With a request that has
jira_ticket_key/jira_ticket_statuspopulated: confirmthe ticket key renders as a clickable external link and the status tag appears in the header
5. Confirm a
pending_externalrequest can be bulk-deletedPre-Merge Checklist
CHANGELOG.mdupdated