Compare commits

..

2 Commits

Author SHA1 Message Date
ttipo 8abcaed98e docs: 앱 레일에서 ERP 를 뺀 것을 디자인 README · vue3 스킬에 반영
CI / Backend (lint · type-check · test · e2e · build) (push) Successful in 12m27s
CI / Frontend (lint · type-check · test · build) (push) Successful in 14m18s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (push) Successful in 2m2s
CI / 에러 코드 SSOT 동기화 검사 (push) Successful in 13m7s
CI / Backend (lint · type-check · test · e2e · build) (pull_request) Successful in 13m56s
CI / Frontend (lint · type-check · test · build) (pull_request) Successful in 13m6s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (pull_request) Successful in 2m1s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 11m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 09:32:38 +09:00
ttipo bdd42a3cb2 feat(frontend): 앱 레일과 로그인 소개 글에서 ERP 를 뺀다
사용자 요청(2026-11-04)으로 레일의 "준비 중" ERP 칸과 로그인 브랜드 패널 소개 글의 ERP 를 뺐다.
레일 테스트는 실제 목록(메일 · 캘린더 · 파일 · 주소록 · 설정)도 그대로 본다 — 다시 넣을 때 함께 고치게.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 09:32:38 +09:00
5 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -81,7 +81,7 @@ description: Vue 3 프론트엔드(frontend/) 개발 규칙 — Composition API
> 두 포트 모두 `vite.config.ts` 가 **루트 `.env.{mode}` 에서 직접 읽는다** — 프론트 쪽에 포트를 중복 작성하지 않는다.
> **확장 시 따르는 규칙:**
> - **새 사내 모듈**(캘린더·파일·ERP 등): `app-modules.ts` 에 항목을 활성화하고, 라우트 + `AppShell` 안의 모듈 패널을 메일 모듈처럼 만든다. 셸을 새로 만들지 않는다.
> - **새 사내 모듈**(캘린더·파일 등): `app-modules.ts` 에 항목을 활성화하고, 라우트 + `AppShell` 안의 모듈 패널을 메일 모듈처럼 만든다. 셸을 새로 만들지 않는다.
> - **새 화면**: 구현 전에 디자인 캔버스로 먼저 확인받고, 확정본을 `docs/design/` 에 둔 뒤 그 기준으로 만든다. 뱃지(안 읽음 점·개수 알약·태그)는 쓰지 않는다.
> - **공통 컴포넌트**: `BaseButton` 패턴을 따라 `src/components/` 에 추가
+2 -1
View File
@@ -29,7 +29,8 @@
## 디자인 원칙 (사용자 확정)
- 안 읽음 점·개수 알약·코드 태그 같은 **뱃지를 쓰지 않는다** — 굵은 글자와 평범한 숫자로 구분한다.
- 왼쪽 **전역 앱 레일**(메일·캘린더·파일·ERP·주소록·설정)에 모듈을 계속 붙인다. 지금은 메일만 동작한다.
- 왼쪽 **전역 앱 레일**(메일·캘린더·파일·주소록·설정)에 모듈을 계속 붙인다. 지금은 메일 · 주소록 · 설정이 동작하고 캘린더 · 파일은 "준비 중"이다.
ERP 는 2026-11-04 사용자 요청으로 레일과 로그인 소개 글에서 뺐다 — 그 전에 그린 캔버스(`*.dc.html`)에는 남아 있다.
- 정보 밀도가 높은 데스크톱 화면 — 기본 13px. 목록에 본문 미리보기를 넣지 않는다.
- 분할 보기 행: 2줄(보낸 사람·시간 / 제목+첨부 클립), 약 50px
- 목록 보기 행: 1줄 표, 38px. 칸 = 별 32 · 보낸 사람 168 · 제목(나머지) · 날짜 84 · 크기 64 (px, 칸 사이 12).
@@ -13,11 +13,13 @@ describe('AppRail', () => {
return mount(AppRail, { props: { activeModule: 'mail' }, global: { plugins: [router] } })
}
it('모듈 목록 하나로 그린다 — 메일 · 캘린더 · 파일 · ERP · 주소록 · 설정', async () => {
it('모듈 목록 하나로 그린다 — 메일 · 캘린더 · 파일 · 주소록 · 설정', async () => {
const wrapper = await mountRail()
const labels = wrapper.findAll('.rail-item').map((item) => item.text().replace('(준비 중)', '').trim())
expect(labels).toEqual(APP_MODULES.map((module) => module.label))
// 실제 목록도 그대로 본다 — ERP 칸은 2026-11-04 사용자 요청으로 뺐다(다시 넣으면 이 목록도 함께 고친다)
expect(labels).toEqual(['메일', '캘린더', '파일', '주소록', '설정'])
})
it('메일 · 주소록(8단계) · 설정이 링크이고, 지금 모듈이 현재로 표시된다', async () => {
+1 -1
View File
@@ -376,7 +376,7 @@ void supportContactStore.ensureLoaded()
사내 업무를<br>한 계정으로
</p>
<p class="login__lead">
메일부터 시작해 캘린더, 파일 저장소, ERP까지 같은 계정으로 이어집니다.
메일부터 시작해 캘린더와 파일 저장소까지 같은 계정으로 이어집니다.
</p>
</div>
</section>
+1 -2
View File
@@ -7,7 +7,7 @@
import type { IconName } from '@/shared/constants/icons'
export type AppModuleId = 'mail' | 'calendar' | 'files' | 'erp' | 'contacts' | 'settings'
export type AppModuleId = 'mail' | 'calendar' | 'files' | 'contacts' | 'settings'
export interface AppModule {
id: AppModuleId
@@ -24,7 +24,6 @@ export const APP_MODULES: readonly AppModule[] = [
{ id: 'mail', label: '메일', icon: 'mail', routeName: 'mail', placement: 'main' },
{ id: 'calendar', label: '캘린더', icon: 'calendar', routeName: null, placement: 'main' },
{ id: 'files', label: '파일', icon: 'folder', routeName: null, placement: 'main' },
{ id: 'erp', label: 'ERP', icon: 'briefcase', routeName: null, placement: 'main' },
// 8단계 — 주소록 (첫 화면은 전체 연락처, constants/contacts.ts 의 CONTACTS_ROUTES.all)
{ id: 'contacts', label: '주소록', icon: 'users', routeName: 'contacts', placement: 'main' },
{ id: 'settings', label: '설정', icon: 'settings', routeName: 'settings', placement: 'end' },