Skip to content

Latest commit

ย 

History

History
193 lines (121 loc) ยท 5.04 KB

File metadata and controls

193 lines (121 loc) ยท 5.04 KB

Contributing to SafeView

SafeView๋Š” ์นด๋ฉ”๋ผ ์ ‘๊ทผ ์ œ์–ด์™€ AI ๊ธฐ๋ฐ˜ ๋ชจ์ž์ดํฌ ๊ธฐ์ˆ ์„ ๊ฒฐํ•ฉํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” SafeView์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ, ๊ทœ์น™, ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜, ์ฝ”๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

1. ๊ธฐ์—ฌ ๋ฐฉ์‹ ๊ฐœ์š”

SafeView๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ ์˜ˆ์‹œ
๊ธฐ๋Šฅ ์ถ”๊ฐ€ (Feature) ์ƒˆ๋กœ์šด ๊ถŒํ•œ ๋ ˆ๋ฒจ, ๋ชจ์ž์ดํฌ ํ•„ํ„ฐ๋ง ์˜ต์…˜, AI ์ถ”๋ก  ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๋ฒ„๊ทธ ์ˆ˜์ • (Bug Fix) ๊ถŒํ•œ ๊ฒ€์ฆ ์˜ค๋ฅ˜, ํ† ํฐ ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌ ๋ฌธ์ œ, UI ๋น„์ •์ƒ ํ‘œ์‹œ
๋ฌธ์„œ ๊ฐœ์„  (Docs) README, API ๋ฌธ์„œ, ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ ์ˆ˜์ •
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ (Test) JUnit, Pytest, Jest ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ณด์™„
๋ณด์•ˆ ๊ฐ•ํ™” (Security) ์ธ์ฆ, ์•”ํ˜ธํ™”, ๋กœ๊ทธ ์ ‘๊ทผ ์ œํ•œ ๊ฐœ์„ 
์„ฑ๋Šฅ ๊ฐœ์„  (Optimization) AI ์ถ”๋ก  ์†๋„ ๊ฐœ์„ , ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฆฌํŒฉํ„ฐ๋ง
์ธํ”„๋ผ (Infra) Dockerfile, CI/CD, AWS ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ฐœ์„ 

2. ๋ธŒ๋žœ์น˜ ์ „๋žต

SafeView๋Š” GitHub Flow๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

main โ†’ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ์šฉ ์•ˆ์ • ๋ธŒ๋žœ์น˜
develop โ†’ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜
feature/* โ†’ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
fix/* โ†’ ๋ฒ„๊ทธ ์ˆ˜์ •
chore/* โ†’ ์„ค์ •, ๋นŒ๋“œ, ํ™˜๊ฒฝ ๋“ฑ ๊ด€๋ฆฌ ์ž‘์—…
docs/* โ†’ ๋ฌธ์„œ ๊ด€๋ จ ์ˆ˜์ •

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์˜ˆ์‹œ:

git checkout -b feature/access-policy

3. ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜ (Conventional Commits)

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

<type>(<scope>): <subject>

Type ๋ชฉ๋ก

Type ์„ค๋ช…
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
docs ๋ฌธ์„œ ์ˆ˜์ •
style ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ (๋กœ์ง ๋ณ€๊ฒฝ ์—†์Œ)
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€/์ˆ˜์ •
chore ์„ค์ •, ๋นŒ๋“œ, ์˜์กด์„ฑ ๋ณ€๊ฒฝ
perf ์„ฑ๋Šฅ ๊ฐœ์„ 

Scope ์˜ˆ์‹œ

backend, frontend, ai, camera, auth, api, db

Subject ์ž‘์„ฑ ๊ทœ์น™

๊ฐ„๊ฒฐํ•˜๊ฒŒ ์š”์•ฝ (50์ž ์ด๋‚ด)

๋์— ๋งˆ์นจํ‘œ ๊ธˆ์ง€

๋ช…๋ นํ˜•์œผ๋กœ ์ž‘์„ฑ

์˜ˆ์‹œ:

feat(auth): add JWT refresh token reissue logic
fix(camera): correct access level policy evaluation
docs(api): update camera metadata API usage example

4. PR(Pull Request) ๊ทœ์น™

PR์€ ํ•ญ์ƒ dev ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ œ๋ชฉ์€ ๋ช…ํ™•ํžˆ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

[FEAT] Add mosaic scheduler for Camera-AI
[FIX] Resolve null pointer in AccessController

PR ์„ค๋ช…์—๋Š” ๋‹ค์Œ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์š”์•ฝ

๊ด€๋ จ ์ด์Šˆ ๋ฒˆํ˜ธ (Closes #12)

ํ…Œ์ŠคํŠธ ์—ฌ๋ถ€

Reviewer ์ตœ์†Œ 1์ธ ์ง€์ • ํ•„์ˆ˜

5. ์ฝ”๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ

5.1 Backend (Spring Boot)

Java 21 ์ด์ƒ

Controller โ†’ Service โ†’ Repository ๊ณ„์ธต ๊ตฌ์กฐ ์œ ์ง€

DTO, Entity, Domain ๊ฐ์ฒด ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„

Validation, ExceptionHandler, JWT Filter ์ผ๊ด€์„ฑ ์œ ์ง€

API ์‘๋‹ต์€ ResponseEntity<ApiResponse> ํ˜•ํƒœ ๊ถŒ์žฅ

5.2 Camera-AI / AI-Server (Python)

Python 3.10 ์ด์ƒ

๋ชจ๋ธ ๋ฐ inference ๋ชจ๋“ˆ์€ /modules ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜

PEP8 ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ค€์ˆ˜

ํ•จ์ˆ˜๋ช…์€ snake_case, ํด๋ž˜์Šค๋ช…์€ PascalCase

์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” ๋ช…์‹œ์  ์˜ˆ์™ธ ํด๋ž˜์Šค ์‚ฌ์šฉ (raise ValueError("..."))

5.3 Frontend (React / TypeScript)

ํŒŒ์ผ๋ช… PascalCase, ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๋ถ„๋ฆฌ

API ํ˜ธ์ถœ์€ /services ๋ชจ๋“ˆ์—์„œ๋งŒ ์ˆ˜ํ–‰

์ƒํƒœ๊ด€๋ฆฌ๋Š” Zustand ๋˜๋Š” Redux Toolkit ๊ธฐ๋ฐ˜

UI ์ปดํฌ๋„ŒํŠธ๋Š” /components/ui ๋””๋ ‰ํ† ๋ฆฌ๋กœ ํ†ตํ•ฉ

6. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ทœ์น™

PR ์ƒ์„ฑ ํ›„ ์ตœ์†Œ 1๋ช… ์ด์ƒ์˜ Reviewer ์Šน์ธ ํ•„์š”

Reviewer๋Š” ๋‹ค์Œ ํ•ญ๋ชฉ์„ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

๋กœ์ง ๋ฐ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ

์ฝ”๋“œ ์ค‘๋ณต ์—ฌ๋ถ€

ํ…Œ์ŠคํŠธ ๋ˆ„๋ฝ ์—ฌ๋ถ€

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜ ์ค€์ˆ˜ ์—ฌ๋ถ€

7. ๋ณด์•ˆ ๋ฐ ์œค๋ฆฌ์  ๊ณ ๋ ค

SafeView๋Š” ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ๋ฅผ ํ•ต์‹ฌ ๊ฐ€์น˜๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—ฌ ์‹œ ๋‹ค์Œ ์›์น™์„ ๋ฐ˜๋“œ์‹œ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

AI ๋ชจ๋ธ ํ•™์Šต์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์…‹์€ ๋น„์‹๋ณ„ํ™”๋œ ์ž๋ฃŒ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

์‚ฌ์šฉ์ž ๋กœ๊ทธ ์ ‘๊ทผ ์‹œ ๋ฐ˜๋“œ์‹œ ์ธ์ฆ/๊ถŒํ•œ ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค.

๊ฐ์‹œ ๋ชฉ์ ์˜ ๋น„์œค๋ฆฌ์  ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ๊ธˆ์ง€ํ•œ๋‹ค.

8. ๊ธฐ์—ฌ ์ ˆ์ฐจ ์š”์•ฝ

Repository๋ฅผ Forkํ•œ๋‹ค.

๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (feature/...)

์ปค๋ฐ‹ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ปค๋ฐ‹ํ•œ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•œ๋‹ค.

Pull Request๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Reviewer์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜๊ณ  Mergeํ•œ๋‹ค.

9. ๋ฌธ์˜ ๋ฐ ์ง€์›

์ด์Šˆ ์ œ์•ˆ: https://github.com/SafeView/issues

๋ณด์•ˆ ๊ด€๋ จ ์ œ๋ณด: hanjun5559@naver.com

๋ถ€๋ก: ์ปค๋ฐ‹ ์˜ˆ์‹œ ๋ชจ์Œ

์œ ํ˜• ์˜ˆ์‹œ
๊ธฐ๋Šฅ ์ถ”๊ฐ€ feat(camera): implement face detection filtering pipeline
๋ฒ„๊ทธ ์ˆ˜์ • fix(api): resolve token expiration handling issue
๋ฌธ์„œ ์ˆ˜์ • docs(readme): update system architecture diagram
์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง refactor(service): simplify access control logic
ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ test(auth): add jwt reissue test cases
์„ค์ • ๋ณ€๊ฒฝ chore(docker): optimize base image for ai-server
์„ฑ๋Šฅ ๊ฐœ์„  perf(ai): reduce frame encoding latency