refactor: strip AI pipeline to binary photo/other classifier
Drops face recognition, OCR, object detection, and semantic embeddings. The sole remaining vision task is a CLIP-based binary classifier (photography vs other); photos in "other" get needs_review=true so screenshots, documents, memes and scans can be triaged from a new filter pill in the UI. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -438,7 +438,6 @@ export interface PipelineStage {
|
||||
export interface PipelineStats {
|
||||
total_photos: number
|
||||
total_images: number
|
||||
embedder_model: string
|
||||
stages: PipelineStage[]
|
||||
}
|
||||
|
||||
@@ -621,6 +620,7 @@ export interface LibraryStats {
|
||||
with_gps: number
|
||||
duplicates: number
|
||||
discarded: number
|
||||
needs_review: number
|
||||
total_photos: number
|
||||
total_videos: number
|
||||
total_size: number
|
||||
@@ -843,7 +843,7 @@ export const sharing = {
|
||||
}
|
||||
|
||||
// Tags API
|
||||
export type TagKind = 'user' | 'object' | 'scene' | 'face_cluster'
|
||||
export type TagKind = 'user' | 'content_type'
|
||||
|
||||
export interface Tag {
|
||||
id: string
|
||||
@@ -876,11 +876,6 @@ export const tags = {
|
||||
await api.delete(`/tags/${tagId}`)
|
||||
},
|
||||
|
||||
merge: async (sourceId: string, targetId: string): Promise<{ merged_into: string; target_name: string }> => {
|
||||
const response = await api.post(`/tags/${sourceId}/merge`, { target_id: targetId })
|
||||
return response.data
|
||||
},
|
||||
|
||||
/** Add one or more tags to a photo. */
|
||||
addToPhoto: async (photoId: string, tagIds: string[]) => {
|
||||
const response = await api.post(`/photos/${photoId}/tags`, { tag_ids: tagIds })
|
||||
@@ -1013,18 +1008,12 @@ export const admin = {
|
||||
},
|
||||
|
||||
triggerAiBackfill: async (body: {
|
||||
task?: 'embed' | 'ocr' | 'detect' | 'faces' | 'classify' | null
|
||||
limit?: number | null
|
||||
}): Promise<{ status: string; task_id: string }> => {
|
||||
const response = await api.post('/admin/ai/backfill', body)
|
||||
return response.data
|
||||
},
|
||||
|
||||
triggerFaceRecluster: async (): Promise<{ status: string; task_id: string }> => {
|
||||
const response = await api.post('/admin/ai/recluster-faces')
|
||||
return response.data
|
||||
},
|
||||
|
||||
triggerFullRescan: async (): Promise<{ status: string; task_id: string }> => {
|
||||
const response = await api.post('/admin/ai/rescan')
|
||||
return response.data
|
||||
|
||||
Reference in New Issue
Block a user