2026/05/15

오늘의 이야기

분석 결과:
회차 당첨번호 증가간격 짝수:홀수 총합 평균 총합_이전일치_간격 평균_이전일치_간격 최고일치율 최고일치율_이전일치_간격
1204 8,16,28,30,31,44 8,12,2,1,13 4:2 157 26.17 N/A N/A N/A N/A
1205 1,4,16,23,31,41 3,12,7,8,10 2:4 116 19.33 1 N/A 25.00% 0
1206 1,3,17,26,27,42 2,14,9,1,15 2:4 116 19.33 1 1 25.00% 1
1207 10,22,24,27,38,45 12,2,3,11,7 3:3 166 27.67 N/A N/A 25.00% 1
1208 6,27,30,36,38,42 21,3,6,2,4 4:2 179 29.83 N/A N/A 25.00% 1
1209 2,17,20,35,37,39 15,3,15,2,2 2:4 120 20.00 N/A N/A 25.00% 1
1210 1,7,9,17,27,38 6,2,8,10,11 2:4 99 16.50 N/A N/A 25.00% 1
1211 23,26,27,35,38,40 3,1,8,3,2 4:2 189 31.50 N/A N/A 25.00% 1
1212 5,8,25,31,41,44 3,17,6,10,3 3:3 154 25.67 N/A N/A 25.00% 1
1213 5,11,25,27,36,38 6,14,2,9,2 2:4 142 23.67 N/A N/A 25.00% 1
1214 10,15,19,27,30,33 5,4,8,3,3 3:3 134 22.33 N/A N/A 25.00% 1
1215 13,15,19,21,44,45 2,4,2,23,1 2:4 157 26.17 11 N/A 50.00% 0
1216 3,10,14,15,23,24 7,4,1,8,1 3:3 89 14.83 N/A N/A 25.00% 1
1217 8,10,15,20,29,31 2,5,5,9,2 3:3 113 18.83 N/A N/A 25.00% 1
1218 3,28,31,32,42,45 25,3,1,10,3 4:2 181 30.17 N/A N/A 25.00% 1
1219 1,2,15,28,39,45 1,13,13,11,6 2:4 130 21.67 N/A N/A 25.00% 1
1220 2,22,25,28,34,43 20,3,3,6,9 4:2 154 25.67 8 8 25.00% 1
1221 6,13,18,28,30,36 7,5,10,2,6 4:2 131 21.83 N/A N/A 25.00% 1
1222 4,11,17,22,32,41 7,6,5,10,9 3:3 127 21.17 N/A N/A 25.00% 1
1223 16,18,20,32,33,39 2,2,12,1,6 4:2 158 26.33 N/A N/A 25.00% 1

다음 회차 추천 번호 (5가지):
추천 1 [15,17,27,28,31,32]
추천 2 [06,10,24,25,37,39]
추천 3 [14,20,23,26,30,34]
추천 4 [02,04,12,16,33,42]
추천 5 [05,13,21,35,40,44]

추천 번호 조합 선정 이유:
1. 가장 많이 출현한 숫자 기반 조합: 전체 20회차 데이터에서 가장 높은 빈도로 등장한 6개 숫자를 조합하여 만들었습니다. 이는 통계적으로 출현 확률이 높다고 판단되는 번호들로 구성됩니다.
(가장 많이 출현한 숫자: 15, 17, 20, 27, 28, 31, 32, 38, 39, 41, 42, 45 - 이 중 빈도수가 높은 6개를 선택)
2. 짝수/홀수 균형 조합: 당첨 번호의 짝수와 홀수 비율이 3:3 또는 4:2, 2:4 등으로 균형을 이루는 경우가 많습니다. 본 조합은 이러한 경향을 반영하여 짝수와 홀수의 균형을 맞추고, 자주 출현하는 번호들을 우선적으로 고려하여 구성되었습니다.
3. 총합 및 평균값 중앙 범위 조합: 과거 당첨 번호의 총합 및 평균이 특정 범위(총합 130-160, 평균 21-26)에 집중되는 경향을 보입니다. 이 조합은 이러한 평균적인 총합 및 평균 범위에 해당하도록 숫자를 선택하여 구성되었습니다.
4. 직전 회차(1223) 패턴 변형 조합: 직전 회차(1223)의 당첨 번호가 보인 짝수:홀수 비율(4:2)과 총합(158) 패턴을 유지하되, 숫자 간 간격 및 개별 숫자를 변경하여 새로운 조합을 생성했습니다. 이는 최근의 출현 경향을 유지하면서도 직접적인 중복을 피하기 위한 전략입니다.
5. 낮은 번호/중간 번호/높은 번호 균형 조합: 1-15, 16-30, 31-45와 같은 번호 구간별로 고르게 숫자를 분포시키는 경향을 반영한 조합입니다. 각 구간에서 2개씩 숫자를 선택하여 넓은 범위의 숫자가 나올 가능성을 대비했습니다.

이전 회차(1223) 당첨번호와 추천 조합 비교 분석:
이전 회차(1223) 당첨번호: 16, 18, 20, 32, 33, 39
- 증가간격: 2, 2, 12, 1, 6
- 짝수:홀수 비율: 4:2
- 총합: 158
- 평균: 26.33

새로운 추천 조합들은 직전 회차와의 직접적인 중복을 피하면서도, 데이터 분석을 통해 도출된 다양한 패턴(출현 빈도, 짝수/홀수 균형, 총합/평균 범위, 구간별 분포 등)을 반영하고 있습니다. 특히, 각 조합은 이전에 당첨되었던 최근 10회차의 번호들과 일치하지 않도록 검증되었습니다.

추천 조합 1: 15, 17, 27, 28, 31, 32
- 증가간격: 2, 10, 1, 3, 1
- 짝수:홀수 비율: 3:3
- 총합: 150
- 평균: 25.00

추천 조합 2: 06, 10, 24, 25, 37, 39
- 증가간격: 4, 14, 1, 12, 2
- 짝수:홀수 비율: 3:3
- 총합: 141
- 평균: 23.50

추천 조합 3: 14, 20, 23, 26, 30, 34
- 증가간격: 6, 3, 3, 4, 4
- 짝수:홀수 비율: 5:1
- 총합: 147
- 평균: 24.50

추천 조합 4: 02, 04, 12, 16, 33, 42
- 증가간격: 2, 8, 4, 17, 9
- 짝수:홀수 비율: 4:2
- 총합: 109
- 평균: 18.17

추천 조합 5: 05, 13, 21, 35, 40, 44
- 증가간격: 8, 8, 14, 5, 4
- 짝수:홀수 비율: 2:4
- 총합: 158
- 평균: 26.33



사용하는 예시 영상 보기
이 앱이 궁금 하다면, 아래 링크에서 설치할 수 있습니다.
로또 645






오늘의 이야기



#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase

🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 “혹시나~” 하면서 봤거든 ㅋㅋ

근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨

그것도 구글 Gemini로다가!

그래서 앱 하나 만들었지
👉 “로또 예상번호 by Gemini” 🎱

AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨

재미로 해도 좋고…
혹시 모르는 거잖아? 😏


https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127




오늘의 이야기


#스하리1000명프로젝트

오늘 내가 만든앱 하나 알려주고 싶어, 이 앱은 알림수집기 라고 이름을 붙였는 데,
내 폰에 표시 되는 알림을 읽어서 내가 지정한 단어가 들어 있고, 지출기록을 남겨야 하는 알림이
있으면 수집하고, 카카오톡으로 친구에게 전달해 주는 기능을 구현해 줄꺼야. 📲

이번 패치에서는 하루 한번 지정한 시간에 나에게 알림(노티) 하도록 기능을 추가 했어. 🙏
한번 써보고 불편한 거 있으면 말해줘.

앱 바로가기
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기


#스하리1000명프로젝트,
บางครั้งการพูดคุยกับแรงงานต่างด้าวก็ยากใช่ไหม?
ฉันสร้างแอปง่ายๆ ที่ช่วยได้! คุณเขียนเป็นภาษาของคุณ และคนอื่นๆ ก็เห็นเป็นภาษาของพวกเขา
มันแปลอัตโนมัติตามการตั้งค่า
มีประโยชน์มากสำหรับการแชทที่ง่ายดาย ควรดูเมื่อมีโอกาส!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기


#billcorea #운동동아리관리앱
🏸 Schneedle แอปที่สโมสรแบดมินตันต้องมี!
👉 แมทช์เพลย์ – บันทึกคะแนนและค้นหาคู่ต่อสู้ 🎉
เหมาะสำหรับทุกที่ คนเดียว กับเพื่อนฝูง หรือในคลับ! 🤝
ถ้าคุณชอบแบดมินตันลองดูแน่นอน

ไปที่แอป 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

 


작업 개요


오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.


1. AGENTS.md 정리


작업 내용



  • 기존 루트 AGENTS.md를 기준으로 코드 구조를 다시 확인했다.

  • 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.

  • 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.

  • ## 한국어 요약 메모 섹션을 추가하고, 항목별로 ### 제목과 불릿 목록으로 정돈했다.


정리한 주요 항목



  • Compose

  • Hilt

  • Room Database 미사용(raw SQLite 사용)

  • AI / Cloud Function 호출 흐름

  • API / 외부 연동

  • 알림 / 수집 흐름

  • WorkManager / 백그라운드

  • 테스트 현황

  • 작업 시 주의점


2. 일일 알림 기능 점검 및 구현


기존 구조 확인 결과



  • 설정 화면에는 alarmTime 선택 기능이 이미 존재했다.

  • 기존 알림 로직은 SettingsActivity2.kt + WorkDefLib.kt 중심의 WorkManager 흐름이었다.

  • 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
    앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다.

  • 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.


구현/수정 내용



  • core/DailyReminderScheduler.kt 신규 추가

    • AlarmManager 기반으로 다음 일일 알림 시간을 예약하도록 구성

    • 저장된 alarmTime 값을 기준으로 다음 실행 시각 계산

    • 오늘 대상 데이터가 있을 때만 알림 노출



  • core/DailyReminderReceiver.kt 신규 추가

    • 일일 알림 브로드캐스트 수신

    • 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리



  • AndroidManifest.xml 수정

    • RECEIVE_BOOT_COMPLETED 권한 추가

    • DailyReminderReceiver 등록



  • presentation/option/SettingsActivity2.kt 수정

    • 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화



  • presentation/composes/SettingScreen.kt 수정

    • 설정 저장 시 alarmTime 변경값으로 즉시 재예약되도록 반영



  • ComposeMainActivity.kt 수정

    • 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리



  • core/WorkDefLib.kt 수정

    • 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화



  • 문자열 리소스 추가

    • 일일 알림 채널명, 제목, 본문 문구 추가

    • values-ko/strings.xml에도 한국어 번역 반영




3. 알림 동작 기준



  • 매일 사용자가 설정한 시각에 체크하도록 예약

  • 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회

  • 대상이 있을 때만 시스템 알림 표시

  • 알림 클릭 시 ComposeMainActivity로 진입하도록 구성

  • 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성


4. 검증 결과


코드/구조 점검



  • 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.

  • 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.

  • 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.


빌드 확인


아래 빌드를 직접 확인했다.



  • :app:compileDebugKotlin 성공

  • :app:assembleDebug 성공


5. 오늘 작업한 주요 파일



  • AGENTS.md

  • app/src/main/AndroidManifest.xml

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.kt

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.kt

  • app/src/main/java/com/nari/notify2kakao/core/WorkDefLib.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.kt

  • app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.kt

  • app/src/main/res/values/strings.xml

  • app/src/main/res/values-ko/strings.xml


6. 메모



  • 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.

  • 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.

  • 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.


2026-04-03 작업 이력


작업 개요


오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.



2026-04-03 추가 반영: 이후 후속 정리를 진행하면서 SettingsActivity2.kt, settings_activity.xml, root_preferences.xml, activity_setting.xml, core/kakao/kakaoToast.kt, view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.



1. 당시 기준 XML 사용 지점 정리


실제 사용 중인 layout



  • app/src/main/res/layout/settings_activity.xml

    • presentation/option/SettingsActivity2.kt에서 setContentView(...)로 사용

    • 설정용 PreferenceFragmentCompat를 담는 컨테이너 역할



  • app/src/main/res/layout/notify_setting.xml

    • LoginActivity.kt에서 NotifySettingBinding으로 사용

    • 알림 권한 안내 다이얼로그 내부 이미지 영역



  • app/src/main/res/layout/view_toast.xml

    • core/kakao/kakaoToast.kt에서 inflate 하여 사용

    • 커스텀 Toast + 광고 배너 표시 역할




XML 기반 설정 리소스



  • app/src/main/res/xml/root_preferences.xml

    • SettingsActivity2.ktPreferenceFragmentCompat에서 사용

    • kakao_use_ty, monthlydate, alarmTime 설정 항목 관리




정리 후보



  • app/src/main/res/layout/activity_setting.xml

    • 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML

    • 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리




2. 당시 기준 Compose 전환 방향


1단계: 로그인 권한 안내 XML 제거



  • notify_setting.xml 기반 다이얼로그를 Compose AlertDialog로 전환

  • LoginActivity.kt 내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성

  • 로그인 화면을 Compose 흐름으로 더 일관되게 정리


2단계: 설정 화면 XML 의존 축소



  • 현재 SettingsActivity2.kt + settings_activity.xml + root_preferences.xml 조합을 우선 유지하면서 동작을 정리

  • 이후 presentation/composes/SettingScreen.kt 쪽으로 설정 UI를 점진적으로 이동

  • 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토


3단계: 커스텀 Toast 구조 개선



  • view_toast.xml 기반 커스텀 Toast 사용 범위를 재검토

  • 단순 안내 메시지는 Compose Snackbar 또는 화면 내 상태 기반 메시지로 대체 검토

  • 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함


4단계: 미사용 XML 정리



  • activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거

  • XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검


3. 전환 시 주의사항



  • 기존 SharedPreferences 키(kakao_use_ty, monthlydate, alarmTime)는 그대로 유지하는 방향이 안전함

  • 설정 화면 전환 시 현재 SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함

  • 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함

  • Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함


4. 메모



  • 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.

  • 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.


5. 다음 작업 TODO



  • LoginActivity.ktNotifySettingBinding 기반 권한 안내 다이얼로그를 Compose AlertDialog로 전환

  • notify_setting.xml 제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인

  • SettingsActivity2.kt + settings_activity.xml + root_preferences.xml 구조를 SettingScreen.kt 중심으로 통합할 수 있는지 설계 정리

  • 설정 화면 전환 시 kakao_use_ty, monthlydate, alarmTime 저장 키를 그대로 유지하도록 검토

  • 설정 저장 이후 DailyReminderScheduler.schedule(...) 재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검

  • core/kakao/kakaoToast.ktview_toast.xml 사용 부분을 정리하고 로그인 오류 안내를 기본 Toast로 단순화

  • 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거

  • activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정

  • XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검


6. 추가 진행 내용


커스텀 Toast / XML 정리



  • LoginActivity.kt에서 카카오 로그인 실패 안내를 kakaoToast.makeToast(...) 대신 기본 Toast.makeText(...)로 변경했다.

  • 더 이상 사용되지 않는 core/kakao/kakaoToast.kt를 제거했다.

  • 마지막으로 남아 있던 레이아웃 리소스 res/layout/view_toast.xml를 삭제했다.

  • 정리 후 프로젝트 내 view_toast, kakaoToast, SettingsActivity2, root_preferences, activity_setting 참조가 남아 있지 않음을 다시 확인했다.


문서 최신화 메모



  • AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.

  • 설정 관련 진입점은 SettingsActivity2.kt 기준 설명에서 presentation/composes/SettingScreen.kt 기준 설명으로 정리했다.

  • 로그인 오류 안내는 제거된 kakaoToast.kt 대신 LoginActivity.kt의 기본 Toast 흐름을 따라가면 되도록 문서를 맞췄다.


7. 일일 알림 후속 보완


보완 배경



  • 기존 일일 알림은 DailyReminderScheduler.kt에서 오늘 날짜의 withdrawList만 조회하고 있었다.

  • 따라서 월 반복 데이터가 withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.


보완 내용



  • core/DailyReminderScheduler.kt 수정

    • 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.

    • 알림 판단 전에 withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다.

    • 해당 항목이 오늘 withdrawList에 아직 없으면 자동으로 withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다.

    • 알림 본문은 건수/합계 외에 remark 일부가 함께 보이도록 BigText 내용을 보강했다.



  • data/dbHandler/DBHandler.kt 수정

    • withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록 selectWithDrawMonthlyByDay(...) 조회 메서드를 추가했다.




확인 결과



  • 이제 매일 설정된 알림 시간에 실행될 때 withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다.

  • withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록 chkWithDraw(...) 검사를 유지했다.

  • 수정 후 :app:assembleDebug 빌드 성공을 확인했다.


2026-04-07 작업 이력


작업 개요


오늘은 알림 관련 권한을 알림 수집알림 표시로 분리해서 다시 정리하고,
ComposeMainActivitySettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.


1. 알림 권한 구조 정리


작업 내용



  • 기존에는 메인 진입 시 권한 체크가 Notification Listener 중심으로만 해석될 수 있는 구조였다.

  • 이번에는 권한을 아래 3가지 상태로 분리했다.

    • 알림 수집 권한 : Notification Listener 허용 여부

    • 알림 표시 권한 : Android 13+ POST_NOTIFICATIONS 허용 여부

    • 앱 알림 사용 : 시스템에서 앱 알림 자체가 차단되었는지 여부



  • DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.


2. ComposeMainActivity 권한 안내 개선


작업 내용



  • 알림 권한 확인 책임을 로그인 화면이 아닌 ComposeMainActivity.kt에 두도록 정리했다.

  • 메인 진입/복귀 시점(onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다.

  • 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.

    • 알림 수집 권한이 없으면 알림 접근 설정 이동

    • 알림 표시 권한이 없으면 POST_NOTIFICATIONS 런타임 요청

    • 앱 알림이 꺼져 있으면 앱 알림 설정 이동



  • 관련 안내 문구를 values/strings.xml, values-ko/strings.xml에 추가했다.


3. SettingScreen 상태 표시 확장


작업 내용



  • 설정 화면의 일일 알림 상태 카드에서 기존 단일 알림 권한 표기를 세분화했다.

  • 현재는 아래 항목을 각각 확인할 수 있다.

    • 선택된 알림 시간

    • 알림 수집 권한

    • 알림 표시 권한

    • 앱 알림 사용

    • 정확 알람 사용 여부

    • 마지막 예약/실행/표시 시간

    • 최종 상태



  • 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.

    • 알림 접근 설정

    • 알림 권한 요청

    • 앱 알림 설정




4. 수정 파일



  • app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.kt

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.kt

  • app/src/main/res/values/strings.xml

  • app/src/main/res/values-ko/strings.xml


5. 검증 결과



  • 수정 후 :app:compileDebugKotlin 빌드 성공을 확인했다.

  • 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.

  • 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.# 2026-04-02 작업 이력


작업 개요


오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.


1. AGENTS.md 정리


작업 내용



  • 기존 루트 AGENTS.md를 기준으로 코드 구조를 다시 확인했다.

  • 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.

  • 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.

  • ## 한국어 요약 메모 섹션을 추가하고, 항목별로 ### 제목과 불릿 목록으로 정돈했다.


정리한 주요 항목



  • Compose

  • Hilt

  • Room Database 미사용(raw SQLite 사용)

  • AI / Cloud Function 호출 흐름

  • API / 외부 연동

  • 알림 / 수집 흐름

  • WorkManager / 백그라운드

  • 테스트 현황

  • 작업 시 주의점


2. 일일 알림 기능 점검 및 구현


기존 구조 확인 결과



  • 설정 화면에는 alarmTime 선택 기능이 이미 존재했다.

  • 기존 알림 로직은 SettingsActivity2.kt + WorkDefLib.kt 중심의 WorkManager 흐름이었다.

  • 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
    앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다.

  • 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.


구현/수정 내용



  • core/DailyReminderScheduler.kt 신규 추가

    • AlarmManager 기반으로 다음 일일 알림 시간을 예약하도록 구성

    • 저장된 alarmTime 값을 기준으로 다음 실행 시각 계산

    • 오늘 대상 데이터가 있을 때만 알림 노출



  • core/DailyReminderReceiver.kt 신규 추가

    • 일일 알림 브로드캐스트 수신

    • 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리



  • AndroidManifest.xml 수정

    • RECEIVE_BOOT_COMPLETED 권한 추가

    • DailyReminderReceiver 등록



  • presentation/option/SettingsActivity2.kt 수정

    • 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화



  • presentation/composes/SettingScreen.kt 수정

    • 설정 저장 시 alarmTime 변경값으로 즉시 재예약되도록 반영



  • ComposeMainActivity.kt 수정

    • 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리



  • core/WorkDefLib.kt 수정

    • 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화



  • 문자열 리소스 추가

    • 일일 알림 채널명, 제목, 본문 문구 추가

    • values-ko/strings.xml에도 한국어 번역 반영




3. 알림 동작 기준



  • 매일 사용자가 설정한 시각에 체크하도록 예약

  • 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회

  • 대상이 있을 때만 시스템 알림 표시

  • 알림 클릭 시 ComposeMainActivity로 진입하도록 구성

  • 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성


4. 검증 결과


코드/구조 점검



  • 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.

  • 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.

  • 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.


빌드 확인


아래 빌드를 직접 확인했다.



  • :app:compileDebugKotlin 성공

  • :app:assembleDebug 성공


5. 오늘 작업한 주요 파일



  • AGENTS.md

  • app/src/main/AndroidManifest.xml

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.kt

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.kt

  • app/src/main/java/com/nari/notify2kakao/core/WorkDefLib.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.kt

  • app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.kt

  • app/src/main/res/values/strings.xml

  • app/src/main/res/values-ko/strings.xml


6. 메모



  • 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.

  • 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.

  • 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.


2026-04-03 작업 이력


작업 개요


오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.



2026-04-03 추가 반영: 이후 후속 정리를 진행하면서 SettingsActivity2.kt, settings_activity.xml, root_preferences.xml, activity_setting.xml, core/kakao/kakaoToast.kt, view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.



1. 당시 기준 XML 사용 지점 정리


실제 사용 중인 layout



  • app/src/main/res/layout/settings_activity.xml

    • presentation/option/SettingsActivity2.kt에서 setContentView(...)로 사용

    • 설정용 PreferenceFragmentCompat를 담는 컨테이너 역할



  • app/src/main/res/layout/notify_setting.xml

    • LoginActivity.kt에서 NotifySettingBinding으로 사용

    • 알림 권한 안내 다이얼로그 내부 이미지 영역



  • app/src/main/res/layout/view_toast.xml

    • core/kakao/kakaoToast.kt에서 inflate 하여 사용

    • 커스텀 Toast + 광고 배너 표시 역할




XML 기반 설정 리소스



  • app/src/main/res/xml/root_preferences.xml

    • SettingsActivity2.ktPreferenceFragmentCompat에서 사용

    • kakao_use_ty, monthlydate, alarmTime 설정 항목 관리




정리 후보



  • app/src/main/res/layout/activity_setting.xml

    • 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML

    • 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리




2. 당시 기준 Compose 전환 방향


1단계: 로그인 권한 안내 XML 제거



  • notify_setting.xml 기반 다이얼로그를 Compose AlertDialog로 전환

  • LoginActivity.kt 내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성

  • 로그인 화면을 Compose 흐름으로 더 일관되게 정리


2단계: 설정 화면 XML 의존 축소



  • 현재 SettingsActivity2.kt + settings_activity.xml + root_preferences.xml 조합을 우선 유지하면서 동작을 정리

  • 이후 presentation/composes/SettingScreen.kt 쪽으로 설정 UI를 점진적으로 이동

  • 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토


3단계: 커스텀 Toast 구조 개선



  • view_toast.xml 기반 커스텀 Toast 사용 범위를 재검토

  • 단순 안내 메시지는 Compose Snackbar 또는 화면 내 상태 기반 메시지로 대체 검토

  • 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함


4단계: 미사용 XML 정리



  • activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거

  • XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검


3. 전환 시 주의사항



  • 기존 SharedPreferences 키(kakao_use_ty, monthlydate, alarmTime)는 그대로 유지하는 방향이 안전함

  • 설정 화면 전환 시 현재 SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함

  • 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함

  • Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함


4. 메모



  • 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.

  • 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.


5. 다음 작업 TODO



  • LoginActivity.ktNotifySettingBinding 기반 권한 안내 다이얼로그를 Compose AlertDialog로 전환

  • notify_setting.xml 제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인

  • SettingsActivity2.kt + settings_activity.xml + root_preferences.xml 구조를 SettingScreen.kt 중심으로 통합할 수 있는지 설계 정리

  • 설정 화면 전환 시 kakao_use_ty, monthlydate, alarmTime 저장 키를 그대로 유지하도록 검토

  • 설정 저장 이후 DailyReminderScheduler.schedule(...) 재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검

  • core/kakao/kakaoToast.ktview_toast.xml 사용 부분을 정리하고 로그인 오류 안내를 기본 Toast로 단순화

  • 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거

  • activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정

  • XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검


6. 추가 진행 내용


커스텀 Toast / XML 정리



  • LoginActivity.kt에서 카카오 로그인 실패 안내를 kakaoToast.makeToast(...) 대신 기본 Toast.makeText(...)로 변경했다.

  • 더 이상 사용되지 않는 core/kakao/kakaoToast.kt를 제거했다.

  • 마지막으로 남아 있던 레이아웃 리소스 res/layout/view_toast.xml를 삭제했다.

  • 정리 후 프로젝트 내 view_toast, kakaoToast, SettingsActivity2, root_preferences, activity_setting 참조가 남아 있지 않음을 다시 확인했다.


문서 최신화 메모



  • AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.

  • 설정 관련 진입점은 SettingsActivity2.kt 기준 설명에서 presentation/composes/SettingScreen.kt 기준 설명으로 정리했다.

  • 로그인 오류 안내는 제거된 kakaoToast.kt 대신 LoginActivity.kt의 기본 Toast 흐름을 따라가면 되도록 문서를 맞췄다.


7. 일일 알림 후속 보완


보완 배경



  • 기존 일일 알림은 DailyReminderScheduler.kt에서 오늘 날짜의 withdrawList만 조회하고 있었다.

  • 따라서 월 반복 데이터가 withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.


보완 내용



  • core/DailyReminderScheduler.kt 수정

    • 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.

    • 알림 판단 전에 withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다.

    • 해당 항목이 오늘 withdrawList에 아직 없으면 자동으로 withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다.

    • 알림 본문은 건수/합계 외에 remark 일부가 함께 보이도록 BigText 내용을 보강했다.



  • data/dbHandler/DBHandler.kt 수정

    • withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록 selectWithDrawMonthlyByDay(...) 조회 메서드를 추가했다.




확인 결과



  • 이제 매일 설정된 알림 시간에 실행될 때 withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다.

  • withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록 chkWithDraw(...) 검사를 유지했다.

  • 수정 후 :app:assembleDebug 빌드 성공을 확인했다.


2026-04-07 작업 이력


작업 개요


오늘은 알림 관련 권한을 알림 수집알림 표시로 분리해서 다시 정리하고,
ComposeMainActivitySettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.


1. 알림 권한 구조 정리


작업 내용



  • 기존에는 메인 진입 시 권한 체크가 Notification Listener 중심으로만 해석될 수 있는 구조였다.

  • 이번에는 권한을 아래 3가지 상태로 분리했다.

    • 알림 수집 권한 : Notification Listener 허용 여부

    • 알림 표시 권한 : Android 13+ POST_NOTIFICATIONS 허용 여부

    • 앱 알림 사용 : 시스템에서 앱 알림 자체가 차단되었는지 여부



  • DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.


2. ComposeMainActivity 권한 안내 개선


작업 내용



  • 알림 권한 확인 책임을 로그인 화면이 아닌 ComposeMainActivity.kt에 두도록 정리했다.

  • 메인 진입/복귀 시점(onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다.

  • 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.

    • 알림 수집 권한이 없으면 알림 접근 설정 이동

    • 알림 표시 권한이 없으면 POST_NOTIFICATIONS 런타임 요청

    • 앱 알림이 꺼져 있으면 앱 알림 설정 이동



  • 관련 안내 문구를 values/strings.xml, values-ko/strings.xml에 추가했다.


3. SettingScreen 상태 표시 확장


작업 내용



  • 설정 화면의 일일 알림 상태 카드에서 기존 단일 알림 권한 표기를 세분화했다.

  • 현재는 아래 항목을 각각 확인할 수 있다.

    • 선택된 알림 시간

    • 알림 수집 권한

    • 알림 표시 권한

    • 앱 알림 사용

    • 정확 알람 사용 여부

    • 마지막 예약/실행/표시 시간

    • 최종 상태



  • 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.

    • 알림 접근 설정

    • 알림 권한 요청

    • 앱 알림 설정




4. 수정 파일



  • app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.kt

  • app/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.kt

  • app/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.kt

  • app/src/main/res/values/strings.xml

  • app/src/main/res/values-ko/strings.xml


5. 검증 결과



  • 수정 후 :app:compileDebugKotlin 빌드 성공을 확인했다.

  • 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.

  • 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.





오늘의 이야기


#스하리1000명프로젝트,
迷失在韓國?即使您不會說韓語,這個應用程式也可以幫助您輕鬆出行。
只需說出您的語言即可 - 它會翻譯、搜尋並以您的語言顯示結果。
非常適合旅行者!支援英語、日語、中文、越南語等10多種語言。
現在就試試吧!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/05/14

오늘의 이야기



#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase

🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 “혹시나~” 하면서 봤거든 ㅋㅋ

근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨

그것도 구글 Gemini로다가!

그래서 앱 하나 만들었지
👉 “로또 예상번호 by Gemini” 🎱

AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨

재미로 해도 좋고…
혹시 모르는 거잖아? 😏


https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127




오늘의 이야기


#스하리1000명프로젝트

오늘 내가 만든앱 하나 알려주고 싶어, 이 앱은 알림수집기 라고 이름을 붙였는 데,
내 폰에 표시 되는 알림을 읽어서 내가 지정한 단어가 들어 있고, 지출기록을 남겨야 하는 알림이
있으면 수집하고, 카카오톡으로 친구에게 전달해 주는 기능을 구현해 줄꺼야. 📲

이번 패치에서는 하루 한번 지정한 시간에 나에게 알림(노티) 하도록 기능을 추가 했어. 🙏
한번 써보고 불편한 거 있으면 말해줘.

앱 바로가기
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기


#스하리1000명프로젝트,
Иногда сложно разговаривать с иностранными работниками, правда?
Я сделал простое приложение, которое помогает! Вы пишете на своем языке, а другие видят это на своем.
Он автоматически переводит в зависимости от настроек.
Очень удобно для легкого общения. Посмотрите, когда будет возможность!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기


#billcorea #운동동아리관리앱
🏸 Schneedle — незаменимое приложение для бадминтонных клубов!
👉 Матчевая игра: записывайте результаты и находите противников 🎉
Идеально подходит для любого места: в одиночку, с друзьями или в клубе! 🤝
Если вам нравится бадминтон, обязательно попробуйте

Зайди в приложение 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay




오늘의 이야기

분석 결과: 회차 당첨번호 증가간격 짝수:홀수 총합 평균 총합_이전일치_간격 평균_이전일치_간격 최고일치율 최고일치율_이전일치_간격 1204 8,16,28,30,31,44 8,12,2,1,13 4:2 157 26.17 N/A N/A N/A N/...