-
-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Description
Support multi-status filtering in record search to improve the user experience by allowing users to view records with different statuses together. This enhancement leverages workspace schema configuration to provide intelligent filtering across multi-stage document extraction workflows.
Problem
- Users can only filter records by a single status at a time (e.g., only "pending" or only "completed")
- No way to view a combination of status-based records (e.g., both "pending" and "draft" records)
- Limited filtering flexibility for different annotation workflows
- Current implementation doesn't consider multi-stage extraction workflows where different statuses may be relevant
Proposed Solution
- Enhance Backend API: Modify record search to accept arrays of status values with workspace context
- Leverage Workspace Configuration: Use workspace schema configuration to provide intelligent status filtering
- Improve Frontend UI: Create multi-select filtering controls with workflow awareness
- Document-Centric Filtering: Enable filtering that considers document-level status across schemas
Implementation Details
Dependencies
- Workspace schema configuration infrastructure should be available for optimal implementation
- SchemaService should provide workflow context for status filtering
- Document-centric APIs would enhance the filtering experience
Backend Changes
-
Update search API to support multiple statuses:
async def search_dataset_records( *, statuses: Optional[List[RecordStatus]] = Query(None), workspace_aware: bool = Query(False), # other parameters... ): if workspace_aware and statuses: schema_service = SchemaService(workspace_id, db) # Apply workspace-specific status logic filtered_statuses = schema_service.filter_relevant_statuses(statuses, dataset_id) # ... rest of implementation
-
Enhance search engine queries to handle multiple status values efficiently:
filters = [ {"terms": {"status": statuses}} if statuses else None ]
-
Add workspace context to status filtering for multi-stage workflows:
- Consider document-level status across related datasets
- Provide smart defaults based on workflow stage
- Enable cross-dataset status filtering
Frontend Changes
-
Update RecordCriteria model to support multiple statuses:
export class RecordCriteria { statuses: RecordStatus[]; workspaceAware: boolean; // existing properties... }
-
Create enhanced status filter UI:
- Multi-select checkboxes for status selection
- Workflow-aware grouping of statuses
- Smart presets based on workspace configuration
- Visual indicators for document-level status
-
Integrate with workspace schema configuration:
- Load available statuses from workspace config
- Show status relevance for current workflow stage
- Provide workflow-specific filtering suggestions
Related Files
extralit/argilla-server/src/argilla_server/services/SchemaService.py- Workspace-aware status logicextralit/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py- Enhanced search APIextralit/argilla-server/src/argilla_server/api/schemas/v1/records.py- Updated schema definitionsextralit/argilla-frontend/v1/domain/entities/record/RecordCriteria.ts- Updated criteria modelextralit/argilla-frontend/components/features/status-filter/- Enhanced filter components
Acceptance Criteria
- Backend API accepts and correctly processes multiple status values
- Workspace schema configuration influences status filtering options
- Frontend UI provides intuitive multi-select controls for record status filtering
- Users can filter records by any combination of available statuses
- Status filtering considers document-level context in multi-stage workflows
- API responses correctly filter records based on multiple selected statuses
- UI clearly indicates which status filters are currently active
- Performance is maintained with multiple status filtering
- Integration tests verify multi-status filtering behavior
- Workspace-aware filtering provides relevant status suggestions
Related Issues
This is part of the strategic workspace-level schema management enhancement:
- Depends on: Workspace Schema Configuration Infrastructure (recommended)
- Related to: [Refactor] Group records by reference in annotation queue #87 (Record grouping), [Refactor] Implement schema topological ordering in record display #88 (Schema ordering)
- Part of: [Refactor] Phase 1: Improve record grouping, ordering, and filtering #95 (Phase 1 improvements)
- Enhances: Document-centric filtering capabilities
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request