Platform polish: bulk invite, file requirements, filtering redesign, UX fixes
- F1: Set seed jury/mentors/observers to NONE status (not invited), remove passwords - F2: Add bulk invite UI with checkbox selection and floating toolbar - F3: Add getProjectRequirements backend query + requirement slots on project detail - F4: Redesign filtering section: AI criteria textarea, "What AI sees" card, field-aware eligibility rules with human-readable previews - F5: Auto-redirect to pipeline detail when only one pipeline exists - F6: Make project names clickable in pipeline intake panel - F7: Fix pipeline creation error: edition context fallback + .min(1) validation - Pipeline wizard sections: add isActive locking, info tooltips, UX improvements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
29
src/lib/file-type-categories.ts
Normal file
29
src/lib/file-type-categories.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
export type FileTypeCategory = {
|
||||
id: string
|
||||
label: string
|
||||
mimeTypes: string[]
|
||||
extensions: string[]
|
||||
}
|
||||
|
||||
export const FILE_TYPE_CATEGORIES: FileTypeCategory[] = [
|
||||
{ id: 'pdf', label: 'PDF', mimeTypes: ['application/pdf'], extensions: ['.pdf'] },
|
||||
{ id: 'word', label: 'Word', mimeTypes: ['application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'], extensions: ['.doc', '.docx'] },
|
||||
{ id: 'powerpoint', label: 'PowerPoint', mimeTypes: ['application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'], extensions: ['.ppt', '.pptx'] },
|
||||
{ id: 'excel', label: 'Excel', mimeTypes: ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'], extensions: ['.xls', '.xlsx'] },
|
||||
{ id: 'images', label: 'Images', mimeTypes: ['image/*'], extensions: ['.jpg', '.jpeg', '.png', '.gif', '.webp'] },
|
||||
{ id: 'videos', label: 'Videos', mimeTypes: ['video/*'], extensions: ['.mp4', '.mov', '.avi', '.webm'] },
|
||||
]
|
||||
|
||||
/** Get active category IDs from a list of mime types */
|
||||
export function getActiveCategoriesFromMimeTypes(mimeTypes: string[]): string[] {
|
||||
return FILE_TYPE_CATEGORIES.filter((cat) =>
|
||||
cat.mimeTypes.some((mime) => mimeTypes.includes(mime))
|
||||
).map((cat) => cat.id)
|
||||
}
|
||||
|
||||
/** Convert category IDs to flat mime type array */
|
||||
export function categoriesToMimeTypes(categoryIds: string[]): string[] {
|
||||
return FILE_TYPE_CATEGORIES.filter((cat) => categoryIds.includes(cat.id)).flatMap(
|
||||
(cat) => cat.mimeTypes
|
||||
)
|
||||
}
|
||||
@@ -31,6 +31,7 @@ export function defaultFilterConfig(): FilterConfig {
|
||||
return {
|
||||
rules: [],
|
||||
aiRubricEnabled: false,
|
||||
aiCriteriaText: '',
|
||||
aiConfidenceThresholds: { high: 0.85, medium: 0.6, low: 0.4 },
|
||||
manualQueueEnabled: true,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user