feat(平台): 补齐服务端持久化和AI拆解契约
This commit is contained in:
@@ -10,6 +10,8 @@ import { useVersionPlanStore } from '@/stores/useVersionPlanStore';
|
||||
import { useDevTaskStore } from '@/stores/useDevTaskStore';
|
||||
import { useTestCaseStore } from '@/stores/useTestCaseStore';
|
||||
import { useBugStore } from '@/stores/useBugStore';
|
||||
import { useAuthStore } from '@/stores/useAuthStore';
|
||||
import { useMemberStore } from '@/stores/useMemberStore';
|
||||
import { getProjectDetail, VersionWithContext } from '@/lib/derive';
|
||||
import { Stage, Role, STAGES, ROLES, STAGE_INDEX, ROLE_LABEL } from '@/lib/stage';
|
||||
import { VersionStatus, VERSION_STATUS_LABEL, VERSION_STATUS_BG } from '@/lib/version-status';
|
||||
@@ -351,9 +353,25 @@ export default function ProjectDetailPage() {
|
||||
|
||||
const project = useMemo(() => getProjectDetail(overview, projectId), [overview, projectId]);
|
||||
|
||||
const user = useAuthStore((s) => s.user);
|
||||
const currentUserName = user?.name || '';
|
||||
const { roles } = useMemberStore();
|
||||
const isSuperAdmin = useMemo(() => {
|
||||
const r = roles.find((x) => x.id === user?.roleId);
|
||||
return !!r && r.permissions.includes('*');
|
||||
}, [roles, user?.roleId]);
|
||||
|
||||
const sortedVersions = useMemo(() => {
|
||||
if (!project) return [];
|
||||
let list = [...project.versions];
|
||||
// 只显示当前用户参与的版本(members为空时所有人可见;超管可见全部)
|
||||
if (!isSuperAdmin) {
|
||||
list = list.filter((v) => {
|
||||
const ms = v.members ?? [];
|
||||
if (ms.length === 0) return true;
|
||||
return ms.some((m) => m.name === currentUserName);
|
||||
});
|
||||
}
|
||||
if (statusFilter !== 'all') {
|
||||
if (statusFilter === 'planned') {
|
||||
list = list.filter((v) => v.status === 'planned');
|
||||
@@ -364,7 +382,7 @@ export default function ProjectDetailPage() {
|
||||
}
|
||||
}
|
||||
return list.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
||||
}, [project, statusFilter]);
|
||||
}, [project, statusFilter, isSuperAdmin, currentUserName]);
|
||||
|
||||
// Compute actual overall progress per version
|
||||
const versionProgressMap = useMemo(() => {
|
||||
|
||||
Reference in New Issue
Block a user