SafeView๋ ์นด๋ฉ๋ผ ์ ๊ทผ ์ ์ด์ AI ๊ธฐ๋ฐ ๋ชจ์์ดํฌ ๊ธฐ์ ์ ๊ฒฐํฉํ ์คํ์์ค ํ๋ก์ ํธ์ ๋๋ค. ์ด ๋ฌธ์๋ SafeView์ ๊ธฐ์ฌํ๊ธฐ ์ํ ์ ์ฐจ, ๊ท์น, ์ปค๋ฐ ์ปจ๋ฒค์ , ์ฝ๋ ๊ฐ์ด๋๋ผ์ธ์ ์ ์ํฉ๋๋ค.
SafeView๋ ๋ค์๊ณผ ๊ฐ์ ํํ์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค.
| ๊ตฌ๋ถ | ์์ |
|---|---|
| ๊ธฐ๋ฅ ์ถ๊ฐ (Feature) | ์๋ก์ด ๊ถํ ๋ ๋ฒจ, ๋ชจ์์ดํฌ ํํฐ๋ง ์ต์ , AI ์ถ๋ก ๊ธฐ๋ฅ ์ถ๊ฐ |
| ๋ฒ๊ทธ ์์ (Bug Fix) | ๊ถํ ๊ฒ์ฆ ์ค๋ฅ, ํ ํฐ ๋ง๋ฃ ์ฒ๋ฆฌ ๋ฌธ์ , UI ๋น์ ์ ํ์ |
| ๋ฌธ์ ๊ฐ์ (Docs) | README, API ๋ฌธ์, ๊ฐ๋ฐ ๊ฐ์ด๋ ์์ |
| ํ ์คํธ ์ฝ๋ (Test) | JUnit, Pytest, Jest ํ ์คํธ ์ผ์ด์ค ๋ณด์ |
| ๋ณด์ ๊ฐํ (Security) | ์ธ์ฆ, ์ํธํ, ๋ก๊ทธ ์ ๊ทผ ์ ํ ๊ฐ์ |
| ์ฑ๋ฅ ๊ฐ์ (Optimization) | AI ์ถ๋ก ์๋ ๊ฐ์ , ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฆฌํฉํฐ๋ง |
| ์ธํ๋ผ (Infra) | Dockerfile, CI/CD, AWS ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ฐ์ |
SafeView๋ GitHub Flow๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํฉ๋๋ค.
main โ ํ๋ก๋์
๋ฐฐํฌ์ฉ ์์ ๋ธ๋์น
develop โ ํตํฉ ๊ฐ๋ฐ ๋ธ๋์น
feature/* โ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ
fix/* โ ๋ฒ๊ทธ ์์
chore/* โ ์ค์ , ๋น๋, ํ๊ฒฝ ๋ฑ ๊ด๋ฆฌ ์์
docs/* โ ๋ฌธ์ ๊ด๋ จ ์์
๋ธ๋์น ์์ฑ ์์:
git checkout -b feature/access-policy
์ปค๋ฐ ๋ฉ์์ง๋ ๋ค์ ํ์์ ๋ฐ๋ฆ ๋๋ค.
<type>(<scope>): <subject>
| Type | ์ค๋ช |
|---|---|
| feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
| fix | ๋ฒ๊ทธ ์์ |
| docs | ๋ฌธ์ ์์ |
| style | ์ฝ๋ ์คํ์ผ ๋ณ๊ฒฝ (๋ก์ง ๋ณ๊ฒฝ ์์) |
| refactor | ์ฝ๋ ๋ฆฌํฉํฐ๋ง |
| test | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ |
| chore | ์ค์ , ๋น๋, ์์กด์ฑ ๋ณ๊ฒฝ |
| perf | ์ฑ๋ฅ ๊ฐ์ |
backend, frontend, ai, camera, auth, api, db
๊ฐ๊ฒฐํ๊ฒ ์์ฝ (50์ ์ด๋ด)
๋์ ๋ง์นจํ ๊ธ์ง
๋ช ๋ นํ์ผ๋ก ์์ฑ
์์:
feat(auth): add JWT refresh token reissue logic
fix(camera): correct access level policy evaluation
docs(api): update camera metadata API usage example
PR์ ํญ์ dev ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค.
์ ๋ชฉ์ ๋ช ํํ ์์ฑํฉ๋๋ค. ์์:
[FEAT] Add mosaic scheduler for Camera-AI
[FIX] Resolve null pointer in AccessController
PR ์ค๋ช ์๋ ๋ค์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
๋ณ๊ฒฝ ์์ฝ
๊ด๋ จ ์ด์ ๋ฒํธ (Closes #12)
ํ ์คํธ ์ฌ๋ถ
Reviewer ์ต์ 1์ธ ์ง์ ํ์
Java 21 ์ด์
Controller โ Service โ Repository ๊ณ์ธต ๊ตฌ์กฐ ์ ์ง
DTO, Entity, Domain ๊ฐ์ฒด ๋ช ํํ ๊ตฌ๋ถ
Validation, ExceptionHandler, JWT Filter ์ผ๊ด์ฑ ์ ์ง
API ์๋ต์ ResponseEntity<ApiResponse> ํํ ๊ถ์ฅ
Python 3.10 ์ด์
๋ชจ๋ธ ๋ฐ inference ๋ชจ๋์ /modules ๋๋ ํ ๋ฆฌ์ ์์น
PEP8 ์คํ์ผ ๊ฐ์ด๋ ์ค์
ํจ์๋ช ์ snake_case, ํด๋์ค๋ช ์ PascalCase
์์ธ์ฒ๋ฆฌ๋ ๋ช ์์ ์์ธ ํด๋์ค ์ฌ์ฉ (raise ValueError("..."))
ํ์ผ๋ช PascalCase, ์ปดํฌ๋ํธ ๋จ์ ๋ถ๋ฆฌ
API ํธ์ถ์ /services ๋ชจ๋์์๋ง ์ํ
์ํ๊ด๋ฆฌ๋ Zustand ๋๋ Redux Toolkit ๊ธฐ๋ฐ
UI ์ปดํฌ๋ํธ๋ /components/ui ๋๋ ํ ๋ฆฌ๋ก ํตํฉ
PR ์์ฑ ํ ์ต์ 1๋ช ์ด์์ Reviewer ์น์ธ ํ์
Reviewer๋ ๋ค์ ํญ๋ชฉ์ ๊ฒํ ํด์ผ ํฉ๋๋ค:
๋ก์ง ๋ฐ ๋ณด์์์ ๋ฌธ์
์ฝ๋ ์ค๋ณต ์ฌ๋ถ
ํ ์คํธ ๋๋ฝ ์ฌ๋ถ
์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์ ์ค์ ์ฌ๋ถ
SafeView๋ ํ๋ผ์ด๋ฒ์ ๋ณดํธ๋ฅผ ํต์ฌ ๊ฐ์น๋ก ํฉ๋๋ค. ๊ธฐ์ฌ ์ ๋ค์ ์์น์ ๋ฐ๋์ ์ค์ํด์ผ ํฉ๋๋ค.
๊ฐ์ธ ์๋ณ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์ถ๋ ฅํ์ง ์๋๋ค.
AI ๋ชจ๋ธ ํ์ต์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ์ ๋น์๋ณํ๋ ์๋ฃ๋ง ํ์ฉํ๋ค.
์ฌ์ฉ์ ๋ก๊ทธ ์ ๊ทผ ์ ๋ฐ๋์ ์ธ์ฆ/๊ถํ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค.
๊ฐ์ ๋ชฉ์ ์ ๋น์ค๋ฆฌ์ ๊ธฐ๋ฅ ์ถ๊ฐ๋ ๊ธ์งํ๋ค.
Repository๋ฅผ Forkํ๋ค.
๋ธ๋์น๋ฅผ ์์ฑํ๋ค. (feature/...)
์ปค๋ฐ ์ปจ๋ฒค์ ์ ๋ง๊ฒ ์ปค๋ฐํ๋ค.
ํ ์คํธ ์ฝ๋์ ๊ฐ์ ๋ฐฉ์์ ํตํด ์ถฉ๋ถํ ํ ์คํธ๋ก ๊ฒ์ฆํ๋ค.
Pull Request๋ฅผ ์์ฑํ๋ค.
Reviewer์ ํผ๋๋ฐฑ์ ๋ฐ์ํ๊ณ Mergeํ๋ค.
์ด์ ์ ์: 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 |