таски готовы

This commit is contained in:
2026-02-23 10:18:56 +03:00
parent f0c85e4c03
commit 008b6d72c9
48 changed files with 3559 additions and 72 deletions

View File

@@ -0,0 +1,272 @@
openapi: 3.0.3
info:
title: Unified Task Reports API
version: 1.0.0
description: API contract for consolidated task reports across task types.
servers:
- url: /api
paths:
/reports:
get:
summary: List unified task reports
description: Returns paginated normalized reports with filtering and sorting.
operationId: listReports
parameters:
- in: query
name: page
schema:
type: integer
minimum: 1
default: 1
- in: query
name: page_size
schema:
type: integer
minimum: 1
maximum: 100
default: 20
- in: query
name: task_types
description: Comma-separated values
schema:
type: string
example: migration,backup
- in: query
name: statuses
description: Comma-separated values
schema:
type: string
example: failed,in_progress
- in: query
name: time_from
schema:
type: string
format: date-time
- in: query
name: time_to
schema:
type: string
format: date-time
- in: query
name: search
schema:
type: string
maxLength: 200
- in: query
name: sort_by
schema:
type: string
enum: [updated_at, status, task_type]
default: updated_at
- in: query
name: sort_order
schema:
type: string
enum: [asc, desc]
default: desc
responses:
'200':
description: Paginated unified reports
content:
application/json:
schema:
$ref: '#/components/schemas/ReportCollection'
'400':
description: Invalid query parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
'403':
description: Forbidden
/reports/{report_id}:
get:
summary: Get report detail
description: Returns one normalized report with optional diagnostics and next actions.
operationId: getReportDetail
parameters:
- in: path
name: report_id
required: true
schema:
type: string
responses:
'200':
description: Report detail
content:
application/json:
schema:
$ref: '#/components/schemas/ReportDetailView'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Report not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
TaskType:
type: string
enum:
- llm_verification
- backup
- migration
- documentation
- unknown
ReportStatus:
type: string
enum:
- success
- failed
- in_progress
- partial
ReportSourceRef:
type: object
additionalProperties: true
description: Optional pointers to related domain objects (dashboard/dataset/environment).
ErrorContext:
type: object
properties:
code:
type: string
message:
type: string
next_actions:
type: array
items:
type: string
required: [message]
TaskReport:
type: object
properties:
report_id:
type: string
task_id:
type: string
task_type:
$ref: '#/components/schemas/TaskType'
status:
$ref: '#/components/schemas/ReportStatus'
started_at:
type: string
format: date-time
nullable: true
updated_at:
type: string
format: date-time
summary:
type: string
details:
type: object
nullable: true
additionalProperties: true
error_context:
$ref: '#/components/schemas/ErrorContext'
source_ref:
$ref: '#/components/schemas/ReportSourceRef'
required:
- report_id
- task_id
- task_type
- status
- updated_at
- summary
ReportQueryEcho:
type: object
properties:
page:
type: integer
page_size:
type: integer
task_types:
type: array
items:
$ref: '#/components/schemas/TaskType'
statuses:
type: array
items:
$ref: '#/components/schemas/ReportStatus'
time_from:
type: string
format: date-time
nullable: true
time_to:
type: string
format: date-time
nullable: true
search:
type: string
nullable: true
sort_by:
type: string
enum: [updated_at, status, task_type]
sort_order:
type: string
enum: [asc, desc]
required: [page, page_size, sort_by, sort_order]
ReportCollection:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/TaskReport'
total:
type: integer
minimum: 0
page:
type: integer
minimum: 1
page_size:
type: integer
minimum: 1
has_next:
type: boolean
applied_filters:
$ref: '#/components/schemas/ReportQueryEcho'
required: [items, total, page, page_size, has_next, applied_filters]
ReportDetailView:
type: object
properties:
report:
$ref: '#/components/schemas/TaskReport'
timeline:
type: array
items:
type: object
additionalProperties: true
diagnostics:
type: object
nullable: true
additionalProperties: true
next_actions:
type: array
items:
type: string
required: [report]
ErrorResponse:
type: object
properties:
detail:
type: string
code:
type: string
required: [detail]