refactor: 'Repo' 접두 타입·헬퍼 식별자를 'Project' 로 일괄 rename

저장소 기능 제거 후 남은 레거시 'Repo' 명칭을 프로젝트 의미에 맞게 정리(동작 변화 없음):
- 타입: ApiRepoMember→ApiProjectMember, ApiRepoTask→ApiProjectTask,
  ApiRepoTaskListResult→ApiProjectTaskListResult, RepoTask(View)→ProjectTask(View),
  RepoMember(Response)→ProjectMember(Response), RepoActivityItem/Day→ProjectActivityItem/Day,
  RepoTaskResponse/ListResult→ProjectTaskResponse/ListResult (백엔드 task.service 포함)
- 헬퍼: toRepoTaskView→toProjectTaskView, toRepoActivityItem→toProjectActivityItem,
  loadRepo→loadProject, filteredRepos→filteredProjects, removeRepo→removeProject
- 백엔드 spec mock repoRepo→projectRepo, 잔존 RepoDetailPage/저장소(Repo) 주석 정리

검증: 백엔드 build/lint 0·8 tests, 프론트 type-check/lint/build 0 (식별자 충돌 없음).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-21 01:52:23 +09:00
parent ef1757181d
commit be0a1bc9d1
22 changed files with 112 additions and 112 deletions
+7 -7
View File
@@ -1,6 +1,6 @@
import { useApi } from './useApi'
import type {
ApiRepoMember,
ApiProjectMember,
InviteMemberPayload,
UpdateMemberPayload,
} from '@/types/member'
@@ -16,21 +16,21 @@ export function useMember() {
projectId: string,
page = 1,
size = 20,
): Promise<Paginated<ApiRepoMember>> {
): Promise<Paginated<ApiProjectMember>> {
return (await api.get(`/projects/${projectId}/members`, {
params: { page, size },
})) as unknown as Paginated<ApiRepoMember>
})) as unknown as Paginated<ApiProjectMember>
}
// 멤버 초대 (admin) — 가입된 사용자만 이메일로 초대
async function invite(
projectId: string,
payload: InviteMemberPayload,
): Promise<ApiRepoMember> {
): Promise<ApiProjectMember> {
return (await api.post(
`/projects/${projectId}/members`,
payload,
)) as unknown as ApiRepoMember
)) as unknown as ApiProjectMember
}
// 멤버 역할/직무 변경 (admin, owner 제외)
@@ -38,11 +38,11 @@ export function useMember() {
projectId: string,
userId: string,
payload: UpdateMemberPayload,
): Promise<ApiRepoMember> {
): Promise<ApiProjectMember> {
return (await api.patch(
`/projects/${projectId}/members/${userId}`,
payload,
)) as unknown as ApiRepoMember
)) as unknown as ApiProjectMember
}
// 멤버 제거 (admin, owner 제외)
+1 -1
View File
@@ -2,7 +2,7 @@ import { useApi } from './useApi'
import type { ApiMyTaskRow } from '@/types/my-task'
import type { Paginated } from '@/types/pagination'
// 내 업무 API Composable — 저장소 횡단 집계(담당/지시), 오프셋 페이지네이션
// 내 업무 API Composable — 프로젝트 횡단 집계(담당/지시), 오프셋 페이지네이션
export function useMyTask() {
const api = useApi()
+3 -3
View File
@@ -3,7 +3,7 @@ import type {
ApiAttachment,
ApiComment,
ApiCommentReply,
ApiRepoTaskListResult,
ApiProjectTaskListResult,
ApiTaskDetail,
CreateTaskPayload,
TaskListQuery,
@@ -23,10 +23,10 @@ export function useTask() {
query: TaskListQuery = {},
page = 1,
size = DEFAULT_PAGE_SIZE,
): Promise<ApiRepoTaskListResult> {
): Promise<ApiProjectTaskListResult> {
return (await api.get(`/projects/${projectId}/tasks`, {
params: { ...query, page, size },
})) as unknown as ApiRepoTaskListResult
})) as unknown as ApiProjectTaskListResult
}
// 업무 단건 상세 (taskId = 프로젝트 내 순번)