fix(version): 限制任务需求候选为版本已关联需求
This commit is contained in:
@@ -10,13 +10,16 @@ import { useAuthStore } from '@/stores/useAuthStore';
|
||||
import { FilterSelect } from '@/components/FilterSelect';
|
||||
import { WorkDateTimePicker } from '@/components/WorkDateTimePicker';
|
||||
import type { Priority } from '@/lib/derive';
|
||||
import type { Requirement } from '@/lib/requirement';
|
||||
import { getCategoriesByGroup, getDefaultCategoryByGroup } from '@/lib/task-category';
|
||||
import { getVersionLinkedRequirementCandidates } from '@/lib/requirement-selector';
|
||||
import { clampTestCaseEstimateHours, getDefaultTestCaseEstimateHours } from '@/lib/ai-estimation-policy';
|
||||
import { isoToLocal, localToISO } from '@/lib/work-hours';
|
||||
|
||||
interface Props {
|
||||
versionId: string;
|
||||
requirementIds: string[];
|
||||
versionRequirements?: Requirement[];
|
||||
roundNo?: number;
|
||||
onClose: () => void;
|
||||
}
|
||||
@@ -33,16 +36,17 @@ function defaultPlannedEndLocal(): string {
|
||||
return isoToLocal(d.toISOString());
|
||||
}
|
||||
|
||||
export function TestCaseCreateModal({ versionId, requirementIds, roundNo, onClose }: Props) {
|
||||
export function TestCaseCreateModal({ versionId, requirementIds, versionRequirements, roundNo, onClose }: Props) {
|
||||
const { createTestCase } = useTestCaseStore();
|
||||
const { requirements } = useRequirementStore();
|
||||
const { members } = useMemberStore();
|
||||
const { categories } = useTaskCategoryStore();
|
||||
const user = useAuthStore((s) => s.user);
|
||||
|
||||
const requirementSource = versionRequirements ?? requirements;
|
||||
const versionReqs = useMemo(
|
||||
() => requirements.filter((r) => requirementIds.includes(r.id)),
|
||||
[requirements, requirementIds],
|
||||
() => getVersionLinkedRequirementCandidates(requirementSource, requirementIds),
|
||||
[requirementSource, requirementIds],
|
||||
);
|
||||
const testCategories = useMemo(() => getCategoriesByGroup(categories, 'testing'), [categories]);
|
||||
|
||||
@@ -69,6 +73,12 @@ export function TestCaseCreateModal({ versionId, requirementIds, roundNo, onClos
|
||||
setEstimateHours(getDefaultTestCaseEstimateHours(next.code));
|
||||
}, [categoryId, testCategories]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!requirementId) return;
|
||||
if (versionReqs.some((r) => r.id === requirementId)) return;
|
||||
setRequirementId('');
|
||||
}, [versionReqs, requirementId]);
|
||||
|
||||
const handleCategoryChange = (nextCategoryId: string) => {
|
||||
setCategoryId(nextCategoryId);
|
||||
const category = categories.find((c) => c.id === nextCategoryId) ?? testCategories.find((c) => c.id === nextCategoryId);
|
||||
|
||||
Reference in New Issue
Block a user