Skip to content

Feat/168 profile phone - #176

Open
BcKmini wants to merge 2 commits into
mainfrom
feat/168-profile-phone
Open

Feat/168 profile phone#176
BcKmini wants to merge 2 commits into
mainfrom
feat/168-profile-phone

Conversation

@BcKmini

@BcKmini BcKmini commented Aug 14, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

관련 Issue와 사용자가 겪던 문제를 적어 주세요.

  • Closes #

무엇이 바뀌나요?

  • API·도메인·DB 변경:
  • 권한·Workflow 변경:
  • AI·외부 연동 변경:
  • 문서·배포 변경:

어떻게 검증했나요?

  • ./gradlew clean test
  • ./gradlew build
  • /health와 Swagger UI 확인
  • 정상 요청
  • 잘못된 입력
  • 권한 부족
  • 다른 사업장 접근 차단
  • 필요한 상태 전이·Idempotency

테스트 명령과 결과를 짧게 적어 주세요.

보안·개인정보

  • DTO·로그·AI 입력에 불필요한 개인정보가 없습니다.
  • JWT, Worker Link 원본 토큰, API Key, 비밀번호가 없습니다.
  • 모든 사업장 데이터 접근에 company_id 범위를 검사합니다.
  • AI 결과가 자동 승인·발송되지 않습니다.
  • 중요한 변경이 AuditLog와 request_id로 추적됩니다.
  • 관련 Accepted ADR을 지켰거나 필요한 새 ADR을 이 PR에서 Proposed로 작성했습니다.
  • Server에 Prompt Builder·Provider SDK·모델 routing을 추가하지 않았습니다.

API·DB·운영 영향

  • Swagger/OpenAPI와 Notion 계약을 갱신했습니다.
  • Client에 알려야 할 호환성 변경을 적었습니다.
  • DB 변경에 Flyway migration이 있습니다.
  • migration 번호와 소유 Issue를 확인했고 다른 기능의 테이블을 미리 만들지 않았습니다.
  • 환경변수는 이름만 .env.example에 적었습니다.
  • 배포 후 Smoke Test와 롤백 방법을 적었습니다.

화면 또는 응답 예시

개인정보를 제거한 예시만 첨부해 주세요.

BcKmini and others added 2 commits August 14, 2026 14:33
client의 /profile 페이지가 개인 프로필 API가 없어서(#191) 화면 상태로만
반영되던 문제 해결. user_account에 phone 컬럼 추가하고, GET/PATCH
/api/v1/auth/me/profile로 표시이름·연락처를 실제로 조회·수정 가능하게 함.
회원가입 시 전화번호(선택) 입력도 지원.

UserAccount 도메인의 applyState()가 password만 갱신하던 것을
displayName/phone도 갱신하도록 일반화했고, changePassword()와 같은
낙관적 잠금(version+1) 패턴으로 updateProfile()을 추가함.

Closes #168

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ProfilePage에 표시되던 마지막 로그인 시각/기기, 계정 상태, 비밀번호 변경일,
업무 권한, 알림 수신 설정이 전부 profileData.ts의 고정값이었던 문제를
백엔드부터 해결한다.

- user_login_event 테이블 신설, 로그인 성공 시 User-Agent 기반 기기 요약과
  함께 기록. GET /auth/me/profile이 role/account_status/password_changed_at/
  last_login_at/last_login_device/recent_device_count를 실제 값으로 반환.
  (last_login/work-context의 "담당 영역"·"문서 열람 범위"처럼 백엔드에 대응
  개념이 아예 없는 항목은 만들어내지 않고 클라이언트에서 제거 예정)
- user_account.password_changed_at 컬럼 추가, changePassword()에서 갱신.
- notification_preference 테이블 + GET/PATCH /notifications/preferences 신설.
  7개 알림 유형 기본값은 client의 기존 INITIAL_NOTIFICATION_PREFS와 동일하게
  맞췄고, security-permission은 서버에서도 끌 수 없도록 강제.

Part of the "no hardcoded profile data" cleanup requested after client#339.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant