UI/UX Screen Specification

λŒ€μ‹œλ³΄λ“œ 및 κ΄€λ¦¬μž ν™”λ©΄ κΈ°λŠ₯ λͺ…μ„Έμ„œ (UI/UX Specification)

1. 곡톡 UI κ°€μ΄λ“œλΌμΈ 및 λ””μžμΈ μ‹œμŠ€ν…œ

κ΄€λ¦¬μž νŒ¨λ„μ˜ λͺ¨λ“  ν™”λ©΄ λ ˆμ΄μ•„μ›ƒ, μ»΄ν¬λ„ŒνŠΈ λͺ…μ„Έ, μ‚¬μš©μž μ•‘μ…˜ 및 데이터 μ •ν•©μ„± 검증 κ·œμΉ™μ€ λ³Έ μ‹œμŠ€ν…œμ˜ λ””μžμΈ κ·œμΉ™μ„ μ€€μˆ˜ν•©λ‹ˆλ‹€.

β‘  색상 토큰 (Color Tokens)

Primary Forest Green
#1e5149
Dark Teal Sidebar
#142e29
Light Green Gray Border
#d2dcdb
Soft Accent Green BG
#e9eeed

β‘‘ μ„œμ²΄ (Typography)

β‘’ 곡톡 κ·Έλ¦¬λ“œ & ν…Œμ΄λΈ” (Table Grid Rules)

β‘£ 곡톡 λͺ¨λ‹¬ νŒμ—… (Modal Overlay Rules)

2. λ ˆμ΄μ•„μ›ƒ ꡬ쑰 섀계 (App Frame Layout)

LNB, 상단 헀더, 그리고 메인 μ½˜ν…μΈ  νƒ­ μ˜μ—­μ˜ μˆ˜ν‰/수직 λΆ„ν•  μ•„ν‚€ν…μ²˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

+-------------------------------------------------------------------------+ | LNB (쒌츑 μ‚¬μ΄λ“œλ°”) | Main Header (상단 헀더) | | πŸ“ PM_ver4 Admin | [Header Title] [Admin Profile] | |-------------------------+-----------------------------------------------| | - Dashboards | Main Content (메인 μ½˜ν…μΈ  νƒ­ μ˜μ—­) | | πŸ“Š μ’…ν•© μš©λŸ‰/μ ‘μ†μž | | | - ν”„λ‘œμ νŠΈ 관리 | +-----------------------------------------+ | | πŸ—οΈ ν”„λ‘œμ νŠΈ 관리 | | μΉ΄λ“œ 1 (ν•„ν„° / ν…Œμ΄λΈ” 리슀트) | | | πŸ“’ μ‹€μ‹œκ°„ λ°°λ„ˆ 곡지 | +-----------------------------------------+ | | - μ‚¬μš©μž 및 κΆŒν•œ | | μΉ΄λ“œ 2 (상세정보 λ·° / νŒμ—… 연동 리슀트) | | | πŸ‘₯ μ‚¬μš©μž 관리 | +-----------------------------------------+ | | - μ‹œμŠ€ν…œ 감사 및 ν™˜κ²½ | | | πŸ”Ž 감사 둜그 쑰회 | | | βš™οΈ μžλ™ μ‚­μ œ μ„€μ • | | | πŸ”‘ 곡톡 μ½”λ“œ 관리 | | +-------------------------------------------------------------------------+

3. 화면별 상세 UI 및 κΈ°λŠ₯ 섀계

πŸ“Š ν™”λ©΄ 1: μ’…ν•© μš©λŸ‰ 및 μ ‘μ†μž ν˜„ν™© (Dashboard)

상단 3μ—΄ KPI μš”μ•½ μΉ΄λ“œμ™€ ν•˜λ‹¨ μŠ€ν† λ¦¬μ§€ ν”„λ‘œκ·Έλ ˆμŠ€λ°” 및 μ‹€μ‹œκ°„ μ†ŒμΌ“ μ ‘μ†μž ν…Œμ΄λΈ” κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  μ£Όμš” UI μ»΄ν¬λ„ŒνŠΈ

  • μŠ€ν† λ¦¬μ§€ KPI μΉ΄λ“œ: 전체 ν˜„μž₯의 총 ν•œλ„ μš©λŸ‰ λŒ€λΉ„ λˆ„μ  μ‚¬μš© μš©λŸ‰ μ‹€μ‹œκ°„ ν•©μ‚° ν‘œμ‹œ (예: πŸ’Ύ 9.70 GB / 20 GB).
  • μ ‘μ†μž KPI μΉ΄λ“œ: ν˜„μž¬ μ†ŒμΌ“ μ„œλ²„ μ—°κ²° μ„Έμ…˜ 수 λ…ΈμΆœ.
  • μ••μΆ•μž‘μ—… KPI μΉ΄λ“œ: Redis(BullMQ) λ‚΄ λŒ€κΈ°μ€‘μΈ μ••μΆ• 건수.
  • ν˜„μž₯별 μŠ€ν† λ¦¬μ§€ μ‚¬μš© ν˜„ν™©: 각 ν”„λ‘œμ νŠΈ ID/λͺ…μΉ­, κ²Œμ΄μ§€λ°” 및 μ‚¬μš©λŸ‰ 정보(GB / λ°±λΆ„μœ¨% / νŒŒμΌμˆ˜λŸ‰κ°œ) λ™μ‹œ λ Œλ”λ§.

β‘‘ μ‹€μ‹œκ°„ 접속 ν˜„ν™© ν…Œμ΄λΈ” 사양

NO μ‚¬μš©μž ID 접속 IP ν˜„μž¬ 쑰회 경둜 μž‘μ—…
1 admin_test 127.0.0.1 /PM_TEST_01/archive κ°•μ œν‡΄μž₯

πŸ—οΈ ν™”λ©΄ 2: ν”„λ‘œμ νŠΈ 관리 (Project Management)

쒌츑 ν”„λ‘œμ νŠΈ λͺ©λ‘ κ·Έλ¦¬λ“œμ™€ 우츑 ν”„λ‘œμ νŠΈλ³„ μ°Έμ—¬μž 및 λ°°μ • ν†΅μ œ κ·Έλ¦¬λ“œ κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  ν”„λ‘œμ νŠΈ λͺ©λ‘ ν…Œμ΄λΈ” 사양 (쒌츑 μΉ΄λ“œ)

좜λ ₯ 컬럼: NO | ν”„λ‘œμ νŠΈ ID | ν˜„μž₯λͺ… | μΉ΄ν…Œκ³ λ¦¬ | μš©λŸ‰ μ œν•œ(GB) | μƒνƒœ | 관리(μˆ˜μ •/μ‚­μ œ)

  • ν–‰ 클릭 μ‹œ, 우츑의 'μ°Έμ—¬ κΆŒν•œ μ‚¬μš©μž λͺ©λ‘'이 ν•΄λ‹Ή ν”„λ‘œμ νŠΈ μ •λ³΄λ‘œ μžλ™ λ¦¬λ°”μΈλ”©λ©λ‹ˆλ‹€.
  • μ‚­μ œ μ œν•œ: κ΄€λ ¨ ν…Œμ΄λΈ”(tb_data, tb_official_doc_file, tb_banner_notice λ“±)에 ν˜„μž₯ ID μ‚¬μš© 이λ ₯이 있으면 μ‚­μ œ λΆˆκ°€λŠ₯ν•˜λ©° κ²½κ³  λ©”μ‹œμ§€κ°€ λ°œμƒν•©λ‹ˆλ‹€.
  • μ‹ κ·œ ν”„λ‘œμ νŠΈ 등둝 및 μˆ˜μ • λͺ¨λ‹¬ (projectModalOverlay): ν”„λ‘œμ νŠΈ ID(μˆ˜μ • μ‹œ Readonly), ν”„λ‘œμ νŠΈλͺ…, 단좕λͺ…, μΉ΄ν…Œκ³ λ¦¬ Select, μŠ€ν† λ¦¬μ§€ μ œν•œ(GB), μƒνƒœλ₯Ό νŽΈμ§‘ν•©λ‹ˆλ‹€.

β‘‘ μ°Έμ—¬ κΆŒν•œ μ‚¬μš©μž λͺ©λ‘ (우츑 μΉ΄λ“œ - 병합 μ˜μ—­)

좜λ ₯ 컬럼: NO | μ‚¬μš©μž ID | 이름 | λΆ€μ„œ/직급 | κΆŒν•œ λ“±κΈ‰ | μž‘μ—…(λ°°μ •μ œμ™Έ)

  • κΆŒν•œ λ“±κΈ‰ λ³€κ²½: 인라인 μ…€λ ‰ν„°(Admin, Sub-Master, Worker, Viewer)둜 κΆŒν•œ 레벨 μ¦‰μ‹œ μ—…λ°μ΄νŠΈ.
  • μ‚¬μš©μž λ°°μ • μΆ”κ°€ νŒμ—… λͺ¨λ‹¬ (assignModalOverlay): ν˜„μž¬ ν˜„μž₯에 λ―Έλ°°μ •λœ μ‚¬μš©μžλ“€μ„ μ²΄ν¬λ°•μŠ€λ‘œ 닀쀑 μ„ νƒν•˜μ—¬ 일괄 μΆ”κ°€ν•©λ‹ˆλ‹€. λ˜ν•œ λͺ©λ‘ 선택식을 μ§€μ›ν•˜κΈ° μœ„ν•΄ 우츑 ν•˜λ‹¨ λ°°μ • λŒ€κΈ° λͺ©λ‘μ—μ„œλ„ 'μ¦‰μ‹œ λ°°μ •' 단좕 λ²„νŠΌμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ“’ ν™”λ©΄ 3: μ‹€μ‹œκ°„ λ°°λ„ˆ 곡지 (Banner Notice)

상단 λ°°λ„ˆ 등둝 폼 μΉ΄λ“œ 및 ν•˜λ‹¨ 이λ ₯ 검색 쑰건 필터와 이λ ₯ λͺ©λ‘ κ·Έλ¦¬λ“œ κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  λ°°λ„ˆ 곡지 등둝 폼

  • μž…λ ₯ ν•„λ“œ: λŒ€μƒ ν”„λ‘œμ νŠΈ 선택(νŠΉμ • ν˜„μž₯ λ˜λŠ” 전체 ν˜„μž₯ 'all' λ§€ν•‘), 등둝일(μž„μ˜ νŽΈμ§‘ 지원), μ‹œμž‘μΌ, μ’…λ£ŒμΌ, 곡지 μžλ§‰ ν…μŠ€νŠΈ.
  • μ†‘μΆœ 등둝 제좜 μ‹œ, 였늘 μΌμžμ™€ λΉ„κ΅ν•˜μ—¬ μ¦‰μ‹œ 이λ ₯에 μΆ”κ°€λ˜κ³  μƒνƒœ λ°°μ§€κ°€ μ‹€μ‹œκ°„ λΆ€μ—¬λ©λ‹ˆλ‹€.

β‘‘ 이λ ₯ λͺ©λ‘ ν•„ν„° 및 이λ ₯ ν…Œμ΄λΈ”

  • 검색 ν•„ν„°: μ†‘μΆœ μƒνƒœ(전체, μ†‘μΆœμ€‘, μ˜ˆμ•½λ¨, 만료) 및 등둝일(from ~ to) λ‚ μ§œ λ²”μœ„ μ§€μ • 검색.
  • ν…Œμ΄λΈ” λͺ…μ„Έ: NO | 등둝일 | λŒ€μƒ ν”„λ‘œμ νŠΈ | 곡지 λ‚΄μš© | μ‹œμž‘μΌ | μ’…λ£ŒμΌ | μ†‘μΆœ μƒνƒœ | μž‘μ—…
  • μ†‘μΆœ 쀑지 ν†΅μ œ: 아직 기간이 μœ νš¨ν•œ ν–‰(μ†‘μΆœμ€‘, μ˜ˆμ•½λ¨)μ—λ§Œ [μ†‘μΆœ 쀑지] λ²„νŠΌμ΄ λ…ΈμΆœ 및 ν™œμ„±ν™”λ˜λ©°, 이미 만료된 이λ ₯은 [쀑지 μ™„λ£Œ] λΉ„ν™œμ„± ν…μŠ€νŠΈλ‘œ λŒ€μ²΄ν•˜μ—¬ 이쀑 μ œμ–΄λ₯Ό μ°¨λ‹¨ν•©λ‹ˆλ‹€.

πŸ‘₯ ν™”λ©΄ 4: μ‚¬μš©μž 관리 (User Management)

쒌츑 μ‚¬μš©μž λ§ˆμŠ€ν„° 리슀트 및 우츑 μ„ νƒλœ μ‚¬μš©μžμ˜ μ°Έμ—¬ κΆŒν•œ ν”„λ‘œμ νŠΈ λ¦¬μŠ€νŠΈμ—… κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  μ‚¬μš©μž 계정 λͺ©λ‘ (쒌츑 μΉ΄λ“œ)

좜λ ₯ 컬럼: NO | 아이디 | 이름 | μ†Œμ†/직급 | κ·Έλ£Ή | μƒνƒœ | 관리(μˆ˜μ •/μ‚­μ œ)

  • ν–‰ 클릭 μ‹œ, ν•΄λ‹Ή μ‚¬μš©μžκ°€ μ°Έμ—¬ν•˜κ³  μžˆλŠ” ν”„λ‘œμ νŠΈ λ¦¬μŠ€νŠΈκ°€ 우츑 μΉ΄λ“œμ— μ¦‰μ‹œ λ°”μΈλ”©λ©λ‹ˆλ‹€.
  • μ‚­μ œ μ œν•œ: κΆŒν•œ ν…Œμ΄λΈ”(tb_permission)에 ν˜„μž₯ λ°°μ •/μ°Έμ—¬ κΆŒν•œ 정보가 λ“±λ‘λ˜μ–΄ 있으면 μ‚­μ œκ°€ λΆˆκ°€λŠ₯ν•˜λ©° κ²½κ³  λ©”μ‹œμ§€κ°€ λ°œμƒν•©λ‹ˆλ‹€.
  • μ‚¬μš©μž 등둝 및 μˆ˜μ • λͺ¨λ‹¬ (userModalOverlay): 아이디(μˆ˜μ • μ‹œ Readonly), νŒ¨μŠ€μ›Œλ“œ, 이름, νšŒμ‚¬λͺ…, λΆ€μ„œ, 직급, κΆŒν•œ κ·Έλ£Ή μ§€μ • select, 재직 μƒνƒœ(재직/ν‡΄μ§μž κΈˆ) μ§€μ •.

β‘‘ κΆŒν•œλΆ€μ—¬ ν”„λ‘œμ νŠΈ λͺ©λ‘ (우츑 μΉ΄λ“œ)

좜λ ₯ 컬럼: NO | ν”„λ‘œμ νŠΈ ID | ν”„λ‘œμ νŠΈλͺ… | λΆ€μ—¬ κΆŒν•œ λ“±κΈ‰

πŸ”Ž ν™”λ©΄ 5: 감사 둜그 쑰회 (Audit Logs)

파일 μ‘°μž‘ μ€‘μš” 이벀트(μ‚­μ œ, 이동, λ‹€μš΄λ‘œλ“œ) λͺ©λ‘ 및 검색 쑰회 ν™”λ©΄μž…λ‹ˆλ‹€.

β‘  감사 둜그 λͺ©λ‘ 사양

좜λ ₯ 컬럼: NO | μΌμ‹œ | ν”„λ‘œμ νŠΈ | μ‚¬μš©μž ID | 접속 IP | μ‘°μž‘ μ•‘μ…˜ | μ‘°μž‘ λŒ€μƒ 경둜(μ½”λ“œλ°•μŠ€ μŠ€νƒ€μΌ)

  • 필터링 ν•­λͺ©: μ‚¬μš©μž ID 검색 μž…λ ₯λž€, μ‘°μž‘ μ•‘μ…˜ Dropdown, 검색 κΈ°λŠ₯.

βš™οΈ ν™”λ©΄ 6: μžλ™ 보관 및 파일 μ‚­μ œ μ •μ±… μ„€μ • (Delete Policy)

μ‹œμŠ€ν…œ κΈ€λ‘œλ²Œ 일괄 μ •μ±… μ„€μ • μ˜μ—­, μ‹€μ‹œκ°„ μ˜ˆμ • μ‹œλ‚˜λ¦¬μ˜€ μš”μ•½, 그리고 배치 처리 이λ ₯ κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  μ‹œμŠ€ν…œ 곡톡 μžλ™ μ‚­μ œ μ •μ±… μ„€μ • 폼 [κΈ€λ‘œλ²Œ μ •μ±… 곡톡화]

  • μž…λ ₯ ν•„λ“œ: μ •μ±… ν™œμ„±ν™” μ—¬λΆ€(Toggle/Select), μ΅œμ†Œ μœ μ§€ 파일 개수 κΈ°μ€€(숫자 μž…λ ₯), μžλ™ μ‚­μ œ μ œν•œ κΈ°ν•œ(일) (숫자 μž…λ ₯).
  • κΈ€λ‘œλ²Œ 톡합: 기쑴의 ν”„λ‘œμ νŠΈ κ°œλ³„ Dropdown은 μ™„μ „νžˆ λ°°μ œν•˜κ³ , 전체 ν˜„μž₯에 λ™μΌν•˜κ²Œ 일괄 λ°˜μ˜ν•©λ‹ˆλ‹€.

β‘‘ 보쑴 μ •μ±… μ‹€μ‹œκ°„ μš”μ•½ (Dynamic Summary)

  • 폼의 μž…λ ₯값을 λ³€κ²½ν•˜λŠ” μ¦‰μ‹œ μš”μ•½ μ˜μ—­ ν…μŠ€νŠΈκ°€ μ‹œλ‚˜λ¦¬μ˜€ 문ꡬ둜 동적 μ‘°ν•©λ˜μ–΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
  • 예: "ν˜„μž¬ 전체 곡톡 섀정에 따라, 각 ν˜„μž₯의 보관 파일 μˆ˜κ°€ 100개 미만이고 30일이 μ§€λ‚˜λ©΄ μžλ™ μ‚­μ œ 배치 μŠ€μΌ€μ€„λŸ¬κ°€ μž‘λ™ν•©λ‹ˆλ‹€."

β‘’ μžλ™ μ‚­μ œ 처리 이λ ₯ ν…Œμ΄λΈ” 사양

좜λ ₯ 컬럼: NO | μžλ™ 처리 일자 | ν”„λ‘œμ νŠΈ ID | μ‚­μ œ 처리 폴더 경둜 | 적용 κΈ°μ€€ | 처리 κ²°κ³Ό(성곡 λ°°μ§€)

  • μ •μ±… κ°’ μ €μž₯ μ™„λ£Œ μ‹œ 이λ ₯ 둜그의 λŒ€μƒ ν”„λ‘œμ νŠΈ ID μžλ¦¬μ—λŠ” 'SYSTEM'이 κΈ°μž…λ©λ‹ˆλ‹€.

πŸ”‘ ν™”λ©΄ 7: 곡톡 μ½”λ“œ 관리 (Common Code Management)

λŒ€λΆ„λ₯˜ λ§ˆμŠ€ν„° 및 μ„ΈλΆ€ μ½”λ“œ λ¦¬μŠ€νŠΈκ°€ λ°°μΉ˜λ˜λŠ” μƒν•˜ 2단 수직 μ •λ ¬ λ ˆμ΄μ•„μ›ƒ κ΅¬μ‘°μž…λ‹ˆλ‹€.

β‘  λŒ€λΆ„λ₯˜ μ½”λ“œ λ§ˆμŠ€ν„° (상단 μΉ΄λ“œ)

좜λ ₯ 컬럼: NO | λŒ€λΆ„λ₯˜ μ½”λ“œ | λŒ€λΆ„λ₯˜ μ½”λ“œλͺ… | μ‚¬μš© | 관리(μˆ˜μ •/μ‚­μ œ)

  • 행을 선택(click)ν•˜λ©΄ ν•΄λ‹Ή 행이 ν•˜μ΄λΌμ΄νŠΈ(selected)되며, ν•˜λ‹¨μ˜ μ„ΈλΆ€ μ½”λ“œ κ·Έλ¦¬λ“œκ°€ λ™μ μœΌλ‘œ μƒˆλ‘œκ³ μΉ¨λ©λ‹ˆλ‹€.
  • λŒ€λΆ„λ₯˜ 등둝 및 μˆ˜μ • λͺ¨λ‹¬ (codeMasterModalOverlay): λŒ€λΆ„λ₯˜ μ½”λ“œ, λͺ…μΉ­, μ‚¬μš©μ—¬λΆ€, λΉ„κ³  μ„€λͺ… μž…λ ₯.

β‘‘ μ„ΈλΆ€ μ†ŒλΆ„λ₯˜ μ½”λ“œ λͺ©λ‘ (ν•˜λ‹¨ μΉ΄λ“œ)

좜λ ₯ 컬럼: NO | μ†ŒλΆ„λ₯˜ μ½”λ“œ | μ‘°ν•© μ½”λ“œ (base_code) | μ½”λ“œ λͺ…μΉ­ | μ •λ ¬ μˆœμ„œ | μ‚¬μš© | 관리(μˆ˜μ •/μ‚­μ œ)

  • μœ νš¨μ„± λ°©μ–΄ 차단: 상단 λŒ€λΆ„λ₯˜ ν…Œμ΄λΈ”μ—μ„œ 행을 ν΄λ¦­ν•˜μ—¬ μ„ νƒν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œλŠ” ν•˜λ‹¨μ˜ [βž• μ„ΈλΆ€μ½”λ“œ 등둝] λ²„νŠΌμ΄ κ°•μ œ λΉ„ν™œμ„±ν™”(disabled)되며, νŒμ—… μ ‘κ·Ό μ‹œ μ•ˆλ‚΄ νŒμ—… 및 κ²½κ³  ν…μŠ€νŠΈ("μƒλ‹¨μ—μ„œ λŒ€λΆ„λ₯˜ μ½”λ“œλ₯Ό 선택해 μ£Όμ„Έμš”.")λ₯Ό λ…ΈμΆœν•©λ‹ˆλ‹€.
  • μ‘°ν•© μ½”λ“œ(base_code): μ†ŒλΆ„λ₯˜ 생성 μ™„λ£Œ 제좜 μ‹œ, λŒ€λΆ„λ₯˜μ½”λ“œ_μ†ŒλΆ„λ₯˜μ½”λ“œ ν˜•νƒœλ‘œ μžλ™ κ²°ν•©λ˜μ–΄ μ €μž₯λ©λ‹ˆλ‹€.
  • μ‚­μ œ μ œν•œ (RESTRICT): λ§ˆμŠ€ν„° λŒ€λΆ„λ₯˜ μ½”λ“œλ₯Ό μ‚­μ œν•  경우, ν•˜μœ„ μ„ΈλΆ€ μ½”λ“œ(code_detail)κ°€ μ‘΄μž¬ν•˜λ©΄ λŒ€λΆ„λ₯˜ μ‚­μ œκ°€ μ°¨λ‹¨λ˜κ³  κ²½κ³  λ©”μ‹œμ§€λ₯Ό λ…ΈμΆœν•©λ‹ˆλ‹€. (μ„ΈλΆ€ μ½”λ“œκ°€ λ¨Όμ € μ‚­μ œλ˜μ–΄ λΉ„μ–΄μžˆμ„ λ•Œλ§Œ λŒ€λΆ„λ₯˜ μ‚­μ œ κ°€λŠ₯)