diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index be27815..18d6567 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -196,9 +196,9 @@ function CreateTaskModal({ onClose, onSubmit }: { {/* Title */}
- + setTitle(e.target.value)} - placeholder="简要概括任务..." + placeholder="简要概括任务,不填自动从描述生成..." style={{ width: '100%', padding: '8px 12px', borderRadius: 6, border: '1px solid var(--line)', background: 'var(--panel)', color: 'var(--fg)', fontSize: 13 }} />
diff --git a/src/frontend/src/api.ts b/src/frontend/src/api.ts index d40b62e..06eaedd 100644 --- a/src/frontend/src/api.ts +++ b/src/frontend/src/api.ts @@ -222,14 +222,16 @@ export const api = { const pid = _currentProjectId || Object.keys((await api.projects()).projects)[0]; if (!pid) return { ok: false, error: 'No project selected' }; const prio = typeof data.priority === 'string' ? parseInt(data.priority, 10) || 5 : 5; - return postJ(`${API_BASE}/api/projects/${pid}/tasks`, { + // title 为空时不传,后端自动生成(description 前30字 + …) + const payload: any = { id: `task-${Date.now().toString(36)}`, - title: data.title || data.requirement || '', description: data.requirement || data.title || '', task_type: data.project_type || 'general', priority: prio, assigned_by: 'user', - }); + }; + if (data.title && data.title.trim()) payload.title = data.title.trim(); + return postJ(`${API_BASE}/api/projects/${pid}/tasks`, payload); } catch (e: any) { return { ok: false, error: e.message }; }