auto-sync: 2026-05-19 14:03:20

This commit is contained in:
cfdaily
2026-05-19 14:03:20 +08:00
parent 3419baf1f8
commit 92c1b48e66
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import { api } from '../api'; import { api, _getProjectId } from '../api';
import { useStore } from '../store'; import { useStore } from '../store';
// ── 类型定义(对齐后端 checkpoints 表) ── // ── 类型定义(对齐后端 checkpoints 表) ──
@@ -57,7 +57,7 @@ function DecisionCheckpoint({
if (!selected) return; if (!selected) return;
setLoading(true); setLoading(true);
try { try {
const res = await fetch(`/api/projects/${api._getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/approve`, { const res = await fetch(`/api/projects/${_getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/approve`, {
method: 'POST', headers: { 'Content-Type': 'application/json' }, method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ resolved_by: 'user', note: `选择: ${selected}${note ? '\n' + note : ''}` }), body: JSON.stringify({ resolved_by: 'user', note: `选择: ${selected}${note ? '\n' + note : ''}` }),
}); });
@@ -125,7 +125,7 @@ function VerifyCheckpoint({
if (action === 'reject' && !showReject) { setShowReject(true); return; } if (action === 'reject' && !showReject) { setShowReject(true); return; }
setLoading(true); setLoading(true);
try { try {
const res = await fetch(`/api/projects/${api._getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/${action}`, { const res = await fetch(`/api/projects/${_getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/${action}`, {
method: 'POST', headers: { 'Content-Type': 'application/json' }, method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ resolved_by: 'user', note: reason }), body: JSON.stringify({ resolved_by: 'user', note: reason }),
}); });
@@ -215,7 +215,7 @@ function ActionCheckpoint({
if (!allDone) return; if (!allDone) return;
setLoading(true); setLoading(true);
try { try {
const res = await fetch(`/api/projects/${api._getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/approve`, { const res = await fetch(`/api/projects/${_getProjectId()}/tasks/${taskId}/checkpoints/${cp.id}/approve`, {
method: 'POST', headers: { 'Content-Type': 'application/json' }, method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ resolved_by: 'user', note }), body: JSON.stringify({ resolved_by: 'user', note }),
}); });
@@ -291,7 +291,7 @@ export default function CheckpointPanel({
const [activeIdx, setActiveIdx] = useState(0); const [activeIdx, setActiveIdx] = useState(0);
useEffect(() => { useEffect(() => {
const pid = api._getProjectId(); const pid = _getProjectId();
if (!pid) return; if (!pid) return;
fetch(`/api/projects/${pid}/tasks/${taskId}/checkpoints`) fetch(`/api/projects/${pid}/tasks/${taskId}/checkpoints`)
.then(r => r.json()) .then(r => r.json())