- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록) - `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록 — 창끼리 공유하되 저장소에는 안 올리는 장부 - 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠) - graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.1 KiB
4.1 KiB
status, page_id, related_pages, last_updated
| status | page_id | related_pages | last_updated | |||||
|---|---|---|---|---|---|---|---|---|
| draft | A09_Security |
|
2026-07-12 |
A09_Security — Frontend
보안·약관 열람 페이지. 이용약관/개인정보/세션 보안정책 텍스트를 버전과 함께 표시.
파일 구조
| 파일 | 위치 | 역할 |
|---|---|---|
A09_Security_UI_Page.ts |
A09_Security/A09_Security_UI_Page.ts:1-30 |
실사용 약관 열람 페이지 렌더링 |
A09_Security_Terms.ts |
A09_Security/A09_Security_Terms.ts:1-16 |
약관 텍스트 데이터(한/영), 버전 상수 |
A09_Security_UI_Style.css |
A09_Security/A09_Security_UI_Style.css:1-14 |
스타일 (theme.css 변수만 사용) |
A09_Security_Api_Fetch.ts |
A09_Security/A09_Security_Api_Fetch.ts:1-61 |
⚠️ API 클라이언트 (정의만, 미사용 — 아래 참고) |
⚠️ 프론트/백엔드 기능 불일치:
A09_Security_UI_Page.ts는 약관 텍스트 열람만 하며A09_Security_Api_Fetch.ts를 import하지 않는다. API 클라이언트(마스터/관리자 8함수)는 정의만 되고 어디서도 사용되지 않음(grep 확인). 백엔드 API(/api/security)는 완비돼 있으나 프론트 연동 미완.
컴포넌트 / 함수
| 함수 | 위치 | 역할 |
|---|---|---|
renderA09Security(root) |
A09_Security/A09_Security_UI_Page.ts:7 |
제목+버전+3개 약관 섹션 렌더 |
약관 데이터 (A09_Security_Terms.ts)
| 항목 | 위치 | 내용 |
|---|---|---|
SECURITY_TERMS_VERSION |
A09_Security/A09_Security_Terms.ts:1 |
약관 버전 상수 "1.0" |
securityTerms.terms |
A09_Security/A09_Security_Terms.ts:4 |
이용약관(한/영) |
securityTerms.privacy |
A09_Security/A09_Security_Terms.ts:8 |
개인정보(한/영, "IP 미수집" 명시) |
securityTerms.security |
A09_Security/A09_Security_Terms.ts:12 |
세션 보안정책(한/영) |
API 클라이언트 함수 (⚠️ 미사용, 정의만)
| 함수 | 위치 | 대응 API |
|---|---|---|
getMasterDashboard() |
A09_Security/A09_Security_Api_Fetch.ts:14 |
GET /security/master/dashboard |
getMembers() |
A09_Security/A09_Security_Api_Fetch.ts:18 |
GET /security/master/members |
getJoinRequests() |
A09_Security/A09_Security_Api_Fetch.ts:22 |
GET /security/master/join-requests |
decideJoinRequest(id, approved, comment?) |
A09_Security/A09_Security_Api_Fetch.ts:26 |
POST .../join-requests/{id}/decision |
removeMember(userId) |
A09_Security/A09_Security_Api_Fetch.ts:37 |
POST .../members/{id}/remove |
getAdminDashboard() |
A09_Security/A09_Security_Api_Fetch.ts:41 |
GET /security/admin/dashboard |
getAdminCollection(collection) |
A09_Security/A09_Security_Api_Fetch.ts:45 |
GET /security/admin/{collection} |
updateAdminStatus(entity, id, status, reason) |
A09_Security/A09_Security_Api_Fetch.ts:51 |
PATCH /security/admin/{entity}/{id}/status |
로컬라이제이션
모든 텍스트는 ui_templates에서 로드. 하드코딩 금지.
| UI 요소 | 로케일 키 |
|---|---|
| 제목/버전 | A09_Security_Title, A09_Security_Version |
| 섹션 제목 | A09_Security_Terms, A09_Security_Privacy, A09_Security_Policy |
- 약관 본문은 로케일이 아닌
A09_Security_Terms.ts에 한/영 배열로 별도 관리([currentLanguageIndex]로 선택)
스타일 (CSS)
.a09-security— 문서 컨테이너(max-width 800px, surface 배경, border).a09-security section— 섹션 간격(margin-top: spacing-32)
⚠️ 약관 텍스트와 실 코드 불일치
securityTerms.security는 "세션 12시간 또는 4시간 비활동 후 만료"로 안내하나,
A06 실 코드는 auth_expires_at = NOW() + 3개월 방식 → A06_Login/A06_backend 참고.
약관 텍스트도 auth_rbac 계획서 기준으로 작성됨 (실 정책 검증 후 갱신 필요).
의존성
- ui_templates —
ui_locales,currentLanguageIndex(다국어) - 백엔드 API(미연동) → A09_Security/A09_backend