Skip to content

[LFXV2-1299] feat: add update_note to update meeting endpoint#143

Open
andrest50 wants to merge 5 commits into
mainfrom
feat/LFXV2-1299-add-update-note-to-update-meeting
Open

[LFXV2-1299] feat: add update_note to update meeting endpoint#143
andrest50 wants to merge 5 commits into
mainfrom
feat/LFXV2-1299-add-update-note-to-update-meeting

Conversation

@andrest50
Copy link
Copy Markdown
Contributor

@andrest50 andrest50 commented Apr 13, 2026

Summary

  • Add optional update_note field (max 500 chars) to the PUT /itx/meetings/{meeting_id} endpoint payload
  • Pass the field through to the ITX service as note on the CreateZoomMeetingRequest, which includes it in registrant notification emails
  • Field is request-only; not persisted on the meeting object

Ticket

LFXV2-1299

🤖 Generated with Claude Code

@andrest50 andrest50 requested a review from a team as a code owner April 13, 2026 21:00
Copilot AI review requested due to automatic review settings April 13, 2026 21:00
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 13, 2026

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e478b02e-c0f7-4bb2-8a14-bcb165d842cf

📥 Commits

Reviewing files that changed from the base of the PR and between 6a6b204 and 8ee9f2c.

⛔ Files ignored due to path filters (9)
  • gen/http/cli/meeting_service/cli.go is excluded by !**/gen/**
  • gen/http/meeting_service/client/cli.go is excluded by !**/gen/**
  • gen/http/meeting_service/client/types.go is excluded by !**/gen/**
  • gen/http/meeting_service/server/types.go is excluded by !**/gen/**
  • gen/http/openapi.json is excluded by !**/gen/**
  • gen/http/openapi.yaml is excluded by !**/gen/**
  • gen/http/openapi3.json is excluded by !**/gen/**
  • gen/http/openapi3.yaml is excluded by !**/gen/**
  • gen/meeting_service/service.go is excluded by !**/gen/**
📒 Files selected for processing (2)
  • design/itx_types.go
  • pkg/models/itx/meetings.go
✅ Files skipped from review due to trivial changes (1)
  • design/itx_types.go

Walkthrough

Adds an optional UpdateNote field through the API DSL, domain model, service mapping, and ITX request model, and ensures the HTTP handler populates it from the incoming payload using a string utility.

Changes

UpdateNote propagation

Layer / File(s) Summary
Data Shape (design DSL)
design/itx_types.go
Adds UpdateNoteAttribute() defining update_note string with MaxLength(500) for email notification context.
Request Payload (design)
design/meeting-svc.go
Inserts UpdateNoteAttribute() into the update-itx-meeting Payload block.
Domain Model
internal/domain/models/itx_meeting.go
Adds exported UpdateNote string to CreateITXMeetingRequest.
Service Mapping
internal/service/itx/meeting_service.go
transformToITXRequest maps req.UpdateNote to the ITX request Note field.
External API Model
pkg/models/itx/meetings.go
Adds Note string \json:"note,omitempty"`toCreateZoomMeetingRequest`.
HTTP Handler / Wiring
cmd/meeting-api/api_itx_meetings.go
Imports pkg/utils and sets req.UpdateNote = utils.StringValue(p.UpdateNote) in MeetingsAPI.UpdateItxMeeting before calling the service.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 63.64% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and accurately summarizes the main change: adding an update_note field to the update meeting endpoint, directly matching the changeset across multiple files.
Description check ✅ Passed The description is well-related to the changeset, providing clear context about the update_note field, its constraints, and how it flows through the system.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/LFXV2-1299-add-update-note-to-update-meeting

Comment @coderabbitai help to get the list of available commands and usage tips.

Add optional update_note field (max 500 chars) to the update meeting
Goa payload and pass it through to the ITX service as the note field
on the meeting update request, enabling organizer notes to be included
in registrant notification emails.

Generated with [Claude Code](https://claude.ai/code)

Signed-off-by: Andres Tobon <[email protected]>
@andrest50 andrest50 force-pushed the feat/LFXV2-1299-add-update-note-to-update-meeting branch from a9b326b to 1db3ad0 Compare April 13, 2026 21:04
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an optional update_note field to the ITX meeting update API payload and plumbs it through to the ITX request so it can be included in registrant notification emails. The PR also contains operational/indexing-related changes (new reindex script, additional tags/parent refs, and event handler project enrichment) that broaden scope beyond the described endpoint change.

Changes:

  • Add optional update_note (max 500 chars) to PUT /itx/meetings/{meeting_id} and pass through to ITX as note.
  • Enrich past-meeting-related events with additional project tags/parent references and populate project fields in summary/attachment handlers.
  • Add scripts/reindex_meetings operational tool and extend the local pre-commit hook (gofmt + license header checks).

Reviewed changes

Copilot reviewed 11 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
scripts/reindex_meetings/main.go New operational tool to scroll OpenSearch by object_type and re-put matching NATS KV entries.
scripts/reindex_meetings/README.md Documentation for running the reindex script (dry-run vs. -reindex).
scripts/hooks/pre-commit Adds gofmt verification and a staged-file license header check.
pkg/models/itx/meetings.go Extends ITX request model with note field.
internal/service/itx/meeting_service.go Maps domain UpdateNote into ITX CreateZoomMeetingRequest.Note.
internal/domain/models/itx_meeting.go Adds UpdateNote to the internal meeting request model.
internal/domain/models/event_models.go Adds project slug tags and project parent refs for multiple past-meeting artifact types.
gen/meeting_service/service.go Regenerates Goa service types to include UpdateNote in update payload.
gen/http/openapi.yaml Regenerates OpenAPI schema, adding update_note (maxLength 500) and updating examples.
gen/http/meeting_service/server/types.go Adds UpdateNote field + validation to the update request body.
gen/http/meeting_service/client/types.go Adds UpdateNote support to the generated client request types.
gen/http/meeting_service/client/cli.go Updates generated CLI builders/examples; adds update_note validation in CLI payload build.
gen/http/cli/meeting_service/cli.go Updates generated CLI usage text/examples to reflect regenerated schema.
design/meeting-svc.go Adds UpdateNoteAttribute() to the update meeting payload design.
design/itx_types.go Defines UpdateNoteAttribute() with max length constraint.
cmd/meeting-api/eventing/summary_event_handler.go Enriches summary events with project info from parent past meeting KV; adjusts retry/skip behavior.
cmd/meeting-api/eventing/participant_event_handler.go Removes duplicated KV helper in favor of shared helper.
cmd/meeting-api/eventing/kv_helpers.go New shared helper to fetch parent past meeting project fields from v1 KV.
cmd/meeting-api/eventing/attachment_event_handler.go Enriches attachment events with project mapping/slug and skips when unmapped.
cmd/meeting-api/api_itx_meetings.go Wires API UpdateNote into domain request for meeting update.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread cmd/meeting-api/api_itx_meetings.go Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
internal/domain/models/event_models.go (1)

1216-1217: LGTM - ProjectUID and ProjectSlug fields added to PastMeetingAttachmentEventData.

Note: ProjectSlug is missing omitempty in the JSON tag unlike ProjectUID. This inconsistency means empty ProjectSlug will serialize as "project_slug":"" while empty ProjectUID will be omitted.

🔧 Consider adding omitempty for consistency
-	ProjectUID             string     `json:"project_uid"`
-	ProjectSlug            string     `json:"project_slug"`
+	ProjectUID             string     `json:"project_uid,omitempty"`
+	ProjectSlug            string     `json:"project_slug,omitempty"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/domain/models/event_models.go` around lines 1216 - 1217,
PastMeetingAttachmentEventData has inconsistent JSON tags: ProjectUID uses
`json:"project_uid,omitempty"` but ProjectSlug is `json:"project_slug"` causing
empty ProjectSlug to serialize while ProjectUID is omitted; update the
ProjectSlug struct tag to `json:"project_slug,omitempty"` to match ProjectUID
(locate the fields ProjectUID and ProjectSlug inside the
PastMeetingAttachmentEventData struct) and run/adjust any serialization tests
that assume the previous behavior.
scripts/reindex_meetings/main.go (1)

152-152: Unused parameter natsURL in function signature.

The second parameter natsURL is named _ indicating it's unused. If it's not needed, consider removing it from the function signature for clarity.

🔧 Suggested fix
-func run(ctx context.Context, nc *nats.Conn, _, osURL string, requestedTypes []string, reindex bool) int {
+func run(ctx context.Context, nc *nats.Conn, osURL string, requestedTypes []string, reindex bool) int {

And update the call site at line 147:

-	exitCode := run(ctx, nc, natsURL, osURL, requestedTypes, *reindex)
+	exitCode := run(ctx, nc, osURL, requestedTypes, *reindex)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/reindex_meetings/main.go` at line 152, The function signature for run
currently includes an unused second parameter named `_` (intended for natsURL);
remove that unused parameter from the run function signature and update every
call site that invokes run (where natsURL was previously passed) to stop passing
that argument so the parameter list matches; locate the run function and its
invocations by the symbol run(ctx context.Context, nc *nats.Conn, ...) and
adjust both definition and callers accordingly to eliminate the unused natsURL
parameter.
scripts/hooks/pre-commit (1)

29-41: Minor: Leading newline in missing_license output.

The string is built with \n $f which prepends a newline before each file. On Line 45, printf "%b\n" will output a leading blank line before the first file path. This is cosmetic but could be cleaner.

🔧 Suggested fix to avoid leading newline
 missing_license=""
 for f in $staged_checkable_files; do
   # Skip excluded paths
   case "$f" in
     gen/*|cmd/meeting-api/kodata/*)
       continue
       ;;
   esac

   if ! grep -qF "$COPYRIGHT" "$f"; then
-    missing_license="$missing_license\n  $f"
+    if [ -z "$missing_license" ]; then
+      missing_license="  $f"
+    else
+      missing_license="$missing_license\n  $f"
+    fi
   fi
 done
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/hooks/pre-commit` around lines 29 - 41, The current loop appends "\n 
$f" to missing_license which produces a leading blank line when printed; change
the append logic in the loop that iterates over staged_checkable_files so the
first file is added without the leading newline (e.g. check if missing_license
is empty and set missing_license="  $f" for the first match, otherwise append
"\n  $f"), leaving the grep -qF "$COPYRIGHT" check and the printf "%b\n" usage
intact; locate the variable missing_license and the for f in
$staged_checkable_files loop to apply this conditional append fix.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@internal/domain/models/event_models.go`:
- Around line 1216-1217: PastMeetingAttachmentEventData has inconsistent JSON
tags: ProjectUID uses `json:"project_uid,omitempty"` but ProjectSlug is
`json:"project_slug"` causing empty ProjectSlug to serialize while ProjectUID is
omitted; update the ProjectSlug struct tag to `json:"project_slug,omitempty"` to
match ProjectUID (locate the fields ProjectUID and ProjectSlug inside the
PastMeetingAttachmentEventData struct) and run/adjust any serialization tests
that assume the previous behavior.

In `@scripts/hooks/pre-commit`:
- Around line 29-41: The current loop appends "\n  $f" to missing_license which
produces a leading blank line when printed; change the append logic in the loop
that iterates over staged_checkable_files so the first file is added without the
leading newline (e.g. check if missing_license is empty and set
missing_license="  $f" for the first match, otherwise append "\n  $f"), leaving
the grep -qF "$COPYRIGHT" check and the printf "%b\n" usage intact; locate the
variable missing_license and the for f in $staged_checkable_files loop to apply
this conditional append fix.

In `@scripts/reindex_meetings/main.go`:
- Line 152: The function signature for run currently includes an unused second
parameter named `_` (intended for natsURL); remove that unused parameter from
the run function signature and update every call site that invokes run (where
natsURL was previously passed) to stop passing that argument so the parameter
list matches; locate the run function and its invocations by the symbol run(ctx
context.Context, nc *nats.Conn, ...) and adjust both definition and callers
accordingly to eliminate the unused natsURL parameter.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1045da68-14e7-44d3-b9a8-e192fd2c0186

📥 Commits

Reviewing files that changed from the base of the PR and between 57764a5 and a9b326b.

⛔ Files ignored due to path filters (9)
  • gen/http/cli/meeting_service/cli.go is excluded by !**/gen/**
  • gen/http/meeting_service/client/cli.go is excluded by !**/gen/**
  • gen/http/meeting_service/client/types.go is excluded by !**/gen/**
  • gen/http/meeting_service/server/types.go is excluded by !**/gen/**
  • gen/http/openapi.json is excluded by !**/gen/**
  • gen/http/openapi.yaml is excluded by !**/gen/**
  • gen/http/openapi3.json is excluded by !**/gen/**
  • gen/http/openapi3.yaml is excluded by !**/gen/**
  • gen/meeting_service/service.go is excluded by !**/gen/**
📒 Files selected for processing (14)
  • cmd/meeting-api/api_itx_meetings.go
  • cmd/meeting-api/eventing/attachment_event_handler.go
  • cmd/meeting-api/eventing/kv_helpers.go
  • cmd/meeting-api/eventing/participant_event_handler.go
  • cmd/meeting-api/eventing/summary_event_handler.go
  • design/itx_types.go
  • design/meeting-svc.go
  • internal/domain/models/event_models.go
  • internal/domain/models/itx_meeting.go
  • internal/service/itx/meeting_service.go
  • pkg/models/itx/meetings.go
  • scripts/hooks/pre-commit
  • scripts/reindex_meetings/README.md
  • scripts/reindex_meetings/main.go
💤 Files with no reviewable changes (1)
  • cmd/meeting-api/eventing/participant_event_handler.go

prabodhcs
prabodhcs previously approved these changes Apr 17, 2026
Copilot AI review requested due to automatic review settings May 4, 2026 16:23
@andrest50
Copy link
Copy Markdown
Contributor Author

There is an issue with the dependabot config which I'll fix in a separate PR.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 15 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/service/itx/meeting_service.go
Copilot AI review requested due to automatic review settings May 7, 2026 16:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 15 changed files in this pull request and generated no new comments.

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.

3 participants