feat(agent-calc): 에이전트 전용 정산 메뉴/라우트 추가 및 기본 메뉴 경로 교체

This commit is contained in:
Yu Sung
2026-04-13 18:18:54 +09:00
parent 8ce660d45e
commit 6c8c5fb660
8 changed files with 137 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
# 정산 메뉴 에이전트 전용 분리 계획
## 배경/목표
- 기존 `/calculate/*` 경로는 크리에이터 전용 라우트/페이지다.
- 빈 메뉴일 때 기본으로 추가한 정산 메뉴 5종은 에이전트 전용으로 분리되어야 한다.
- 에이전트 전용 라우트를 `/agent/calculate/*` 네임스페이스로 제공하고, 페이지는 추후 구현을 위해 플레이스홀더로 생성한다.
## 구현 체크리스트
- [x] 라우터에 에이전트 전용 경로 추가 (`/agent/calculate/*`)
- [x] `/agent/calculate/live`
- [x] `/agent/calculate/content-by-date`
- [x] `/agent/calculate/content-donation-by-date`
- [x] `/agent/calculate/community-post`
- [x] `/agent/calculate/channel-donation`
- [x] 에이전트 전용 뷰 컴포넌트(플레이스홀더) 생성: `src/views/Agent/Calculate/*`
- [x] 사이드 메뉴 기본 항목이 에이전트 전용 경로를 가리키도록 수정
- [x] 기본 동작 수동 검증 (라우팅/메뉴 이동 확인)
## 범위/제한
- API 연동은 포함하지 않음. 화면은 "추후 구현" 플레이스홀더로 둔다.
- 기존 크리에이터 전용 라우트/화면은 변경하지 않는다.
## 검증 기록
### 1차 구현
- 무엇을: 에이전트 전용 라우트 5종 추가 및 사이드 메뉴 경로 교체, 플레이스홀더 화면 생성
- 왜: 크리에이터 전용 경로와 구분하여 접근/권한/콘텍스트 분리를 명확히 하기 위함
- 어떻게:
- 라우팅 수동 점검: 각 메뉴 클릭 시 `/agent/calculate/*` 로 이동되는지 확인
- 결과: 성공(플레이스홀더 화면 타이틀 확인)

View File

@@ -97,8 +97,14 @@ export default {
this.items = res.data.data
} else {
// 빈 메뉴일 경우 기본 단독 메뉴를 제공한다.
// 요구사항: 정산 관련 기본 메뉴를 추가한다.
this.items = [
{ title: '소속 크리에이터', route: '/agent/creators' }
{ title: '소속 크리에이터', route: '/agent/creators' },
{ title: '크리에이터별 라이브 정산', route: '/agent/calculate/live' },
{ title: '크리에이터별 콘텐츠 정산', route: '/agent/calculate/content-by-date' },
{ title: '크리에이터별 콘텐츠 후원 정산', route: '/agent/calculate/content-donation-by-date' },
{ title: '크리에이터별 커뮤니티 정산', route: '/agent/calculate/community-post' },
{ title: '크리에이터별 채널 후원 정산', route: '/agent/calculate/channel-donation' },
]
}
} else {

View File

@@ -25,6 +25,32 @@ const routes = [
name: 'AgentCreators',
component: () => import(/* webpackChunkName: "agent" */ '../views/Agent/Creators.vue')
},
// Agent-only calculate routes (placeholders)
{
path: '/agent/calculate/live',
name: 'AgentCalculateLive',
component: () => import(/* webpackChunkName: "agent-calc" */ '../views/Agent/Calculate/AgentCalculateLive.vue')
},
{
path: '/agent/calculate/content-by-date',
name: 'AgentCalculateContent',
component: () => import(/* webpackChunkName: "agent-calc" */ '../views/Agent/Calculate/AgentCalculateContent.vue')
},
{
path: '/agent/calculate/content-donation-by-date',
name: 'AgentCalculateContentDonation',
component: () => import(/* webpackChunkName: "agent-calc" */ '../views/Agent/Calculate/AgentCalculateContentDonation.vue')
},
{
path: '/agent/calculate/community-post',
name: 'AgentCalculateCommunityPost',
component: () => import(/* webpackChunkName: "agent-calc" */ '../views/Agent/Calculate/AgentCalculateCommunityPost.vue')
},
{
path: '/agent/calculate/channel-donation',
name: 'AgentCalculateChannelDonation',
component: () => import(/* webpackChunkName: "agent-calc" */ '../views/Agent/Calculate/AgentCalculateChannelDonation.vue')
},
{
path: '/content/category/list',
name: 'ContentCategoryList',

View File

@@ -0,0 +1,15 @@
<template>
<v-container>
<h2>에이전트 전용 - 크리에이터별 채널 후원 정산</h2>
<p> 페이지는 추후 구현 예정입니다.</p>
</v-container>
</template>
<script>
export default {
name: 'AgentCalculateChannelDonation'
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,15 @@
<template>
<v-container>
<h2>에이전트 전용 - 크리에이터별 커뮤니티 정산</h2>
<p> 페이지는 추후 구현 예정입니다.</p>
</v-container>
</template>
<script>
export default {
name: 'AgentCalculateCommunityPost'
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,15 @@
<template>
<v-container>
<h2>에이전트 전용 - 크리에이터별 콘텐츠 정산</h2>
<p> 페이지는 추후 구현 예정입니다.</p>
</v-container>
</template>
<script>
export default {
name: 'AgentCalculateContent'
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,15 @@
<template>
<v-container>
<h2>에이전트 전용 - 크리에이터별 콘텐츠 후원 정산</h2>
<p> 페이지는 추후 구현 예정입니다.</p>
</v-container>
</template>
<script>
export default {
name: 'AgentCalculateContentDonation'
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,15 @@
<template>
<v-container>
<h2>에이전트 전용 - 크리에이터별 라이브 정산</h2>
<p> 페이지는 추후 구현 예정입니다.</p>
</v-container>
</template>
<script>
export default {
name: 'AgentCalculateLive'
}
</script>
<style scoped>
</style>