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 { 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 { return invoke('count_tasks', { query: query ?? null }) }, get(id: string): Promise { return invoke('get_task_by_id', { id }) }, create(input: CreateTaskInput): Promise { return invoke('create_task', { input }) }, update(id: string, field: string, value: string): Promise { return invoke('update_task', { id, field, value }) }, delete(id: string): Promise { 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 { return invoke('advance_task', { id, targetStatus }) }, }