Assessment: L1 Eliminatory filters, Post-Processing & Results page#188
Assessment: L1 Eliminatory filters, Post-Processing & Results page#188vprashrex wants to merge 6 commits into
Conversation
…test model information - Added `latestModelByConfig` to `AssessmentConfiguration` and `SavedConfigs` components to track the latest model for each config. - Updated `SavedConfigCard` to display the latest model information if available. - Introduced `useLatestConfigModels` hook to fetch and manage the latest model data for each config. - Created a new `ExpandIcon` component for UI consistency. - Implemented `FormulaInput` component for enhanced formula editing with at-mention support. - Refactored assessment results handling to include new post-processing configurations and improved data normalization. - Added new types for L1 configurations and post-processing settings in the assessment types. - Updated constants and utility functions to support new features and improve code maintainability.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 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)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Ayush8923
left a comment
There was a problem hiding this comment.
Approve with few comments.
| const [headers, setHeaders] = useState<string[] | null>(null); | ||
| const [rows, setRows] = useState<string[][] | null>(null); | ||
| const [error, setError] = useState<string | null>(null); |
There was a problem hiding this comment.
Move these useState related hooks calling above of the runId.
| import DownloadIcon from "@/app/components/icons/assessment/DownloadIcon"; | ||
| import LoadingSpinner from "@/app/components/assessment/LoadingSpinner"; |
There was a problem hiding this comment.
BTW this is not good practices, import every component individually. Create the one index.ts file inside the assessment and then import the file from there.
like this:
import { DownloadIcon, LoadingSpinner } from "@/app/components/icons/assessment";
| {i + 1} | ||
| </span> | ||
|
|
||
| <select |
There was a problem hiding this comment.
We can use the Select component here.
| import DownloadIcon from "@/app/components/icons/assessment/DownloadIcon"; | ||
| import LoadingSpinner from "@/app/components/assessment/LoadingSpinner"; |
There was a problem hiding this comment.
Why we are not using the existing Loader component here?
| columns: string[]; | ||
| placeholder?: string; | ||
| className?: string; | ||
| /** Show operator toolbar above the input. Default true. */ |
There was a problem hiding this comment.
Don;t need these type of small js comments.
| failed_runs: failedRuns, | ||
| }; | ||
| } | ||
| // Metadata/system fields excluded when deriving post-processing column names. |
| } | ||
|
|
||
| export interface PostProcessingPanelProps { | ||
| /** Seed columns — overridden by fetchColumns when panel opens */ |
There was a problem hiding this comment.
| /** Seed columns — overridden by fetchColumns when panel opens */ |
| export interface PostProcessingPanelProps { | ||
| /** Seed columns — overridden by fetchColumns when panel opens */ | ||
| availableColumns: string[]; | ||
| /** Called once when panel first opens to get actual column names */ |
There was a problem hiding this comment.
| /** Called once when panel first opens to get actual column names */ |
- Implemented a new route for resuming assessment runs via POST /api/v1/assessment/runs/:id/resume. - Introduced PrefilterStep component to handle topic relevance and duplicate detection configurations. - Updated ColumnMapperStep to support attachment type mapping with mixed values. - Modified ConfigPanel to integrate PrefilterStep and manage prefilter configurations. - Enhanced EvaluationsTab to allow resuming failed assessment runs. - Updated assessment results handling to reflect new prefilter stages and statuses. - Refactored constants and types to accommodate prefiltering logic and new stage labels. - Improved utility functions for managing assessment results and spreadsheet snapshots.
Target Issue: #187
Summary
Extends the assessment flow from a single LLM pass into a configurable pipeline:
Mapper → Eliminatory → Evaluation → Post Processing → Review. Adds pre-filtering to cut LLM cost on irrelevant rows, post-processing to shape results without manual spreadsheet work, and a dedicated full-page results view.
What users can do
Eliminatory (L1) filters — optional pre-filters run before the LLM batch:
decision=REJECTrows are excluded from Evaluation and flagged in the export. Ships with a default rubric, editable in an expandable editor.Post Processing — define rules applied at export time, available both as a pipeline step and as a panel on completed runs ("Apply & Preview"):
@columnautocomplete + an operator toolbar (@Novelty_score + @Feasibility_score)=, ≠, >, <, ≥, ≤, contains, is empty …Results page — preview opens at
/assessment/results/[runId]as a full-page spreadsheet view (replaces the modal), with editable-state persistence.At-a-glance signals
l1_processing,l2_processing,l1_failed)