Skip to content

Latest commit

Β 

History

History
109 lines (76 loc) Β· 4.02 KB

File metadata and controls

109 lines (76 loc) Β· 4.02 KB

issue-sorter

Jira μŠ€ν”„λ¦°νŠΈ λ‚΄ μ΄μŠˆλ“€μ„ μ•ŒνŒŒλ²³ 순으둜 μžλ™ μ •λ ¬ν•΄μ£ΌλŠ” Atlassian Forge μ•±μž…λ‹ˆλ‹€.

μ•± μ‹€ν–‰ ν™”λ©΄

μ†Œκ°œ

issue-sorterλŠ” Jiraμ—μ„œ ν”Œλž˜λ‹ 포컀 μ„Έμ…˜ μ „ 슀크럼 λ§ˆμŠ€ν„°κ°€ μˆ˜λ™μœΌλ‘œ Epic 및 νƒœκ·Έ 머릿말을 κΈ°μ€€μœΌλ‘œ μ΄μŠˆλ“€μ„ μ •λ ¬ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ²„νŠΌ 클릭 ν•œ 번으둜 μ„ νƒν•œ μŠ€ν”„λ¦°νŠΈ λ‚΄μ˜ λͺ¨λ“  이슈λ₯Ό μ•ŒνŒŒλ²³μˆœμœΌλ‘œ μ •λ ¬ν•΄μ£Όμ–΄ 업무 νš¨μœ¨μ„±μ„ λ†’μ΄λŠ” 데 도움을 μ€λ‹ˆλ‹€.

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

  • μŠ€ν”„λ¦°νŠΈ μ•‘μ…˜μ„ ν†΅ν•œ κ°„νŽΈν•œ μ ‘κ·Ό
  • μ„ νƒν•œ μŠ€ν”„λ¦°νŠΈ λ‚΄ μ΄μŠˆλ“€μ˜ μ•ŒνŒŒλ²³ 순 μžλ™ μ •λ ¬
  • TypeScriptλ₯Ό ν™œμš©ν•œ μ•ˆμ •μ μΈ μ½”λ“œ ꡬ쑰

개발 κ°€μ΄λ“œ

이 ν”„λ‘œμ νŠΈλŠ” TypeScript둜 μž‘μ„±λœ Forge μ•±μœΌλ‘œ, Jira μŠ€ν”„λ¦°νŠΈ μ•‘μ…˜μ— ν†΅ν•©λ©λ‹ˆλ‹€. Forge에 λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…κ³Ό νŠœν† λ¦¬μ–Όμ€ developer.atlassian.com/platform/forge/λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

ν•„μˆ˜ μš”κ΅¬μ‚¬ν•­

Forge 섀정에 λŒ€ν•œ 지침은 Forge μ„€μ •ν•˜κΈ°λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

λΉ λ₯Έ μ‹œμž‘

  • src/frontend/ λ‚΄μ˜ νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ μ•± ν”„λ‘ νŠΈμ—”λ“œλ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.
  • src/resolvers/ λ‚΄μ˜ νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ μ•± λ°±μ—”λ“œμ™€ 리쑸버 ν•¨μˆ˜λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. 리쑸버 ν•¨μˆ˜μ— λŒ€ν•œ λ¬Έμ„œλŠ” Forge 리쑸버λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.
  • λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ 앱을 λΉŒλ“œν•˜κ³  λ°°ν¬ν•©λ‹ˆλ‹€:
forge deploy
  • λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ Atlassian μ‚¬μ΄νŠΈμ— 앱을 μ„€μΉ˜ν•©λ‹ˆλ‹€:
forge install
  • forge tunnel λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜μ—¬ λ‘œμ»¬μ—μ„œ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€:
forge tunnel

μ•± ꡬ쑰

issue-sorter/
β”œβ”€β”€ dist/                    # λΉŒλ“œ κ²°κ³Όλ¬Ό
β”œβ”€β”€ node_modules/            # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€
β”œβ”€β”€ src/                     # μ†ŒμŠ€ μ½”λ“œ
β”‚   β”œβ”€β”€ core/                # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚   β”‚   β”œβ”€β”€ data/            # 데이터 layer
β”‚   β”‚   β”‚   └── hooks/       # μ»€μŠ€ν…€ ν›…
β”‚   β”‚   β”‚       β”œβ”€β”€ hooks.ts
β”‚   β”‚   β”‚       β”œβ”€β”€ use_sort_fields.ts
β”‚   β”‚   β”‚       └── use_sprint_issues.ts
β”‚   β”‚   β”œβ”€β”€ repositories/    # repository
β”‚   β”‚   β”‚   β”œβ”€β”€ issue_repository_atlassian.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ repositories.ts
β”‚   β”‚   β”‚   └── sprint_repository_atlassian.ts
β”‚   β”‚   └── domain/models/   # domain layer
β”‚   β”‚       β”œβ”€β”€ issue_model.ts
β”‚   β”‚       β”œβ”€β”€ models.ts
β”‚   β”‚       └── option_model.ts
β”‚   β”œβ”€β”€ frontend/            # ν”„λ‘ νŠΈμ—”λ“œ μ½”λ“œ
β”‚   β”œβ”€β”€ presentation/pages/  # νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”‚   β”œβ”€β”€ MainPage.tsx
β”‚   β”‚   β”œβ”€β”€ pages.ts
β”‚   β”‚   └── index.tsx
β”‚   └── resolvers/           # λ°±μ—”λ“œ 리쑸버 ν•¨μˆ˜
β”‚       └── index.ts

μ½”λ“œ ꡬ쑰

ν”„λ‘œμ νŠΈλŠ” 클린 μ•„ν‚€ν…μ²˜λ₯Ό 기반으둜 λ‹€μŒκ³Ό 같은 μ£Όμš” 폴더 ꡬ쑰둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

1. 핡심 ꡬ쑰 (src/core)

  • domain/models: μ•±μ˜ 핡심 λΉ„μ¦ˆλ‹ˆμŠ€ 엔티티와 데이터 λͺ¨λΈ μ •μ˜
  • repositories: Jira API와 ν†΅μ‹ ν•˜λŠ” 데이터 μ•‘μ„ΈμŠ€ λ ˆμ΄μ–΄
  • data/hooks: React μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ»€μŠ€ν…€ ν›… λͺ¨μŒ

2. ν”„λ ˆμ  ν…Œμ΄μ…˜ λ ˆμ΄μ–΄ (src/presentation/pages)

  • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ μ»΄ν¬λ„ŒνŠΈμ™€ νŽ˜μ΄μ§€ ꡬ성
  • Forge λ””μžμΈ μ‹œμŠ€ν…œμ„ ν™œμš©ν•œ UI μš”μ†Œ

3. 리쑸버 (src/resolvers)

  • Forge λͺ¨λ“ˆμ— λ…ΈμΆœλ˜λŠ” λ°±μ—”λ“œ ν•¨μˆ˜ κ΅¬ν˜„
  • μŠ€ν”„λ¦°νŠΈ 이슈 μ •λ ¬ 둜직 처리

4. μ„€μ • 파일

  • manifest.yml: Forge μ•± ꡬ성, κΆŒν•œ, λͺ¨λ“ˆ μ •μ˜

기술 μŠ€νƒ

  • TypeScript
  • React
  • Atlassian Forge
  • Jira API