@@ -22,30 +22,52 @@ export async function GET(request, { params }) {
2222 return NextResponse . json ( { error : 'Project ID cannot be empty' } , { status : 400 } ) ;
2323 }
2424
25- let status = searchParams . get ( 'status' ) ;
25+ const confirmedParam = searchParams . get ( 'confirmed' ) ;
26+ const confirmed = confirmedParam === null ? undefined : confirmedParam === 'true' ;
27+
28+ // 获取标签统计信息
29+ const tagStats = await getTagsWithDatasetCounts ( projectId , confirmed ) ;
30+ return NextResponse . json ( tagStats ) ;
31+ } catch ( error ) {
32+ console . error ( 'Failed to get tag statistics:' , String ( error ) ) ;
33+ return NextResponse . json (
34+ {
35+ error : error . message || 'Failed to get tag statistics'
36+ } ,
37+ { status : 500 }
38+ ) ;
39+ }
40+ }
41+
42+ /**
43+ * 获取标签统计信息
44+ */
45+ export async function POST ( request , { params } ) {
46+ try {
47+ const { projectId } = params ;
48+ const body = await request . json ( ) ;
49+
50+ // 验证项目ID
51+ if ( ! projectId ) {
52+ return NextResponse . json ( { error : 'Project ID cannot be empty' } , { status : 400 } ) ;
53+ }
54+
55+ let status = body . status ;
2656 let confirmed = undefined ;
2757 if ( status === 'confirmed' ) confirmed = true ;
2858 if ( status === 'unconfirmed' ) confirmed = false ;
2959
3060 // 检查是否是分批导出模式
31- const batchMode = searchParams . get ( ' batchMode' ) ;
32- const offset = parseInt ( searchParams . get ( ' offset' ) ) || 0 ;
33- const batchSize = parseInt ( searchParams . get ( ' batchSize' ) ) || 1000 ;
61+ const batchMode = body . batchMode ? 'true' : 'false' ;
62+ const offset = body . offset ?? 0 ;
63+ const batchSize = body . batchSize ?? 1000 ;
3464
3565 // 检查是否是平衡导出
36- const balanceMode = searchParams . get ( ' balanceMode' ) ;
37- const balanceConfig = searchParams . get ( ' balanceConfig' ) ;
66+ const balanceMode = body . balanceMode ? 'true' : 'false' ;
67+ const balanceConfig = body . balanceConfig ;
3868
3969 // 检查是否有选中的数据集 ID
40- const selectedIdsParam = searchParams . get ( 'selectedIds' ) ;
41- let selectedIds = null ;
42- if ( selectedIdsParam ) {
43- try {
44- selectedIds = JSON . parse ( selectedIdsParam ) ;
45- } catch ( e ) {
46- console . error ( 'Failed to parse selectedIds:' , e ) ;
47- }
48- }
70+ const selectedIds = Array . isArray ( body . selectedIds ) ? body . selectedIds : null ;
4971
5072 if ( batchMode === 'true' ) {
5173 // 分批导出模式
@@ -60,7 +82,7 @@ export async function GET(request, { params }) {
6082 } ) ;
6183 } else if ( balanceMode === 'true' && balanceConfig ) {
6284 // 平衡分批导出
63- const parsedConfig = JSON . parse ( balanceConfig ) ;
85+ const parsedConfig = typeof balanceConfig === 'string' ? JSON . parse ( balanceConfig ) : balanceConfig ;
6486 const result = await getBalancedDatasetsByTagsBatch ( projectId , parsedConfig , confirmed , offset , batchSize ) ;
6587 return NextResponse . json ( {
6688 data : result . data ,
@@ -78,14 +100,14 @@ export async function GET(request, { params }) {
78100 } ) ;
79101 }
80102 } else {
81- // 传统一次性导出模式(保持向后兄容 )
103+ // 传统一次性导出模式(保持向后兼容 )
82104 if ( selectedIds && selectedIds . length > 0 ) {
83105 // 按选中 ID 导出
84106 const datasets = await getDatasetsByIds ( projectId , selectedIds ) ;
85107 return NextResponse . json ( datasets ) ;
86108 } else if ( balanceMode === 'true' && balanceConfig ) {
87109 // 平衡导出模式
88- const parsedConfig = JSON . parse ( balanceConfig ) ;
110+ const parsedConfig = typeof balanceConfig === 'string' ? JSON . parse ( balanceConfig ) : balanceConfig ;
89111 const datasets = await getBalancedDatasetsByTags ( projectId , parsedConfig , confirmed ) ;
90112 return NextResponse . json ( datasets ) ;
91113 } else {
@@ -104,31 +126,3 @@ export async function GET(request, { params }) {
104126 ) ;
105127 }
106128}
107-
108- /**
109- * 获取标签统计信息
110- */
111- export async function POST ( request , { params } ) {
112- try {
113- const { projectId } = params ;
114- const body = await request . json ( ) ;
115- const { confirmed } = body ;
116-
117- // 验证项目ID
118- if ( ! projectId ) {
119- return NextResponse . json ( { error : 'Project ID cannot be empty' } , { status : 400 } ) ;
120- }
121-
122- // 获取标签统计信息
123- const tagStats = await getTagsWithDatasetCounts ( projectId , confirmed ) ;
124- return NextResponse . json ( tagStats ) ;
125- } catch ( error ) {
126- console . error ( 'Failed to get tag statistics:' , String ( error ) ) ;
127- return NextResponse . json (
128- {
129- error : error . message || 'Failed to get tag statistics'
130- } ,
131- { status : 500 }
132- ) ;
133- }
134- }
0 commit comments