Add detailed logging for AI tagging progress
Build and Push Docker Image / build (push) Successful in 9m41s Details

- Log each project being processed with timing
- Log progress every 10 projects with time estimates
- Log final completion stats

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Matt 2026-02-05 11:34:32 +01:00
parent e37154d812
commit 0b86dc6477
1 changed files with 44 additions and 2 deletions

View File

@ -503,23 +503,44 @@ export async function batchTagProjects(
let failed = 0 let failed = 0
const errors: string[] = [] const errors: string[] = []
console.log(`[AI Tagging] Starting batch processing of ${untaggedProjects.length} projects in round...`)
const startTime = Date.now()
for (let i = 0; i < untaggedProjects.length; i++) { for (let i = 0; i < untaggedProjects.length; i++) {
const project = untaggedProjects[i] const project = untaggedProjects[i]
const projectStartTime = Date.now()
console.log(`[AI Tagging] Processing project ${i + 1}/${untaggedProjects.length}: "${project.title.substring(0, 50)}..."`)
try { try {
const result = await tagProject(project.id, userId) const result = await tagProject(project.id, userId)
results.push(result) results.push(result)
processed++ processed++
const elapsed = ((Date.now() - projectStartTime) / 1000).toFixed(1)
console.log(`[AI Tagging] ✓ Tagged "${project.title.substring(0, 30)}..." with ${result.applied.length} tags (${elapsed}s)`)
} catch (error) { } catch (error) {
failed++ failed++
errors.push(`${project.title}: ${error instanceof Error ? error.message : 'Unknown error'}`) const errorMsg = error instanceof Error ? error.message : 'Unknown error'
errors.push(`${project.title}: ${errorMsg}`)
console.error(`[AI Tagging] ✗ Failed "${project.title.substring(0, 30)}...": ${errorMsg}`)
} }
// Report progress // Report progress
if (onProgress) { if (onProgress) {
onProgress(i + 1, untaggedProjects.length) onProgress(i + 1, untaggedProjects.length)
} }
// Log progress every 10 projects
if ((i + 1) % 10 === 0) {
const elapsed = ((Date.now() - startTime) / 1000).toFixed(0)
const avgTime = (Date.now() - startTime) / (i + 1) / 1000
const remaining = avgTime * (untaggedProjects.length - i - 1)
console.log(`[AI Tagging] Progress: ${i + 1}/${untaggedProjects.length} (${elapsed}s elapsed, ~${remaining.toFixed(0)}s remaining)`)
}
} }
const totalTime = ((Date.now() - startTime) / 1000).toFixed(1)
console.log(`[AI Tagging] Batch complete: ${processed} tagged, ${failed} failed, ${alreadyTaggedCount} skipped in ${totalTime}s`)
return { return {
processed, processed,
failed, failed,
@ -586,23 +607,44 @@ export async function batchTagProgramProjects(
let failed = 0 let failed = 0
const errors: string[] = [] const errors: string[] = []
console.log(`[AI Tagging] Starting batch processing of ${untaggedProjects.length} projects...`)
const startTime = Date.now()
for (let i = 0; i < untaggedProjects.length; i++) { for (let i = 0; i < untaggedProjects.length; i++) {
const project = untaggedProjects[i] const project = untaggedProjects[i]
const projectStartTime = Date.now()
console.log(`[AI Tagging] Processing project ${i + 1}/${untaggedProjects.length}: "${project.title.substring(0, 50)}..."`)
try { try {
const result = await tagProject(project.id, userId) const result = await tagProject(project.id, userId)
results.push(result) results.push(result)
processed++ processed++
const elapsed = ((Date.now() - projectStartTime) / 1000).toFixed(1)
console.log(`[AI Tagging] ✓ Tagged "${project.title.substring(0, 30)}..." with ${result.applied.length} tags (${elapsed}s)`)
} catch (error) { } catch (error) {
failed++ failed++
errors.push(`${project.title}: ${error instanceof Error ? error.message : 'Unknown error'}`) const errorMsg = error instanceof Error ? error.message : 'Unknown error'
errors.push(`${project.title}: ${errorMsg}`)
console.error(`[AI Tagging] ✗ Failed "${project.title.substring(0, 30)}...": ${errorMsg}`)
} }
// Report progress // Report progress
if (onProgress) { if (onProgress) {
onProgress(i + 1, untaggedProjects.length) onProgress(i + 1, untaggedProjects.length)
} }
// Log progress every 10 projects
if ((i + 1) % 10 === 0) {
const elapsed = ((Date.now() - startTime) / 1000).toFixed(0)
const avgTime = (Date.now() - startTime) / (i + 1) / 1000
const remaining = avgTime * (untaggedProjects.length - i - 1)
console.log(`[AI Tagging] Progress: ${i + 1}/${untaggedProjects.length} (${elapsed}s elapsed, ~${remaining.toFixed(0)}s remaining)`)
}
} }
const totalTime = ((Date.now() - startTime) / 1000).toFixed(1)
console.log(`[AI Tagging] Batch complete: ${processed} tagged, ${failed} failed, ${alreadyTaggedCount} skipped in ${totalTime}s`)
return { return {
processed, processed,
failed, failed,