Skip to content

Conversation

@mfbrown
Copy link

@mfbrown mfbrown commented Jan 26, 2026

Ticket ENG-2418

Description Of Changes

Adds a new Asset Reporting page to the Admin UI that displays a cross-system view of all discovered assets (cookies, browser requests, images, iframes, JavaScript tags). This provides users with a consolidated reporting view of assets discovered by the web monitor, with filtering, sorting, search, and CSV export capabilities.

The "Consent Status" column visibility is gated behind the assetConsentStatusLabels beta flag to align with the action center website monitor.

Code Changes

  • Added new AssetReportingTable component for displaying assets in a paginated table
  • Added asset-reporting.slice.ts with RTK Query endpoints for fetching assets and filter options
  • Added useAssetReportingTable hook for table state management (sorting, filtering, pagination, search)
  • Added useAssetReportingDownload hook for CSV export functionality
  • Added new page at /reporting/assets with PageHeader and export button
  • Updated nav-config.tsx to add "Asset reporting" navigation item under Data inventory
  • Added REPORTING_ASSETS_ROUTE constant to routes
  • Implemented conditional visibility of "Consent status" column based on assetConsentStatusLabels feature flag
  • Added comprehensive unit tests for all components and hooks

Steps to Confirm

  1. Navigate to Data inventory > Asset reporting
  2. Verify the table displays assets with columns: Asset name, Type, System, Categories of consent, Domain, Locations
  3. With assetConsentStatusLabels flag enabled, verify "Consent status" column appears
  4. Test filtering by Type, Consent status (when visible), Categories of consent, and Locations
  5. Test search functionality
  6. Test sorting on sortable columns
  7. Click "Export CSV" and verify the download contains filtered data
  8. Verify pagination works correctly

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

@mfbrown mfbrown requested a review from a team as a code owner January 26, 2026 13:33
@mfbrown mfbrown requested review from gilluminate and removed request for a team January 26, 2026 13:33
@vercel
Copy link
Contributor

vercel bot commented Jan 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fides-plus-nightly Ready Ready Preview, Comment Jan 29, 2026 9:43pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
fides-privacy-center Ignored Ignored Jan 29, 2026 9:43pm

Request Review

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 26, 2026

Greptile Overview

Greptile Summary

This PR adds a new Asset Reporting page to the Admin UI that provides a consolidated view of all discovered assets (cookies, browser requests, images, iframes, JavaScript tags) from the web monitor. The implementation follows established patterns in the codebase and includes comprehensive test coverage.

Key changes:

  • New asset reporting page with table view supporting filtering, sorting, search, and CSV export
  • Reuses existing useTableState hook for state management with URL synchronization
  • Conditional "Consent Status" column visibility based on assetConsentStatusLabels feature flag
  • RTK Query endpoints with proper cache tag management
  • Comprehensive test suite covering components, hooks, and page integration

Notable:

  • The PR includes an unrelated file (AssessmentChatModal.tsx) that appears to be from a different feature
  • PR size (1,518 lines across 14 files) slightly exceeds the recommended limit of 500 lines OR 15 files per the custom instructions

Architecture:
The implementation properly separates concerns with dedicated hooks for table management and download functionality, follows the existing pattern seen in useDiscoveredAssetsTable.tsx, and integrates cleanly with the navigation structure.

Confidence Score: 4/5

  • This PR is safe to merge with minor considerations
  • The implementation is well-structured, follows established patterns, includes comprehensive tests, and properly uses existing hooks for state management. However, the PR slightly exceeds the recommended size limit (1,518 lines vs 500 line limit) and includes an unrelated file (AssessmentChatModal.tsx). The core asset reporting functionality is solid with no critical issues found.
  • No files require special attention - all implementations follow best practices

Important Files Changed

Filename Overview
clients/admin-ui/src/features/asset-reporting/hooks/useAssetReportingTable.tsx Implements table hook with state management using existing useTableState hook - no issues found
clients/admin-ui/src/features/asset-reporting/asset-reporting.slice.ts Clean RTK Query slice with proper tag usage for cache invalidation
clients/admin-ui/src/features/asset-reporting/AssetReportingTable.tsx Simple presentational component with proper use of Ant Design components
clients/admin-ui/src/features/asset-reporting/hooks/useAssetReportingDownload.ts Clean download hook with proper error handling and blob creation
clients/admin-ui/src/pages/reporting/assets/index.tsx Clean page component following established patterns
clients/admin-ui/src/features/assessments/AssessmentChatModal.tsx Unrelated file added in same commit - chat modal implementation is clean

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@gilluminate gilluminate left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mfbrown something isn't quite right with the table configuration. Things are getting cut off, likely due to some sizing settings. This screen shot is at 1280 wide browser and scrolled all the way down and right. Be sure to check out https://ethyca.atlassian.net/wiki/spaces/DES/pages/3865214978/Tables for some advice there.

Image

Additionally, the table seems to be wired up for client side sorting and filtering and isn't talking to the server at all when attempting those. You'll need to look at another table doing server-side for examples on how to handle that.

Comment on lines +285 to +302
sticky: {
offsetHeader: 40,
offsetScroll: 0,
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be causing some of the cut-off issues. Double check these arbitrary values

@mfbrown
Copy link
Author

mfbrown commented Jan 27, 2026

@mfbrown something isn't quite right with the table configuration. Things are getting cut off, likely due to some sizing settings. This screen shot is at 1280 wide browser and scrolled all the way down and right. Be sure to check out https://ethyca.atlassian.net/wiki/spaces/DES/pages/3865214978/Tables for some advice there.

Image Additionally, the table seems to be wired up for client side sorting and filtering and isn't talking to the server at all when attempting those. You'll need to look at another table doing server-side for examples on how to handle that.

@gilluminate This feature also depends on this backend fidesplus branch, which I will include in the description: feature/asset-reporting

I think that might resolve some of the issues you were mentioning here?

@gilluminate
Copy link
Contributor

This feature also depends on this backend fidesplus branch

@mfbrown I was running that, actually. The endpoints never seem to get fired again when I tested this locally. I'll try again today.

@gilluminate
Copy link
Contributor

@mfbrown correction: filtering IS working with server-side filtering. It's only the sorting that isn't working.

@mfbrown
Copy link
Author

mfbrown commented Jan 28, 2026

@mfbrown something isn't quite right with the table configuration. Things are getting cut off, likely due to some sizing settings. This screen shot is at 1280 wide browser and scrolled all the way down and right. Be sure to check out https://ethyca.atlassian.net/wiki/spaces/DES/pages/3865214978/Tables for some advice there.
Image
Additionally, the table seems to be wired up for client side sorting and filtering and isn't talking to the server at all when attempting those. You'll need to look at another table doing server-side for examples on how to handle that.

@gilluminate This feature also depends on this backend fidesplus branch, which I will include in the description: feature/asset-reporting

I think that might resolve some of the issues you were mentioning here?

@gilluminate Also curious if you were still seeing the cutoff issues or the issue where the domain was rendering in an array. Those should be fixed.

Copy link
Contributor

@gilluminate gilluminate left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks really good, nice work! Tested locally and working well. Just 2 really nit-picky pieces of feedback and it's good to go.

  1. The changelog is a bit wordy
  2. I think the nav is a bit confusing having a generic "Reporting" right above "Asset reporting." Can we update "Reporting" to "Data map reporting" or change this to just be "Assets?"
Image

@@ -0,0 +1,4 @@
type: Added
description: Added asset reporting UI with paginated table, column filtering, sorting, search, and CSV export for cross-system asset aggregation.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super nit-picky: this is a bit overkill IMO

Suggested change
description: Added asset reporting UI with paginated table, column filtering, sorting, search, and CSV export for cross-system asset aggregation.
description: Added asset reporting table with CSV export for cross-system asset aggregation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants