Skip to content
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

dimiplan/Dimiplan-admin-panel-frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

233 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dimiplan κ΄€λ¦¬μž νŒ¨λ„

Dimiplan λ°±μ—”λ“œ μ‹œμŠ€ν…œμ„ μœ„ν•œ 포괄적인 Angular 기반 κ΄€λ¦¬μž μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. Material Design 3 ν…Œλ§ˆλ₯Ό μ μš©ν•œ ν˜„λŒ€μ μΈ κ΄€λ¦¬μž νŒ¨λ„λ‘œ, μ‹œμŠ€ν…œ λͺ¨λ‹ˆν„°λ§, λ°μ΄ν„°λ² μ΄μŠ€ 관리, 둜그 뢄석, API λ¬Έμ„œν™” λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

🏠 λŒ€μ‹œλ³΄λ“œ

  • μ‹€μ‹œκ°„ μ‹œμŠ€ν…œ λͺ¨λ‹ˆν„°λ§: μ„œλ²„ κ°€λ™μ‹œκ°„, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰, CPU μ‚¬μš©λ₯ , ν”Œλž«νΌ 정보, Node.js 버전 λ“± μ‹€μ‹œκ°„ ν‘œμ‹œ
  • AI μ‚¬μš©λŸ‰ 좔적: AI API ν¬λ ˆλ”§ 및 μ‚¬μš©λŸ‰ 톡계, μ‚¬μš©λŸ‰ μΆ”μ„Έ μ‹œκ°ν™”
  • μ‚¬μš©μž 톡계: 총 μ‚¬μš©μž 수, ν™œμ„± μ‚¬μš©μž(30일), 졜근 μ‹ κ·œ μ‚¬μš©μž 등둝 ν˜„ν™©
  • λΉ λ₯Έ μž‘μ—…: 둜그, λ°μ΄ν„°λ² μ΄μŠ€, API λ¬Έμ„œλ‘œμ˜ νŽΈλ¦¬ν•œ 탐색
  • μ‹œκ°ν™”: λ©”λͺ¨λ¦¬ 및 CPU μ‚¬μš©λ₯  μ§„ν–‰ λ§‰λŒ€, ν™˜κ²½λ³„ μƒνƒœ λ°°μ§€

πŸ—„οΈ λ°μ΄ν„°λ² μ΄μŠ€ 관리

  • ν…Œμ΄λΈ” λΈŒλΌμš°μ €: ν–‰ κ°œμˆ˜μ™€ ν•¨κ»˜ λͺ¨λ“  λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ” λͺ©λ‘ ν‘œμ‹œ
  • μŠ€ν‚€λ§ˆ λ·°μ–΄: ν…Œμ΄λΈ” ꡬ쑰(컬럼λͺ…, 데이터 νƒ€μž…, ν‚€ 정보, Nullable μ—¬λΆ€) 상세 ν‘œμ‹œ
  • λŒ€ν™”ν˜• 데이터 탐색: νŽ˜μ΄μ§€λ„€μ΄μ…˜(25, 50, 100, 200개 λ ˆμ½”λ“œ)으둜 ν…Œμ΄λΈ” 데이터 탐색
  • 데이터 내보내기: ν…Œμ΄λΈ” 데이터λ₯Ό CSV ν˜•μ‹μœΌλ‘œ λ‹€μš΄λ‘œλ“œ
  • 컬럼 정보 μ‹œκ°ν™”: 데이터 νƒ€μž…λ³„ 색상 ꡬ뢄, ν‚€ νƒ€μž…λ³„ μ•„μ΄μ½˜ ν‘œμ‹œ(PRI, UNI, MUL)
  • tooltips: κΈ΄ λ°μ΄ν„°λŠ” 툴팁으둜 전체 λ‚΄μš© 확인 κ°€λŠ₯

πŸ“‹ 둜그 관리

  • 둜그 파일 λΈŒλΌμš°μ €: 파일 크기와 μˆ˜μ • λ‚ μ§œμ™€ ν•¨κ»˜ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  둜그 파일 λͺ©λ‘
  • μ‹€μ‹œκ°„ 둜그 λ·°μ–΄: μ„ νƒν•œ 둜그 파일의 λ‚΄μš©μ„ μ‹€μ‹œκ°„μœΌλ‘œ ν‘œμ‹œ
  • 둜그 레벨 필터링: 둜그 λ ˆλ²¨λ³„ 필터링(error, warn, info, verbose)
  • ꡬ문 κ°•μ‘°: 둜그 λ ˆλ²¨λ³„ 색상 ꡬ뢄, νƒ€μž„μŠ€νƒ¬ν”„ νŒŒμ‹±
  • λ‹€μš΄λ‘œλ“œ: μ™„μ „ν•œ 둜그 파일 둜컬 λ‹€μš΄λ‘œλ“œ
  • μ‚¬μš©μž μΉœν™”μ  ν‘œμ‹œ: 파일 크기λ₯Ό B, KB, MB, GB λ‹¨μœ„λ‘œ μžλ™ ν¬λ§·νŒ…

πŸ“š API λ¬Έμ„œ

  • μžλ™ JSDoc λ¬Έμ„œν™”: JSDoc 주석 기반 API λ¬Έμ„œ μžλ™ 생성 및 νŒŒμ‹±
  • λŒ€ν™”ν˜• λ¬Έμ„œ 탐색: 경둜, λ©”μ„œλ“œ, μ„€λͺ…μœΌλ‘œ API μ—”λ“œν¬μΈνŠΈ 검색
  • νŒŒμΌλ³„ 필터링: API μ—”λ“œν¬μΈνŠΈλ₯Ό νŒŒμΌλ³„λ‘œ κ·Έλ£Ήν™”ν•˜μ—¬ 탐색
  • λ³΅μž‘ν•œ λ°˜ν™˜κ°’ 처리: μ€‘μ²©λœ 객체 및 λ°°μ—΄ ꡬ쑰λ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ ν‘œμ‹œ
  • cURL 예제: 각 μ—”λ“œν¬μΈνŠΈμ— λŒ€ν•œ μ¦‰μ‹œ μ‚¬μš© κ°€λŠ₯ν•œ cURL λͺ…λ Ήμ–΄ 생성 및 ν΄λ¦½λ³΄λ“œ 볡사
  • λ¬Έμ„œ 내보내기: API λ¬Έμ„œλ₯Ό Markdown ν˜•μ‹μœΌλ‘œ 내보내기
  • μ‹€μ‹œκ°„ μž¬μƒμ„±: μš”μ²­ μ‹œ JSDoc λ¬Έμ„œ μž¬μƒμ„±
  • HTTP λ©”μ„œλ“œλ³„ 색상 ꡬ뢄: GET, POST, PUT, DELETE λ©”μ„œλ“œλ³„ μ‹œκ°μ  ꡬ뢄

기술 μŠ€νƒ

핡심 ν”„λ ˆμž„μ›Œν¬

  • Angular 20.0.3 (μ΅œμ‹  버전, Standalone μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©)
  • Angular Material 20.0.3 (Material Design 3 ν…Œλ§ˆ)
  • RxJS 7.8.2 (λ°˜μ‘ν˜• ν”„λ‘œκ·Έλž˜λ°)

UI/μŠ€νƒ€μΌλ§

  • Tailwind CSS 3.4.17 (μœ ν‹Έλ¦¬ν‹° μš°μ„  μŠ€νƒ€μΌλ§)
  • Material Design 3 색상 μ‹œμŠ€ν…œ 및 νƒ€μ΄ν¬κ·Έλž˜ν”Ό
  • PostCSS & Autoprefixer (CSS 처리)
  • μ™„μ „ λ°˜μ‘ν˜• λ””μžμΈ: λͺ¨λ°”일 μΉœν™”μ  λ ˆμ΄μ•„μ›ƒ

개발 도ꡬ 및 μ–Έμ–΄

  • TypeScript 5.8.3 (κ°•νƒ€μž… μ‹œμŠ€ν…œ)
  • Jasmine & Karma (λ‹¨μœ„ ν…ŒμŠ€νŠΈ)
  • Angular CLI 20.0.2 (개발 도ꡬ)

μ•„ν‚€ν…μ²˜ νŒ¨ν„΄

  • λͺ¨λ˜ Angular νŒ¨ν„΄: Standalone μ»΄ν¬λ„ŒνŠΈ, ν•¨μˆ˜ν˜• 인터셉터
  • μ˜μ‘΄μ„± μ£Όμž…: μ„œλΉ„μŠ€ 기반 μ•„ν‚€ν…μ²˜
  • νƒ€μž… μ•ˆμ „μ„±: λͺ¨λ“  API 응닡에 λŒ€ν•œ TypeScript μΈν„°νŽ˜μ΄μŠ€

μ„€μΉ˜ 및 μ‹€ν–‰

사전 μš”κ΅¬μ‚¬ν•­

  • Node.js 18+
  • npm λ˜λŠ” yarn
  • Angular CLI 20+

μ„€μΉ˜

npm install

개발 μ„œλ²„ μ‹€ν–‰

npm start
# λ˜λŠ”
ng serve

개발 μ„œλ²„κ°€ μ‹€ν–‰λ˜λ©΄ λΈŒλΌμš°μ €μ—μ„œ http://localhost:4200/둜 μ ‘μ†ν•˜μ„Έμš”.

λΉŒλ“œ

npm run build
# λ˜λŠ”
ng build

λΉŒλ“œ 결과물은 dist/ 디렉토리에 μƒμ„±λ©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ

npm test
# λ˜λŠ”
ng test

인증 및 λ³΄μ•ˆ

Google OAuth 인증

  • Google 계정 연동: Google OAuthλ₯Ό ν†΅ν•œ μ•ˆμ „ν•œ κ΄€λ¦¬μž 인증
  • κ°•μ œ 둜그인: 401 μ—λŸ¬ λ°œμƒ μ‹œ μžλ™μœΌλ‘œ 둜그인 λͺ¨λ‹¬ ν‘œμ‹œ
  • μ„Έμ…˜ μœ μ§€: μΏ ν‚€ 기반 μ„Έμ…˜ 관리 (withCredentials: true)
  • μžλ™ λ¦¬λ‹€μ΄λ ‰νŠΈ: 인증 ν›„ κ΄€λ¦¬μž νŒ¨λ„λ‘œ μžλ™ 볡귀

λ³΄μ•ˆ κΈ°λŠ₯

  • HTTP 인터셉터: λͺ¨λ“  API μš”μ²­μ— μžλ™ ν¬λ¦¬λ΄μ…œ 첨뢀
  • 401 μ—λŸ¬ μžλ™ 처리: 인증 μ‹€νŒ¨ μ‹œ μžλ™ 둜그인 ν”„λ‘œμ„ΈμŠ€
  • CORS 지원: 도메인 κ°„ μΏ ν‚€ μ„Έμ…˜ μƒνƒœ μœ μ§€
  • νƒ€μž… μ•ˆμ „μ„±: TypeScriptλ₯Ό ν†΅ν•œ 컴파일 νƒ€μž„ λ³΄μ•ˆ

μ„€μ •

λ°±μ—”λ“œ API μ—°κ²°

기본적으둜 https://api-dev.dimiplan.com에 μ—°κ²°λ©λ‹ˆλ‹€. λ‹€λ₯Έ API μ„œλ²„λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ src/app/services/admin.service.tsμ—μ„œ API_BASE_URL을 μˆ˜μ •ν•˜μ„Έμš”.

ν…Œλ§ˆ μ„€μ •

  • 닀크/라이트 λͺ¨λ“œ: μ‚¬μš©μžκ°€ ν† κΈ€ λ²„νŠΌμœΌλ‘œ ν…Œλ§ˆ μ „ν™˜ κ°€λŠ₯
  • ν…Œλ§ˆ 지속성: localStorageλ₯Ό ν†΅ν•œ ν…Œλ§ˆ μ„€μ • μ €μž₯ 및 볡원
  • Material Design 3: μ΅œμ‹  Material Design κ°€μ΄λ“œλΌμΈ 및 색상 토큰 적용
  • μ™„μ „ λ°˜μ‘ν˜•: λͺ¨λ°”일과 λ°μŠ€ν¬ν†±μ—μ„œ μ΅œμ ν™”λœ λ ˆμ΄μ•„μ›ƒ

ν”„λ‘œμ νŠΈ ꡬ쑰

src/app/
β”œβ”€β”€ components/              # μ£Όμš” μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ dashboard/          # λŒ€μ‹œλ³΄λ“œ (μ‹œμŠ€ν…œ μƒνƒœ, μ‚¬μš©μž 톡계, AI μ‚¬μš©λŸ‰)
β”‚   β”œβ”€β”€ database/           # λ°μ΄ν„°λ² μ΄μŠ€ 관리 (ν…Œμ΄λΈ” 탐색, 데이터 λ·°μ–΄)
β”‚   β”œβ”€β”€ logs/              # 둜그 관리 (파일 λΈŒλΌμš°μ €, 둜그 λ·°μ–΄)
β”‚   β”œβ”€β”€ api-docs/          # API λ¬Έμ„œ (μžλ™ 생성, 검색, 내보내기)
β”‚   └── login-modal/       # 둜그인 λͺ¨λ‹¬ (Google OAuth)
β”œβ”€β”€ services/              # μ„œλΉ„μŠ€ λ ˆμ΄μ–΄
β”‚   β”œβ”€β”€ admin.service.ts   # κ΄€λ¦¬μž API 톡합 μ„œλΉ„μŠ€
β”‚   └── auth-modal.service.ts  # 인증 λͺ¨λ‹¬ 관리 μ„œλΉ„μŠ€
β”œβ”€β”€ interceptors/          # HTTP 인터셉터
β”‚   └── auth.interceptor.ts    # 인증 및 CORS 처리
β”œβ”€β”€ styles/               # μ „μ—­ μŠ€νƒ€μΌ
β”‚   β”œβ”€β”€ material-tokens.scss   # Material Design 3 토큰
β”‚   └── material-you-theme.scss # Material You ν…Œλ§ˆ
β”œβ”€β”€ app.config.ts         # μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ •
β”œβ”€β”€ app.routes.ts         # λΌμš°νŒ… μ„€μ •
β”œβ”€β”€ app.ts               # 메인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ»΄ν¬λ„ŒνŠΈ
└── app.html             # μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν…œν”Œλ¦Ώ

API μ—”λ“œν¬μΈνŠΈ

κ΄€λ¦¬μž νŒ¨λ„μ—μ„œ μ‚¬μš©ν•˜λŠ” μ£Όμš” API μ—”λ“œν¬μΈνŠΈ:

  • GET /system-status - μ‹œμŠ€ν…œ μƒνƒœ 정보
  • GET /stats/users - μ‚¬μš©μž 톡계
  • GET /ai-usage - AI μ‚¬μš©λŸ‰ 톡계
  • GET /logs - 둜그 파일 λͺ©λ‘
  • GET /logs/{filename} - νŠΉμ • 둜그 파일 λ‚΄μš©
  • GET /database/tables - λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ” λͺ©λ‘
  • GET /database/tables/{tableName} - ν…Œμ΄λΈ” 데이터 및 μŠ€ν‚€λ§ˆ
  • GET /docs - API λ¬Έμ„œ
  • POST /docs/regenerate - API λ¬Έμ„œ μž¬μƒμ„±

개발 νŠΉμ§•

λͺ¨λ˜ Angular νŒ¨ν„΄

  • Standalone μ»΄ν¬λ„ŒνŠΈ: @Component λ°μ½”λ ˆμ΄ν„°μ—μ„œ imports 직접 관리
  • ν•¨μˆ˜ν˜• 인터셉터: 클래슀 기반이 μ•„λ‹Œ ν•¨μˆ˜ν˜• HTTP 인터셉터 μ‚¬μš©
  • μ˜μ‘΄μ„± μ£Όμž…: inject() ν•¨μˆ˜λ₯Ό ν†΅ν•œ ν˜„λŒ€μ  DI νŒ¨ν„΄

μ‚¬μš©μž κ²½ν—˜ μ΅œμ ν™”

  • λ‘œλ”© μƒνƒœ: λͺ¨λ“  비동기 μž‘μ—…μ— λŒ€ν•œ λ‘œλ”© 인디케이터
  • μ—λŸ¬ 처리: μ‚¬μš©μž μΉœν™”μ  μ—λŸ¬ λ©”μ‹œμ§€ 및 μžλ™ 볡ꡬ
  • λ°˜μ‘ν˜• ν”Όλ“œλ°±: 성곡/μ‹€νŒ¨μ— λŒ€ν•œ 즉각적인 μ‹œκ°μ  ν”Όλ“œλ°±
  • ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜: 접근성을 μœ„ν•œ ν‚€λ³΄λ“œ 지원

μ„±λŠ₯ μ΅œμ ν™”

  • μ§€μ—° λ‘œλ”©: λΌμš°νŠΈλ³„ μ»΄ν¬λ„ŒνŠΈ λΆ„ν• 
  • λ©”λͺ¨λ¦¬ 관리: μ»΄ν¬λ„ŒνŠΈ 생λͺ…주기에 λ”°λ₯Έ ꡬ독 ν•΄μ œ
  • 효율적인 λ Œλ”λ§: Angular의 OnPush λ³€κ²½ 감지 μ „λž΅ ν™œμš©

이 κ΄€λ¦¬μž νŒ¨λ„μ€ Dimiplan λ°±μ—”λ“œ μ‹œμŠ€ν…œμ˜ 포괄적인 λͺ¨λ‹ˆν„°λ§, 디버깅, 관리λ₯Ό μœ„ν•œ μ›μŠ€ν†± μ†”λ£¨μ…˜μœΌλ‘œ μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Contributors