auto-sync: 2026-05-21 20:07:15

This commit is contained in:
cfdaily
2026-05-21 20:07:15 +08:00
parent be8001b327
commit 3fb9c34f07
+40 -49
View File
@@ -102,66 +102,57 @@ function StatusButtons({ status, taskId, onAction }: { status: string; taskId: s
const [showAdvanced, setShowAdvanced] = useState(false);
// AI Native:只显示人需要做的动作
const PRIMARY_ACTIONS: Record<string, Array<{ target: string; label: string; icon: string; bg: string; color: string; border: string }>> = {
pending: [{ target: 'cancelled', label: '取消任务', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' }],
working: [{ target: 'paused', label: '暂停任务', icon: '⏸', bg: '#818cf822', color: '#818cf8', border: '#818cf844' }],
waiting_human: [
{ target: 'done', label: '确认完成', icon: '', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'working', label: '拒绝,继续做', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' },
// v3.1: 取消 ADVANCED 折叠区,所有操作直接展示
// 设计原则:暂停和取消是用户通用权利
const ACTION_BUTTONS: Record<string, Array<{ target: string; label: string; icon: string; bg: string; color: string; border: string }>> = {
pending: [
{ target: 'paused', label: '暂停', icon: '', bg: '#818cf822', color: '#818cf8', border: '#818cf844' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
claimed: [
{ target: 'paused', label: '暂停', icon: '⏸', bg: '#818cf822', color: '#818cf8', border: '#818cf844' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
working: [
{ target: 'paused', label: '暂停', icon: '⏸', bg: '#818cf822', color: '#818cf8', border: '#818cf844' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
paused: [
{ target: 'pending', label: '恢复', icon: '▶', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
review: [
{ target: 'paused', label: '暂停', icon: '⏸', bg: '#818cf822', color: '#818cf8', border: '#818cf844' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
failed: [
{ target: 'pending', label: '重试', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
blocked: [
{ target: 'pending', label: '解除阻塞', icon: '🔓', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
escalated: [
{ target: 'working', label: '继续执行', icon: '▶', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'pending', label: '重新分配', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' },
],
failed: [{ target: 'pending', label: '重试', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' }],
blocked: [{ target: 'pending', label: '解除阻塞', icon: '🔓', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' }],
paused: [
{ target: 'working', label: '继续执行', icon: '▶', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'cancelled', label: '取消任务', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
done: [{ target: '__archive', label: '归档', icon: '📦', bg: '#6b728022', color: '#6b7280', border: '#6b728044' }],
cancelled: [{ target: '__archive', label: '归档', icon: '📦', bg: '#6b728022', color: '#6b7280', border: '#6b728044' }],
};
// 高级操作(手动干预用)
const ADVANCED_ACTIONS: Record<string, Array<{ target: string; label: string; icon: string; bg: string; color: string; border: string }>> = {
working: [
{ target: 'review', label: '手动提交审查', icon: '🔍', bg: '#818cf822', color: '#818cf8', border: '#818cf844' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
review: [
{ target: 'done', label: '手动通过', icon: '✅', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'pending', label: '打回重做', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
escalated: [
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
failed: [
{ target: 'escalated', label: '升级求助', icon: '⚠️', bg: '#ff527022', color: '#ff5270', border: '#ff527044' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
blocked: [
{ target: 'escalated', label: '升级求助', icon: '⚠️', bg: '#ff527022', color: '#ff5270', border: '#ff527044' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
waiting_human: [
{ target: 'done', label: '确认', icon: '✅', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: 'working', label: '拒绝', icon: '🔄', bg: '#7a9aff22', color: '#7a9aff', border: '#7a9aff44' },
{ target: 'cancelled', label: '取消', icon: '🚫', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
done: [
{ target: '__archive', label: '归档', icon: '📦', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
cancelled: [
{ target: 'pending', label: '重新启动', icon: '🔄', bg: '#2ecc8a22', color: '#2ecc8a', border: '#2ecc8a44' },
{ target: '__archive', label: '归档', icon: '📦', bg: '#6b728022', color: '#6b7280', border: '#6b728044' },
],
};
const primary = PRIMARY_ACTIONS[status] || [];
const advanced = ADVANCED_ACTIONS[status] || [];
if (primary.length === 0 && advanced.length === 0) {
// Agent 自动流转的状态,提示用户
const autoMsg: Record<string, string> = {
pending: '⏳ 等待 Agent 自动认领...',
claimed: '⏳ Agent 已认领,即将开始...',
review: '🔍 Agent 审查中,请等待审查结果...',
};
return <div style={{ fontSize: 12, color: 'var(--muted)', padding: '4px 0' }}>{autoMsg[status] || ''}</div>;
}
const buttons = ACTION_BUTTONS[status] || [];
const handleClick = async (targetStatus: string) => {
setLoading(targetStatus);