From 7cd6676ef9e6631760c80558f2241de1d0b26ca9 Mon Sep 17 00:00:00 2001 From: ttipo Date: Sat, 20 Jun 2026 19:37:51 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=A0=ED=8A=B8=EC=97=94?= =?UTF-8?q?=EB=93=9C=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=9A=B0?= =?UTF-8?q?=EC=84=A0=20=EA=B5=AC=EC=A1=B0=20=EC=9E=AC=EA=B5=AC=EC=84=B1=20?= =?UTF-8?q?(Phase=202-a)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 데이터 계층 신설: types/project·useProject·project.store (프로젝트 CRUD·페이지네이션) - useTask/useMember/useActivity 경로를 /projects/:projectId/... 로 전환 - task·my-task·activity 타입/스토어 repoId/repoName → projectId/projectName - 알림 store 라우팅·문구 프로젝트화, 활동 타입 repo.linked/unlinked·project.* 반영 - 라우팅 /projects/... 전면 교체, / → /projects 리다이렉트 - 페이지 rename Repo*→Project* (List/Create/Detail/Settings/Members/Activity) - ProjectCreatePage: Gitea 저장소 폼 → 단순 프로젝트 생성 폼으로 재작성 - RepoHeader→ProjectHeader, RepoTabs→ProjectTabs, AppShell 네비 프로젝트화 - 죽은 파일 삭제: repo.store·useRepo·GiteaRepoBar Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/project-refactor-plan.md | 4 +- frontend/src/components/GiteaRepoBar.vue | 191 ---- .../{RepoHeader.vue => ProjectHeader.vue} | 39 +- .../{RepoTabs.vue => ProjectTabs.vue} | 10 +- frontend/src/composables/useActivity.ts | 6 +- frontend/src/composables/useAi.ts | 2 +- frontend/src/composables/useMember.ts | 20 +- frontend/src/composables/useProject.ts | 39 + frontend/src/composables/useRepo.ts | 50 -- frontend/src/composables/useTask.ts | 56 +- frontend/src/layouts/AppShell.vue | 12 +- frontend/src/mock/relay.mock.ts | 36 +- frontend/src/pages/relay/LoginPage.vue | 2 +- frontend/src/pages/relay/MyTasksPage.vue | 4 +- ...tivityPage.vue => ProjectActivityPage.vue} | 30 +- .../src/pages/relay/ProjectCreatePage.vue | 334 +++++++ ...poDetailPage.vue => ProjectDetailPage.vue} | 46 +- .../{RepoListPage.vue => ProjectListPage.vue} | 112 +-- ...MembersPage.vue => ProjectMembersPage.vue} | 36 +- ...ttingsPage.vue => ProjectSettingsPage.vue} | 114 +-- frontend/src/pages/relay/RepoCreatePage.vue | 846 ------------------ frontend/src/pages/relay/TaskCreatePage.vue | 36 +- frontend/src/pages/relay/TaskDetailPage.vue | 34 +- frontend/src/router/index.ts | 60 +- frontend/src/stores/activity.store.ts | 18 +- frontend/src/stores/member.store.ts | 16 +- frontend/src/stores/my-task.store.ts | 8 +- frontend/src/stores/notification.store.ts | 23 +- frontend/src/stores/project.store.ts | 131 +++ frontend/src/stores/repo.store.ts | 152 ---- frontend/src/stores/task.store.ts | 72 +- frontend/src/types/activity.ts | 8 +- frontend/src/types/my-task.ts | 6 +- frontend/src/types/project.ts | 36 + frontend/src/types/task.ts | 6 +- 35 files changed, 886 insertions(+), 1709 deletions(-) delete mode 100644 frontend/src/components/GiteaRepoBar.vue rename frontend/src/components/{RepoHeader.vue => ProjectHeader.vue} (81%) rename frontend/src/components/{RepoTabs.vue => ProjectTabs.vue} (91%) create mode 100644 frontend/src/composables/useProject.ts delete mode 100644 frontend/src/composables/useRepo.ts rename frontend/src/pages/relay/{RepoActivityPage.vue => ProjectActivityPage.vue} (93%) create mode 100644 frontend/src/pages/relay/ProjectCreatePage.vue rename frontend/src/pages/relay/{RepoDetailPage.vue => ProjectDetailPage.vue} (93%) rename frontend/src/pages/relay/{RepoListPage.vue => ProjectListPage.vue} (77%) rename frontend/src/pages/relay/{RepoMembersPage.vue => ProjectMembersPage.vue} (97%) rename frontend/src/pages/relay/{RepoSettingsPage.vue => ProjectSettingsPage.vue} (80%) delete mode 100644 frontend/src/pages/relay/RepoCreatePage.vue create mode 100644 frontend/src/stores/project.store.ts delete mode 100644 frontend/src/stores/repo.store.ts create mode 100644 frontend/src/types/project.ts diff --git a/docs/project-refactor-plan.md b/docs/project-refactor-plan.md index 675d5c9..e87d2f1 100644 --- a/docs/project-refactor-plan.md +++ b/docs/project-refactor-plan.md @@ -65,4 +65,6 @@ Project (이름/설명/공개범위) ← 작업의 기본 단위( - Phase 1-a: Project/ProjectMember 모듈 기반(엔티티·서비스·컨트롤러·"미분류" 부팅) ✅ (커밋 2f66cdd) - Phase 1-b: 백엔드 이전 ✅ — Activity(project FK·listForProject)·Repo(project FK, RepoMember 폐지)·Task(project 종속, seq 프로젝트 내 순번, 권한=ProjectMember) 전환. RepoService 프로젝트 종속(`/projects/:projectId/repos`, 멤버·업무카운트·캐시 제거). Task/Activity 컨트롤러 `/projects/...`. RepoSync→"미분류". AiService 프로젝트 컨텍스트. member.service/controller·repo-member·repo-cache 삭제. 검증 build/lint 0·14 tests. - **Phase 1 잔여(소소, 후속)**: ProjectResponse 카운트(repoCount/doneCount/totalCount 현재 0 stub) 집계 배선, ProjectMemberService 활동·알림 배선(TODO), TaskService.assigneeCounts→ProjectMemberService taskCount 연결. -- 다음 = Phase 2 프론트. +- Phase 2-a: 프론트 프로젝트 중심 재구성 ✅ — `types/project`·`useProject`·`project.store` 신설. `useTask`/`useMember`/`useActivity` 를 `/projects/:projectId/...` 로, task/my-task/activity 타입·스토어를 projectId/projectName 으로 전환. 알림 store 라우팅/문구 프로젝트화. 라우팅 `/projects/...` 전면 교체. 페이지 rename(Repo*→Project*): List/Create(간단 폼)/Detail/Settings/Members/Activity. `RepoHeader`→`ProjectHeader`, `RepoTabs`→`ProjectTabs`. AppShell 네비 "프로젝트". 죽은 파일(repo.store/useRepo/GiteaRepoBar) 삭제. 검증 type-check/lint/build 0. +- **Phase 2 잔여(후속)**: **저장소 연동 UI(Phase 2b)** — 프로젝트 내 "연동 저장소" 섹션 + Gitea 저장소 링크/생성 폼(백엔드 `/projects/:id/repos` 준비됨). 일부 화면 잔여 "저장소" 문구 정리. +- 다음 = Phase 1 카운트 배선 + Phase 2b 저장소 연동 UI. diff --git a/frontend/src/components/GiteaRepoBar.vue b/frontend/src/components/GiteaRepoBar.vue deleted file mode 100644 index cfddf8d..0000000 --- a/frontend/src/components/GiteaRepoBar.vue +++ /dev/null @@ -1,191 +0,0 @@ - - - - - diff --git a/frontend/src/components/RepoHeader.vue b/frontend/src/components/ProjectHeader.vue similarity index 81% rename from frontend/src/components/RepoHeader.vue rename to frontend/src/components/ProjectHeader.vue index 1578df5..2132736 100644 --- a/frontend/src/components/RepoHeader.vue +++ b/frontend/src/components/ProjectHeader.vue @@ -1,16 +1,16 @@ + +