[FEAT] MEET-01 회의 안건 저장 및 개설 정책 검증 - #430
Merged
Merged
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (11)
📝 WalkthroughWalkthrough회의 생성 요청에 개설자 역할과 필수 안건을 추가했습니다. 서비스는 역할별 액션 정책과 참석자 조건을 검증합니다. 검증된 MAIN·SUB 안건은 회의 생성과 같은 트랜잭션에서 저장합니다. Changes회의 생성 흐름
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant MeetingController
participant MeetingService
participant MeetingAgenda
participant MeetingTopicPersistenceAdapter
Client->>MeetingController: 회의 생성 요청과 인증 principal
MeetingController->>MeetingService: CreateMeetingCommand 전달
MeetingService->>MeetingAgenda: 안건 검증 및 정규화
MeetingService->>MeetingService: 역할·액션·참석자 조건 검증
MeetingService->>MeetingTopicPersistenceAdapter: meetingId와 MeetingAgenda 전달
MeetingTopicPersistenceAdapter-->>MeetingService: MAIN·SUB 안건 저장 완료
MeetingService-->>MeetingController: 생성된 회의 반환
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This was referenced Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 연관 이슈
📝 작업 내용
mainTopic,subTopics필드를 추가했습니다.parent_topic_id로 연결했습니다.relatedActionId를 입력할 수 없고, OWNER 외 역할은 반드시 입력하도록 검증했습니다.🖥️ 프론트엔드 연동 가이드 (API 명세)
1. 주요 엔드포인트
POST/api/meetings: 회의실 예약과 함께 회의 및 대주제·소주제를 생성합니다.2. 요청 파라미터 (Request)
titleprojectIdmeetingRoomIdstartAtyyyy-MM-dd'T'HH:mm:ssendAtstartAt보다 늦어야 함recordingConsentfalserelatedActionIdattendeeMemberIdsmainTopicsubTopics요청 예시
{ "title": "A커머스 온보딩 킥오프", "projectId": 12, "meetingRoomId": 2, "startAt": "2026-08-14T14:00:00", "endAt": "2026-08-14T14:30:00", "recordingConsent": false, "relatedActionId": 305, "attendeeMemberIds": [7, 11, 15], "mainTopic": "스프린트 진행 상황", "subTopics": [ "개발 진행률 점검", "배포 일정 합의" ] }3. 정상 응답 예시 (201 Created)
응답 JSON 보기 (클릭)
{ "httpStatus": 201, "message": "회의를 예약했습니다.", "data": { "meetingId": 91, "status": "SCHEDULED", "title": "A커머스 온보딩 킥오프", "startAt": "2026-08-14T14:00:00", "endAt": "2026-08-14T14:30:00", "recordingConsent": false, "meetingRoom": { "meetingRoomId": 2, "name": "회의실 B", "location": "박애관 422호" }, "host": { "memberId": 3, "name": "지우" }, "attendees": [ { "memberId": 3, "name": "지우", "teamName": "기획" }, { "memberId": 7, "name": "이든", "teamName": "개발" } ] } }4.⚠️ 프론트엔드 참고 및 주의사항
mainTopic과subTopics는 모두 필수입니다.subTopics에는 최소 한 개 이상의 소주제가 필요합니다.attendeeMemberIds에는 host 이외의 참석자가 최소 한 명 필요합니다.relatedActionId를 보내면 안 됩니다.relatedActionId를 반드시 보내야 합니다.parentTeamActionId는 요청의relatedActionId로 전달하면 됩니다.teamId와 상위 팀 액션의teamId일치 검증이 포함되지 않았습니다. C 도메인의 액션 팀 조회 계약이 준비된 후 별도 작업으로 연결합니다.🚨 주요 에러 코드 및 예외 (Exceptions)
MT-002: 같은 회의실과 예약 시간이 중복된 경우MT-003: 종료 시각이 시작 시각보다 늦지 않은 경우MT-004: 회의실 이용 가능 시간을 벗어난 경우MT-005: 시작 또는 종료 시각이 30분 단위가 아닌 경우MT-010: 다른 회사 또는 삭제된 구성원이 참석자에 포함된 경우MT-012: 과거 시각으로 회의를 예약한 경우MT-015: 대주제 또는 하나 이상의 소주제가 누락되거나 올바르지 않은 경우MT-016: 개설자 역할과relatedActionId입력 정책이 일치하지 않는 경우MT-017: host 외 참석자가 한 명도 없는 경우MR-001: 존재하지 않거나 비활성화된 회의실인 경우PJ-001: 존재하지 않는 프로젝트인 경우AC-001: 존재하지 않는 상위 팀 액션인 경우💡 백엔드 리뷰 포인트 (Backend Review)
MeetingTopicRepository포트와 JPA Adapter로 분리했습니다.relatedActionId정책을 검증합니다.teamId조회 계약이 추가되면 회의 팀과 상위 팀 액션 팀의 일치 여부를 검증해야 합니다.✅ 체크리스트
meeting도메인 전체 테스트를 통과했습니다.Summary by CodeRabbit
새로운 기능
버그 수정