Files
ss-tools/specs/024-user-dashboard-filter/spec.md
2026-03-04 19:42:17 +03:00

11 KiB
Raw Blame History

Feature Specification: User Profile Dashboard Filter

Feature Branch: 024-user-dashboard-filter
Created: 2026-03-04
Status: Draft
Input: User description: "Необходимо добавить страницу пользовательского профиля. В странице стоит указать следующие настройки - показывать по умолчанию только мои дашборды. Для этого в настройках следует указать поле для аккаунта Apache Superset, и дальше фильтровать все дашборды по имени owners | modified_by"

Clarifications

Session 2026-03-04

  • Q: How should username mapping work if users switch between different Superset environments? → A: One global Superset username for all environments.
  • Q: What exact filter logic should be used for owners and modified_by? → A: Include dashboard if username matches owners OR modified_by.
  • Q: How should username matching work between saved profile username and dashboard fields? → A: Compare case-insensitively and trim surrounding spaces.
  • Q: Who is allowed to edit the dashboard filter settings on the profile page? → A: Only the logged-in user can edit their own profile settings.
  • Q: Where should the default "my dashboards" filter be applied in the product? → A: Only on the main dashboards list page.
  • Q: Should profile binding support querying Apache Superset accounts from a selected environment? → A: Yes, provide account lookup from Superset environment during account binding.

User Scenarios & Testing (mandatory)

User Story 1 - Configure Dashboard Filter Preference (Priority: P1)

As a data analyst working with Apache Superset dashboards, I want to configure my profile to show only dashboards I own or have modified, so that I can quickly access my work without scrolling through irrelevant dashboards.

Why this priority: This is the core value of the feature - personalization of the dashboard view to improve user productivity. Without this, the feature provides no value.

Independent Test: Can be fully tested by navigating to the profile page, entering a Superset username, enabling the filter, saving preferences, and verifying that only matching dashboards appear in the dashboard list.

Acceptance Scenarios:

  1. Given the user is on their profile page, When they enter a valid Apache Superset username and enable "Show only my dashboards", Then the system saves their preference and applies the filter to the dashboard list
  2. Given the user has saved their filter preference, When they navigate to the dashboard list, Then only dashboards where they are listed as owner or modifier are displayed
  3. Given the user has enabled the filter, When they disable it and save, Then the dashboard list shows all available dashboards again
  4. Given the user is binding their Apache Superset account, When they select a Superset environment in profile settings, Then the system loads available Superset accounts and allows selecting one for binding
  5. Given the user enters an invalid username format, When they attempt to save, Then the system displays a validation error and prevents saving

User Story 2 - Manage Profile Settings (Priority: P2)

As a user, I want to access and modify my profile settings from a dedicated page, so that I can control my dashboard viewing preferences at any time.

Why this priority: While essential for the feature to work, this is a supporting capability that enables the core filtering functionality. It can be implemented alongside the filtering logic.

Independent Test: Can be tested by navigating to the profile page, viewing current settings, making changes, and verifying persistence across sessions.

Acceptance Scenarios:

  1. Given the user has previously saved their preferences, When they navigate to the profile page, Then their current settings are displayed (username and filter toggle state)
  2. Given the user is on the profile page, When they click "Cancel" without saving changes, Then their previous settings remain unchanged
  3. Given the user modifies their settings, When they click "Save", Then the changes persist and are reflected immediately in the dashboard list
  4. Given a user attempts to edit another user's profile settings, When they submit changes, Then the system denies the action and keeps the target user's settings unchanged

User Story 3 - Override Dashboard Filter (Priority: P3)

As a user, I want to temporarily view all dashboards even when my filter is enabled, so that I can explore dashboards owned by others when needed.

Why this priority: This enhances usability by providing flexibility. Users may occasionally need to see all dashboards without permanently changing their preference.

Independent Test: Can be tested by having a filter enabled, then using a clear/remove filter option on the dashboard list to temporarily show all dashboards.

Acceptance Scenarios:

  1. Given the user has enabled "Show only my dashboards", When they click the filter indicator on the dashboard list, Then all dashboards are displayed and the filter is temporarily disabled
  2. Given the user has temporarily disabled the filter, When they navigate away and return to the dashboard list, Then their original filter preference is still applied

Edge Cases

  • What happens when the user's Superset username is changed in Apache Superset after they've configured their filter?
  • How does the system handle a user who has no dashboards as owner or modifier?
  • What happens when the Apache Superset connection is unavailable when the user tries to save preferences?
  • How does the system handle special characters or very long usernames?
  • What happens when one user has different usernames across Superset environments?
  • How does the system behave if the Superset account lookup request fails or returns partial data?
  • How does the system behave if the user has never configured their profile settings?

Requirements (mandatory)

Functional Requirements

  • FR-001: System MUST provide a user profile page accessible from the main application interface
  • FR-002: Profile page MUST include a text input field for Apache Superset username
  • FR-003: Profile page MUST include a toggle control for "Show only my dashboards by default" setting
  • FR-004: System MUST validate that the username field is not empty when the filter toggle is enabled
  • FR-005: System MUST validate that the username does not contain spaces or invalid characters
  • FR-006: System MUST persist user profile settings across sessions
  • FR-007: When the filter is enabled, dashboard list MUST include a dashboard if the user's username matches the owners field OR the modified_by field
  • FR-008: When the filter is enabled, dashboard list MUST exclude dashboards where the user's username matches neither owners nor modified_by
  • FR-009: System MUST apply the filter immediately after saving profile preferences on the main dashboards list page
  • FR-010: Dashboard list MUST display a visual indicator when a filter is active
  • FR-011: System MUST allow users to temporarily clear the filter from the dashboard list view
  • FR-012: System MUST restore the user's filter preference when returning to the dashboard list after temporarily clearing it
  • FR-013: System MUST display appropriate error messages when settings cannot be saved
  • FR-014: System MUST display a success confirmation when settings are saved successfully
  • FR-015: System MUST handle the case where no dashboards match the filter criteria with an appropriate empty state message
  • FR-016: System MUST use one global Apache Superset username per user profile across all Superset environments
  • FR-017: System MUST match usernames using case-insensitive comparison after trimming leading and trailing spaces in both saved username and dashboard fields
  • FR-018: System MUST allow users to edit only their own dashboard filter settings and MUST prevent edits to other users' settings
  • FR-019: System MUST NOT auto-apply this default filter outside the main dashboards list page
  • FR-020: While binding Apache Superset account in profile settings, system MUST allow selecting a Superset environment for account lookup
  • FR-021: For selected environment, system MUST request and display available Superset accounts for user selection during binding
  • FR-022: If Superset account lookup is unavailable, system MUST show a non-blocking error and allow manual username entry

Key Entities

  • User Profile: Stores user preferences including one global Apache Superset username and dashboard filter setting. Key attributes: username (text, global across environments), show_only_my_dashboards (boolean)
  • Dashboard: Represents an Apache Superset dashboard. Key attributes: dashboard_id, title, owner (username), modified_by (username), last_modified_date
  • Filter Preference: Represents the user's saved filtering behavior. Key attributes: enabled (boolean), username (text), filter_type (owners_or_modified_by)
  • Superset Account Candidate: Represents an account returned from selected Superset environment lookup for profile binding. Key attributes: environment_id, username, display_name

Success Criteria (mandatory)

Measurable Outcomes

  • SC-001: Users can configure their dashboard filter preference in under 30 seconds
  • SC-002: After saving preferences, users see the dashboard list update to the filtered view within 2 seconds
  • SC-003: 95% of users successfully save their profile settings on first attempt
  • SC-004: Users report a 50% reduction in time spent finding their dashboards in surveys
  • SC-005: During peak usage, users can save preferences reliably without noticeable slowdowns
  • SC-006: Filter correctly identifies user-owned dashboards with 99% accuracy based on owner and modified_by fields
  • SC-007: Profile settings persist correctly across 100% of user sessions

Assumptions

  • Users have an existing Apache Superset account with a unique username
  • The application can access dashboard metadata that includes owner and modified_by identifiers
  • The application has an existing user authentication system that can be extended with profile settings
  • Dashboard list page exists and can be modified to support filtering
  • Apache Superset username format follows standard conventions (alphanumeric, underscores, hyphens allowed)
  • Each user has one global Superset username that is used in all environments
  • Configured Superset environments expose account listing data that can be queried during profile binding