fix(ai): 自动追加AI任务类型
This commit is contained in:
@@ -8,7 +8,7 @@ import { useDevTaskStore } from '@/stores/useDevTaskStore';
|
||||
import { useTestCaseStore } from '@/stores/useTestCaseStore';
|
||||
import { useTaskCategoryStore } from '@/stores/useTaskCategoryStore';
|
||||
import { useAuthStore } from '@/stores/useAuthStore';
|
||||
import { findCategoryByCode, resolveCategoryIdFromCode } from '@/lib/task-category';
|
||||
import { findCategoryByCode, type CategoryGroup } from '@/lib/task-category';
|
||||
import { clampDevAiEstimateHours, clampTestCaseAiEstimateHours } from '@/lib/ai-estimation-policy';
|
||||
import { resolveDecomposeDraftRequirementFields } from '@/lib/ai-decompose-adoption';
|
||||
import { formatReportRequirementLabel } from '@/lib/ai-decompose-report';
|
||||
@@ -45,7 +45,7 @@ export function DecomposeReportModal({
|
||||
}: Props) {
|
||||
const { createTask } = useDevTaskStore();
|
||||
const { createTestCase } = useTestCaseStore();
|
||||
const { categories } = useTaskCategoryStore();
|
||||
const { categories, ensureCategory } = useTaskCategoryStore();
|
||||
const user = useAuthStore((s) => s.user);
|
||||
|
||||
const { result: data, meta } = result;
|
||||
@@ -90,6 +90,18 @@ export function DecomposeReportModal({
|
||||
setSelectedTcIdx(n);
|
||||
};
|
||||
|
||||
const resolveDraftTaskTypeName = (
|
||||
draft: AgentDevTaskDraft | AgentTestCaseDraft,
|
||||
fallbackGroup: Extract<CategoryGroup, 'development' | 'testing'>,
|
||||
) => {
|
||||
const explicitName = draft.taskTypeName?.trim();
|
||||
if (explicitName) return explicitName;
|
||||
const mappedName = findCategoryByCode(categories, draft.categoryCode)?.name;
|
||||
if (mappedName) return mappedName;
|
||||
if (draft.categoryCode) return draft.categoryCode;
|
||||
return fallbackGroup === 'testing' ? '功能测试' : '开发任务';
|
||||
};
|
||||
|
||||
const handleAdopt = () => {
|
||||
if (submitting) return;
|
||||
setSubmitting(true);
|
||||
@@ -111,7 +123,8 @@ export function DecomposeReportModal({
|
||||
const draft = data.devTaskDrafts[i];
|
||||
const refs = normalizeRefs(draft.references);
|
||||
const requirementFields = resolveDecomposeDraftRequirementFields({ ...draft, references: refs }, requirements);
|
||||
const categoryId = resolveCategoryIdFromCode(categories, draft.categoryCode, 'development');
|
||||
const taskTypeName = resolveDraftTaskTypeName(draft, 'development');
|
||||
const categoryId = ensureCategory(taskTypeName, 'development').id;
|
||||
const aiEstimateHours = clampDevAiEstimateHours(draft.categoryCode, draft.aiEstimateHours);
|
||||
const recommendedAssignee = resolveRecommendedAssignee(draft, version.members ?? []);
|
||||
|
||||
@@ -152,7 +165,8 @@ export function DecomposeReportModal({
|
||||
const draft = data.testCaseDrafts[i];
|
||||
const refs = normalizeRefs(draft.references);
|
||||
const requirementFields = resolveDecomposeDraftRequirementFields({ ...draft, references: refs }, requirements);
|
||||
const categoryId = resolveCategoryIdFromCode(categories, draft.categoryCode, 'testing');
|
||||
const taskTypeName = resolveDraftTaskTypeName(draft, 'testing');
|
||||
const categoryId = ensureCategory(taskTypeName, 'testing').id;
|
||||
const aiEstimateHours = clampTestCaseAiEstimateHours(draft.categoryCode, draft.aiEstimateHours);
|
||||
const recommendedAssignee = resolveRecommendedAssignee(draft, version.members ?? []);
|
||||
|
||||
@@ -337,7 +351,7 @@ export function DecomposeReportModal({
|
||||
<div className="flex items-center gap-2 flex-wrap">
|
||||
<span className="text-[13px] font-medium text-[var(--ink)]">{d.title}</span>
|
||||
<span className="text-[10px] px-1.5 py-0.5 rounded bg-[var(--bg-subtle)] text-[var(--ink-soft)]">
|
||||
{findCategoryByCode(categories, d.categoryCode)?.name ?? d.categoryCode}
|
||||
{resolveDraftTaskTypeName(d, 'development')}
|
||||
</span>
|
||||
<span className="text-[10px] px-1.5 py-0.5 rounded bg-zinc-100 text-zinc-600">
|
||||
{d.priority}
|
||||
@@ -408,7 +422,7 @@ export function DecomposeReportModal({
|
||||
<div className="flex items-center gap-2 flex-wrap">
|
||||
<span className="text-[13px] font-medium text-[var(--ink)]">{d.title}</span>
|
||||
<span className="text-[10px] px-1.5 py-0.5 rounded bg-[var(--bg-subtle)] text-[var(--ink-soft)]">
|
||||
{findCategoryByCode(categories, d.categoryCode)?.name ?? d.categoryCode}
|
||||
{resolveDraftTaskTypeName(d, 'testing')}
|
||||
</span>
|
||||
<span className="text-[10px] px-1.5 py-0.5 rounded bg-zinc-100 text-zinc-600">
|
||||
{d.priority}
|
||||
|
||||
Reference in New Issue
Block a user