Feature/meeting ux improvements#11
Conversation
1. 미팅종료 후 회의록 입력 소스 선택 UI 추가
- end_session() 즉시 생성 → 4버튼 picker (트랜스크립트/음성/메모/건너뜀)
- _pending_end_inputs 상태로 선택 대기 관리
- 음성 선택 후 파일 업로드 시 STT → 자동 회의록 생성
2. 단체방 슬래시 커맨드 채널 응답 수정
- /미팅시작, /메모, /미팅종료에 body["channel_id"] 전달
- 이벤트 선택 플로우 전체(_auto_start_or_enqueue, _prompt_event_selection,
_prompt_event_confirm, _start_session_with_event, handle_event_selection)에
channel 파라미터 전파
3. /미팅시작 이벤트 선택 UI 개선
- start_session() 인라인 캘린더 매칭을 _find_candidate_events() 기반으로 교체
- 후보 2개+ → Block Kit picker, 1개 → 확인 UI, 0개 → 즉시 수동 시작
- _pending_inputs에 source/title_hint 필드 추가
4. 완성된 회의록 스레드 답글 → Drive 업데이트
- _finalized_minutes_threads[(user_id, msg_ts)] 인덱스로 완성 메시지 추적
- _post_combined_minutes()가 msg_ts 캡처 후 인덱스 저장
- DM 스레드 답글 → handle_finalized_minutes_reply() 라우팅
- tools/drive.py에 update_file_content() 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
pull |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d307eb0083
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| _pending_end_inputs.pop(user_id, None) | ||
| handle_end_input_selection(client, user_id, "notes_only") |
There was a problem hiding this comment.
Keep pending end-session state until notes-only generation runs
When processing an uploaded audio file after the user chose end_input_audio, this path removes _pending_end_inputs[user_id] before delegating to handle_end_input_selection(..., "notes_only"). That handler immediately returns if no pending entry exists, so the notes-only minutes generation never runs and the ended session is effectively dropped in the audio-upload flow.
Useful? React with 👍 / 👎.
| _pending_end_inputs.pop(user_id, None) | ||
| eid = event_id or f"manual_{user_id}" | ||
| threading.Thread( |
There was a problem hiding this comment.
Use unique synthetic event IDs for manual transcript runs
For transcript generation without a calendar event, eid is always set to manual_{user_id}. Reusing this fixed ID across sessions causes collisions in downstream state keyed by event_id (for example draft keys in _pending_minutes), so a second manual transcript run can overwrite or hide the first run’s pending draft/state instead of tracking each meeting independently.
Useful? React with 👍 / 👎.
| channel = pending.get("channel") or user_id | ||
| client.chat_postMessage( | ||
| channel=user_id, | ||
| channel=channel, |
There was a problem hiding this comment.
Keep title-reply prompt in DM until channel replies are supported
This change posts the “enter meeting title in thread” prompt to pending.channel, which can be a non-DM channel. But title-reply handling is still gated under if channel_type == "im" in handle_message, so replies in public/private channel threads are ignored and users can get stuck in pending event selection when they choose “새 미팅으로 기록” outside DM.
Useful? React with 👍 / 👎.
No description provided.