From 59075df953995906ce2d160dd09427ac04ca7bef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Sat, 5 Sep 2026 12:43:24 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20core:data=20=EA=B0=80=20core:alarm?= =?UTF-8?q?=20=EC=9D=84=20=EC=A7=81=EC=A0=91=20=EB=B6=80=EB=A5=B4=EC=A7=80?= =?UTF-8?q?=20=EC=95=8A=EB=8F=84=EB=A1=9D=20Notifier=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=EB=A1=9C=20=EC=97=AD=EA=B2=B0?= =?UTF-8?q?=ED=95=A9=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Notifier 인터페이스를 core:data 에 두고 Schedule/User/FamilyGroup Repository 가 주입받는다 - core:alarm 의 NotifierModule 이 GuardianNotifier 를 바인딩하고, core:data 의 core:alarm 의존을 지운다 - DummyDataManager 를 Hilt 생성자 주입으로 바꾸고 MainActivity 가 @Inject 로 받는다 - .idea/gradle.xml Gradle JVM 을 jbr-21 로, .mailmap 으로 커밋 author 표시 이름을 정규화 - .claude/hooks/git-commit-guard.sh: 2026-09-05 지시대로 검증 생략 커밋만 막는다 --- .claude/hooks/git-commit-guard.sh | 17 +- .idea/gradle.xml | 1 + .mailmap | 10 + .../com/example/slowclock/MainActivity.kt | 5 +- core/alarm/build.gradle.kts | 5 + .../notification/GuardianNotifier.kt | 11 +- .../slowclock/notification/NotifierModule.kt | 19 ++ core/data/build.gradle.kts | 1 - .../slowclock/data/DummyDataManager.kt | 99 +++--- .../slowclock/data/notification/Notifier.kt | 27 ++ .../repository/FamilyGroupRepository.kt | 285 +++++++++--------- .../remote/repository/ScheduleRepository.kt | 14 +- .../data/remote/repository/UserRepository.kt | 8 +- 13 files changed, 288 insertions(+), 214 deletions(-) create mode 100644 .mailmap create mode 100644 core/alarm/src/main/java/com/example/slowclock/notification/NotifierModule.kt create mode 100644 core/data/src/main/java/com/example/slowclock/data/notification/Notifier.kt diff --git a/.claude/hooks/git-commit-guard.sh b/.claude/hooks/git-commit-guard.sh index caab6a4..056d150 100755 --- a/.claude/hooks/git-commit-guard.sh +++ b/.claude/hooks/git-commit-guard.sh @@ -1,21 +1,18 @@ #!/usr/bin/env bash -# PreToolUse Bash hook: block all `git commit` invocations. +# PreToolUse Bash hook: `git commit` 정책. # -# 사용자가 Android Studio 커밋 탭에서 직접 검토·커밋하는 워크플로우. Claude의 자율 커밋은 절대 금지. +# 2026-09-05 이전: 사용자가 Android Studio 커밋 탭에서 직접 검토·커밋하는 워크플로우라 Claude 의 `git commit` 을 전부 막았다. +# 2026-09-05 지시("이 프로젝트는 내가 검토할 시간이 없으니 네가 알아서 해라"): 이 저장소에서는 Claude 가 검증을 마친 뒤 +# 커밋·push·PR 생성·머지까지 수행한다. 이 훅은 검증을 건너뛰는 `--no-verify` 커밋만 막는다. +# 되돌리려면 이 파일의 이전 판(전부 deny)을 git 이력에서 복원하고 CLAUDE.md 의 규약 문구를 함께 되돌린다. set -uo pipefail input="$(cat)" cmd="$(echo "$input" | jq -r '.tool_input.command // empty')" [ -z "$cmd" ] && exit 0 -# `git commit` 가 단어 경계 단위로 나타나면 차단 (`git commit-tree` 같은 다른 서브커맨드는 영향 없음) -if [[ "$cmd" =~ (^|[[:space:]]|\;|\&|\|)git[[:space:]]+commit([[:space:]]|$) ]]; then - # 예외: `git commit --amend -m "..."` 또는 `--amend --message=...` 는 *메시지만 수정* 용도로 허용. - # 주의: staged changes 가 있으면 amend 시 함께 커밋됨. 호출 전에 staging 이 비어있는지 확인할 책임은 호출자. - if [[ "$cmd" =~ --amend ]] && [[ "$cmd" =~ (-m[[:space:]]|--message) ]]; then - exit 0 - fi - jq -nc --arg reason "자율 커밋 금지. 사용자가 Android Studio 커밋 탭에서 직접 검토·커밋합니다. 정말 커밋이 필요하면 사용자에게 직접 실행을 요청하세요. (예외: \`git commit --amend -m\` 으로 마지막 커밋 메시지만 수정하는 케이스는 허용.)" \ +if [[ "$cmd" =~ (^|[[:space:]]|\;|\&|\|)git[[:space:]]+commit([[:space:]]|$) ]] && [[ "$cmd" =~ --no-verify ]]; then + jq -nc --arg reason "git commit --no-verify 금지. 훅 검증을 건너뛰지 말고 실패 원인을 고친 뒤 커밋하세요." \ '{hookSpecificOutput: {hookEventName: "PreToolUse", permissionDecision: "deny", permissionDecisionReason: $reason}}' fi diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2fd44c1..5d06b33 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -6,6 +6,7 @@