From cddf8a3c528c8552e8eee737379576925e93d029 Mon Sep 17 00:00:00 2001 From: chanwoo7 Date: Tue, 6 Oct 2026 16:21:29 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20CodeRabbit=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0(=EB=A6=AC=EB=B7=B0=20=EB=B4=87=EC=9D=80=20Co?= =?UTF-8?q?dex=EB=A7=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 사용자 결정: CodeRabbit은 BE 전용, FE 레포(관리자·판매자)는 쓰지 않음. - .coderabbit.yaml 삭제, 봇 리뷰 문서를 Codex만으로, decisions D11 갱신·D17 추가. --- .coderabbit.yaml | 73 -------------------------- docs/guide/architecture-conventions.md | 2 +- docs/guide/decisions.md | 3 +- 3 files changed, 3 insertions(+), 75 deletions(-) delete mode 100644 .coderabbit.yaml diff --git a/.coderabbit.yaml b/.coderabbit.yaml deleted file mode 100644 index 30af30d..0000000 --- a/.coderabbit.yaml +++ /dev/null @@ -1,73 +0,0 @@ -# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json -language: 'ko-KR' - -reviews: - profile: 'chill' - request_changes_workflow: false - commit_status: true - fail_commit_status: false - high_level_summary: true - high_level_summary_in_walkthrough: false - poem: false - in_progress_fortune: false - suggested_labels: false - auto_apply_labels: false - suggested_reviewers: false - - auto_review: - enabled: true - auto_incremental_review: true - drafts: false - - path_filters: - - '!src/graphql/generated/**' - - '!src/routeTree.gen.ts' - - '!schema/schema.graphql' - - '!src/shared/ui/**' - - '!public/**' - - '!pnpm-lock.yaml' - - path_instructions: - - path: 'src/**/*.{ts,tsx}' - instructions: | - React + TanStack Router/Query SPA. docs/guide/architecture-conventions.md가 기준입니다. - - shared는 features를 import하면 안 되고, feature 간 import는 대상 index.ts로만 가능합니다. - - 쿼리 키는 feature의 키 팩토리로만 만들고, mutation 뒤 관련 키를 invalidate해야 합니다. 낙관적 업데이트는 쓰지 않습니다. - - accessToken을 localStorage/sessionStorage에 저장하면 안 됩니다. - - GraphQL ID는 문자열 그대로 다루며 "0"·빈 문자열을 truthy 검사로 버리면 안 됩니다. - - 색상 hex를 컴포넌트에 직접 쓰지 않고 globals.css 토큰을 씁니다. - - 기능 변경에는 테스트(MSW 기반)가 함께 있는지 확인하세요. - - path: 'src/**/*.graphql' - instructions: | - 문서는 schema/schema.graphql(BE 스냅샷)과 일치해야 합니다. 필드 과다 조회·중복 문서를 지적하세요. - - path: '.github/workflows/**/*.yml' - instructions: | - GitHub Actions는 최소 권한, 시크릿 노출 방지, fork 안전성, SHA 핀을 중심으로 리뷰하세요. - - path: 'infra/**' - instructions: | - compose·nginx·배포 스크립트는 인바운드 포트 미개방, 헬스체크, 롤백 가능성, 시크릿 처리를 중심으로 리뷰하세요. - - path: 'src/**/*.spec.{ts,tsx}' - instructions: | - 네트워크는 MSW로 mock했는지, 정상 흐름뿐 아니라 에러·경계 케이스가 있는지 확인하세요. - - pre_merge_checks: - title: - mode: warning - requirements: 'PR 제목은 Conventional Commits 형식으로 변경 내용을 간결하게 설명해야 합니다.' - description: - mode: off - -knowledge_base: - code_guidelines: - enabled: true - learnings: - scope: local - issues: - scope: local - pull_requests: - scope: local - web_search: - enabled: true - -chat: - auto_reply: false diff --git a/docs/guide/architecture-conventions.md b/docs/guide/architecture-conventions.md index 249e2b0..44a122f 100644 --- a/docs/guide/architecture-conventions.md +++ b/docs/guide/architecture-conventions.md @@ -84,4 +84,4 @@ pnpm codegen # 스냅샷 + 문서 → src/graphql/generated (커밋 - `test`: Vitest 3샤드, 결과는 blob 아티팩트로 넘긴다 - `coverage-report`: blob을 합쳐 임계 검사 → Codecov → PR 댓글. 비교 기준은 base 브랜치(develop·main) push 실행이 올린 커버리지 요약 - 커밋은 Conventional Commits + 한국어 본문(commitlint). 브랜치는 `/<대상>`. -- PR 본문에 `## 플랜 대조` 표. 봇 리뷰(Codex·CodeRabbit)는 BE와 같은 절차로 처리한다. +- PR 본문에 `## 플랜 대조` 표. 봇 리뷰(Codex)는 BE와 같은 절차로 처리한다(CodeRabbit은 BE 전용, D17). diff --git a/docs/guide/decisions.md b/docs/guide/decisions.md index f5b6272..7b42234 100644 --- a/docs/guide/decisions.md +++ b/docs/guide/decisions.md @@ -14,9 +14,10 @@ | D8 | 2026-09-27 | 배포: 이 레포가 Dockerfile(nginx) · `infra/compose.yml` · `deploy.yml` 소유. GHCR `ghcr.io/caquick/caquick-admin-fe:`(arm64), 맥미니 셀프호스트 러너, BE compose 네트워크 `caquick_default`에 external 참여, 기존 cloudflared가 라우팅 | BE와 독립 배포·롤백. BE 레포 변경은 Tunnel 호스트 1줄 | | D9 | 2026-09-27 | 도메인 `admin.caquick.site` → 컨테이너 `caquick-admin:80`. API `https://api.caquick.site` | 같은 부모 도메인이라 refresh 쿠키가 same-site로 전송된다 — 쿠키 도메인 변경 불필요, BE는 CORS 오리진만 추가 | | D10 | 2026-09-27 | 인증: REST `/auth/admin/*`. accessToken은 메모리, refresh는 httpOnly 쿠키. 401이면 refresh 1회 후 재시도, 부팅 시 refresh로 복원, `mustChangePassword`면 변경 화면 강제 | 토큰을 localStorage에 두지 않는다(XSS 반경). 로컬은 Vite 프록시로 same-origin | -| D11 | 2026-09-27 | 머지 게이트는 BE와 동일: terraform ruleset(main·develop), 필수 체크 `check`·`pr-title`·`coverage-report`·`Analyze (javascript-typescript)`, Codex 상태기계, CodeRabbit(main) | 무인 진행의 전제 | +| D11 | 2026-09-27 | 머지 게이트는 BE와 동일: terraform ruleset(main·develop), 필수 체크 `check`·`pr-title`·`coverage-report`·`Analyze (javascript-typescript)`, Codex 상태기계(CodeRabbit은 대체됨 → D17) | 무인 진행의 전제 | | D12 | 2026-09-27 | 릴리즈 순서: R1(기반·CI/CD·인증·셸·대시보드) → main → 영역별 PR → R2 | 배포 파이프라인·Tunnel·쿠키 문제를 가장 이른 시점에 실사이트에서 확인 | | D13 | 2026-09-27 | BE SDL 스냅샷(`schema/schema.graphql`) 커밋 + `pnpm schema:pull`. CI는 codegen 신선도만 게이트, BE main과의 drift는 advisory | CI가 BE 체크아웃에 의존하지 않게 | | D14 | 2026-09-27 | 문서: `CLAUDE.md`·`.claude/`·`AGENTS.md`·`docs/*`(guide 제외)·`.figma/` gitignore. `docs/guide/`·README 커밋 | BE와 같은 방식 | | D15 | 2026-09-27 | 의존 방향은 ESLint boundaries로 강제(shared→features 금지, feature 간은 index.ts만). 검사기는 반증 케이스로 확인하고 넣는다 | BE `arch:check`와 같은 역할 | | D16 | 2026-10-05 | 커버리지 임계를 실측 정수 내림으로 상향: statements 95 · branches 88 · functions 94 · lines 96. CI는 테스트를 3샤드로 나누고 coverage-report가 합친 결과로 검사 | 실측(95.54·88.07·94.29·96.07)보다 한참 낮은 임계는 회귀를 못 잡는다. 샤드 합산이 단일 실행과 같음을 확인 | +| D17 | 2026-10-06 | 리뷰 봇은 Codex만 쓴다. CodeRabbit은 BE 전용이라 `.coderabbit.yaml`을 두지 않는다 | 사용자 결정(판매자 앱도 같음) | From b3d74e03a6a9c16309f9e35a3c1bcdef95865200 Mon Sep 17 00:00:00 2001 From: chanwoo7 Date: Tue, 6 Oct 2026 16:26:59 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20CodeRabbit=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=EB=A5=BC=20=EC=84=A4=EC=A0=95=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=81=84=EA=B8=B0(=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 설정 파일만 지우면 앱 연결이 남은 경우 기본값(auto_review.enabled: true)으로 리뷰가 계속 돎(Codex 지적). - 삭제 대신 auto_review.enabled: false만 둔 최소 설정, decisions 문구 맞춤. --- .coderabbit.yaml | 5 +++++ docs/guide/decisions.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .coderabbit.yaml diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 0000000..e0a887f --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json +# CodeRabbit은 BE(caquick-be) 전용 — 앱이 이 레포에 연결돼 있어도 자동 리뷰가 돌지 않게 끈다 +reviews: + auto_review: + enabled: false diff --git a/docs/guide/decisions.md b/docs/guide/decisions.md index 7b42234..cc5aa8c 100644 --- a/docs/guide/decisions.md +++ b/docs/guide/decisions.md @@ -20,4 +20,4 @@ | D14 | 2026-09-27 | 문서: `CLAUDE.md`·`.claude/`·`AGENTS.md`·`docs/*`(guide 제외)·`.figma/` gitignore. `docs/guide/`·README 커밋 | BE와 같은 방식 | | D15 | 2026-09-27 | 의존 방향은 ESLint boundaries로 강제(shared→features 금지, feature 간은 index.ts만). 검사기는 반증 케이스로 확인하고 넣는다 | BE `arch:check`와 같은 역할 | | D16 | 2026-10-05 | 커버리지 임계를 실측 정수 내림으로 상향: statements 95 · branches 88 · functions 94 · lines 96. CI는 테스트를 3샤드로 나누고 coverage-report가 합친 결과로 검사 | 실측(95.54·88.07·94.29·96.07)보다 한참 낮은 임계는 회귀를 못 잡는다. 샤드 합산이 단일 실행과 같음을 확인 | -| D17 | 2026-10-06 | 리뷰 봇은 Codex만 쓴다. CodeRabbit은 BE 전용이라 `.coderabbit.yaml`을 두지 않는다 | 사용자 결정(판매자 앱도 같음) | +| D17 | 2026-10-06 | 리뷰 봇은 Codex만 쓴다. CodeRabbit은 BE 전용 — `.coderabbit.yaml`은 자동 리뷰를 끈 최소 설정만 둔다 | 사용자 결정(판매자 앱도 같음) | From 7bc769cda0ab93d948237b0b5e5041b3f4268aca Mon Sep 17 00:00:00 2001 From: chanwoo7 Date: Tue, 6 Oct 2026 16:36:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20CodeRabbit=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=8B=B5=EA=B8=80=EB=8F=84=20=EB=81=88=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EC=9C=A0=EC=A7=80(=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 최소 설정에서 이전의 chat.auto_reply: false가 빠져 기본값(true)으로 돌아감(Codex 지적) → 유지. --- .coderabbit.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index e0a887f..600dd51 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -1,5 +1,7 @@ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json -# CodeRabbit은 BE(caquick-be) 전용 — 앱이 이 레포에 연결돼 있어도 자동 리뷰가 돌지 않게 끈다 +# CodeRabbit은 BE(caquick-be) 전용 — 앱이 이 레포에 연결돼 있어도 자동 리뷰·자동 답글이 돌지 않게 끈다 reviews: auto_review: enabled: false +chat: + auto_reply: false