Files
OCR/openspec/specs/task-management/spec.md
egg 012da1abc4 fix: migrate UI to V2 API and fix admin dashboard
Backend fixes:
- Fix markdown generation using correct 'markdown_content' key in tasks.py
- Update admin service to return flat data structure matching frontend types
- Add task_count and failed_tasks fields to user statistics
- Fix top users endpoint to return complete user data

Frontend fixes:
- Migrate ResultsPage from V1 batch API to V2 task API with polling
- Create TaskDetailPage component with markdown preview and download buttons
- Refactor ExportPage to support multi-task selection using V2 download endpoints
- Fix login infinite refresh loop with concurrency control flags
- Create missing Checkbox UI component

New features:
- Add /tasks/:taskId route for task detail view
- Implement multi-task batch export functionality
- Add real-time task status polling (2s interval)

OpenSpec:
- Archive completed proposal 2025-11-17-fix-v2-api-ui-issues
- Create result-export and task-management specifications

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 08:55:50 +08:00

2.6 KiB

task-management Specification

Purpose

TBD - created by archiving change fix-v2-api-ui-issues. Update Purpose after archive.

Requirements

Requirement: Task Result Generation

The OCR service SHALL generate both JSON and Markdown result files for completed tasks with actual content.

Scenario: Markdown file contains OCR results

  • WHEN a task completes OCR processing successfully
  • THEN the generated .md file SHALL contain the extracted text in markdown format
  • AND the file size SHALL be greater than 0 bytes
  • AND the markdown SHALL include headings, paragraphs, and formatting based on OCR layout detection

Scenario: Result files stored in task directory

  • WHEN OCR processing completes for task ID 88c6c2d2-37e1-48fd-a50f-406142987bdf
  • THEN result files SHALL be stored in storage/results/88c6c2d2-37e1-48fd-a50f-406142987bdf/
  • AND both <filename>_result.json and <filename>_result.md SHALL exist
  • AND both files SHALL contain valid OCR output data

Requirement: Task Detail View

The frontend SHALL provide a dedicated page for viewing individual task details.

Scenario: Navigate to task detail page

  • WHEN user clicks "View Details" button on task in Task History page
  • THEN browser SHALL navigate to /tasks/{task_id}
  • AND TaskDetailPage component SHALL render

Scenario: Display task information

  • WHEN TaskDetailPage loads for a valid task ID
  • THEN page SHALL display task metadata (filename, status, processing time, confidence)
  • AND page SHALL show markdown preview of OCR results
  • AND page SHALL provide download buttons for JSON, Markdown, and PDF formats

Scenario: Download from task detail page

  • WHEN user clicks download button for a specific format
  • THEN browser SHALL download the file using /api/v2/tasks/{task_id}/download/{format} endpoint
  • AND downloaded file SHALL contain the task's OCR results in requested format

Requirement: Results Page V2 Migration

The Results page SHALL use V2 task-based APIs instead of V1 batch APIs.

Scenario: Load task results instead of batch

  • WHEN Results page loads with a task ID in upload store
  • THEN page SHALL call apiClientV2.getTask(taskId) to fetch task details
  • AND page SHALL NOT call any V1 batch status endpoints
  • AND task information SHALL display correctly

Scenario: Handle missing task gracefully

  • WHEN Results page loads without a task ID
  • THEN page SHALL display helpful message directing user to upload page
  • AND page SHALL provide button to navigate to /upload