Files
DevFlow/src/api/task.ts
绝尘 36ea090d9b 新增: 依赖图环形检测 + PNG 导出 + 任务列表真实总数
- 后端 detect_module_cycles IPC(DFS 三色标记法检测环形依赖)
- 前端环检测按钮:高亮参与环的节点(红色边框)
- 图导出 PNG(X6 toPNG 回调模式)
- 后端 count_tasks IPC + 前端 taskApi.count()
- 任务列表所有筛选/搜索/排序/翻页均拉真实 total
2026-07-01 11:30:19 +08:00

51 lines
1.8 KiB
TypeScript

import { invoke } from '@tauri-apps/api/core'
import type { TaskRecord, CreateTaskInput, TaskQuery } from './types'
export const taskApi = {
/**
* 列出任务。
*
* **双签名向后兼容**(F-260621-02):
* - `list(projectId?)`:旧签名,仅项目过滤(等价 `list({ project_id: projectId })`)。
* - `list(query?)`:新签名,多条件(status/keyword/project_id/priority/assignee/...)走后端 WHERE。
*
* 参数为空 → 后端返回全量未删任务(created_at DESC,等价改造前 list_active)。
*/
list(queryOrProjectId?: TaskQuery | string): Promise<TaskRecord[]> {
if (typeof queryOrProjectId === 'string') {
return invoke('list_tasks', { projectId: queryOrProjectId ?? null, query: null })
}
return invoke('list_tasks', { projectId: null, query: queryOrProjectId ?? null })
},
/** 按条件计数任务(分页 total 用)。 */
count(query?: TaskQuery): Promise<number> {
return invoke('count_tasks', { query: query ?? null })
},
get(id: string): Promise<TaskRecord> {
return invoke('get_task_by_id', { id })
},
create(input: CreateTaskInput): Promise<TaskRecord> {
return invoke('create_task', { input })
},
update(id: string, field: string, value: string): Promise<boolean> {
return invoke('update_task', { id, field, value })
},
delete(id: string): Promise<boolean> {
return invoke('delete_task', { id })
},
/**
* F-05 推进任务状态(走后端 advance_task 状态机:df-nodes task_advance_node)。
* 后端校验 from→to 合法性(can_transition)+ review_rounds 自动累加(退回时),
* 前端只传 target_status,不自行判状态机(单一真相源在后端)。
*/
advance(id: string, targetStatus: string): Promise<TaskRecord> {
return invoke('advance_task', { id, targetStatus })
},
}