TODOs

  • general code cleanup

    • decide whether to rename the package invenio-community-stats

  • dependencies

    • ensure that dependent PRs are merged in invenio-requests and invenio-rdm-records

  • add config flag to switch UI between test data and production data

  • testing

    • move all tests from centralized KCWorks test suite into this package

    • fix failing python tests

    • fix failing javascript tests

    • expand test coverage

  • search indexing

    • make view and download event factories use the subcounts configuration

    • rework index keys to harmonize across different aggregators

    • add dynamic creation of index templates based on subcount configurations

  • aggregation

    • refactor CommunityUsageSnapshotAggregator for the enriched event document structure

    • ensure CommunityUsageDeltaAggregator can handle large volumes of records gracefully (paginate the query, batch the aggregations)

    • get tests for aggregator classes working

    • get tests for queries working with refactored code

    • set up a check in aggregator classes to ensure that view/download event migration has been completed before running the aggregator tasks

    • set up automatic triggering of the startup tasks (index community events, migrate usage events) when the aggregators first run

    • add opensearch health and memory usage checks to the aggregator classes (as in the reindexing service) and quit out gracefully if necessary

    • evaluate the viability of the “published” record aggregators (currently not working because of inherent issue of published dates being retroactive)

  • UI components

    • add proper loading states to the dashboard components

    • add an updated timestamp to the dashboard views

    • fix state problems with chart views

    • add custom date range picker to the dashboard views

    • add ReactOverridable support for each of the React components

    • add mechanism for adding custom React components to the dashboard views (entry point providing file paths and component labels, to be imported in components_map.js?)

    • evaluate whether additional default components are needed

    • add invenio-communities custom field to provide per-community configuration of the dashboard layout

  • client-side data handling

    • add client-side caching of the stats data to display while new data is loading (current implementation with IndexedDB is not working)

    • update client-side data transformer to use the configurable subcounts (redundant with move to back-end data series production)

  • UI theming

    • move default CSS into this package

    • finish basic theming of the global dashboard view

    • harmonize default CSS with InvenioRDM defaults

    • improve mobile responsiveness of the dashboard views

  • API requests

    • implement back-end production of data series

    • implement back-end caching of data series

    • add cli commands for clearing cache and checking cache status

    • implement security policy for API queries

  • reporting

    • implement download of data series in various formats

    • enable data series download from dashboard widget

  • improve documentation

    • general check for accuracy after refactoring and expansion