Skip to content

Conversation

@andrest50
Copy link
Contributor

@andrest50 andrest50 commented Oct 2, 2025

Summary

  • Updated past meeting recording and summary enrichers to use object-specific permissions instead of inheriting from parent past meeting object
  • Added new past meeting transcript enricher to store transcripts as separate objects
  • Bumped Helm chart version to 0.4.5

Changes

Permission Model Updates

  • Recording Enricher: Now uses past_meeting_recording_uid and ObjectTypePastMeetingRecording for access/history checks
  • Summary Enricher: Now uses past_meeting_summary_uid and ObjectTypePastMeetingSummary for access/history checks
  • Transcript Enricher: New enricher using past_meeting_transcript_uid and ObjectTypePastMeetingTranscript

New Files

  • internal/enrichers/past_meeting_transcript_enricher.go - New enricher for transcript objects

Modified Files

  • internal/enrichers/past_meeting_recording_enricher.go - Updated permission logic
  • internal/enrichers/past_meeting_summary_enricher.go - Updated permission logic
  • internal/domain/services/indexer_service.go - Registered transcript enricher
  • pkg/constants/messaging.go - Added ObjectTypePastMeetingTranscript constant
  • charts/lfx-v2-indexer-service/Chart.yaml - Version bump to 0.4.5

Ticket

LFXV2-631

🤖 Generated with Claude Code

Updated past meeting recording and summary enrichers to use their own
object type permissions instead of inheriting from past meeting object.

Changes:
- PastMeetingRecordingEnricher: Uses past_meeting_recording_uid and
  ObjectTypePastMeetingRecording for access/history checks
- PastMeetingSummaryEnricher: Uses past_meeting_summary_uid and
  ObjectTypePastMeetingSummary for access/history checks

This allows independent permission management for meeting artifacts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Andres Tobon <[email protected]>
Created new enricher to store meeting transcripts as separate objects
with their own permissions instead of as part of past meeting objects.

Changes:
- Added PastMeetingTranscriptEnricher with object-specific permissions
- Uses past_meeting_transcript_uid for access/history checks
- Added ObjectTypePastMeetingTranscript constant
- Follows same pattern as recording and summary enrichers

This enables independent permission management and indexing for
meeting transcripts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Andres Tobon <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Andres Tobon <[email protected]>
@andrest50 andrest50 requested a review from a team as a code owner October 2, 2025 15:06
Copilot AI review requested due to automatic review settings October 2, 2025 15:06
@coderabbitai
Copy link

coderabbitai bot commented Oct 2, 2025

Walkthrough

Introduces a new PastMeetingTranscript enricher, registers it in the IndexerService, and adds a corresponding object-type constant. Updates access-control logic for past meeting recording and summary enrichers to use recording- and summary-specific UIDs. Also bumps the Helm chart version from 0.4.4 to 0.4.5.

Changes

Cohort / File(s) Change summary
Helm chart version bump
charts/lfx-v2-indexer-service/Chart.yaml
Incremented chart version from 0.4.4 to 0.4.5.
Register new transcript enricher
internal/domain/services/indexer_service.go
Added enrichers.NewPastMeetingTranscriptEnricher() to the enricher registry initialization.
New transcript enricher + constant
internal/enrichers/past_meeting_transcript_enricher.go, pkg/constants/messaging.go
Added PastMeetingTranscriptEnricher with custom access-control defaults and delegation to default enricher; introduced constants.ObjectTypePastMeetingTranscript.
Permission refactor — recording
internal/enrichers/past_meeting_recording_enricher.go
Switched access control from past_meeting UID to past_meeting_recording UID and object type; updated helper to pastMeetingRecordingLevelPermission.
Permission refactor — summary
internal/enrichers/past_meeting_summary_enricher.go
Switched access control from past_meeting UID to past_meeting_summary UID and object type; added pastMeetingSummaryLevelPermission and applied it for defaults.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Producer as Event Producer
  participant Indexer as IndexerService
  participant Registry as EnricherRegistry
  participant PMT as PastMeetingTranscriptEnricher
  participant Def as DefaultEnricher
  participant FGA as AuthZ (FGA Query)

  Producer->>Indexer: Submit transaction (past_meeting_transcript)
  Indexer->>Registry: Resolve enricher for ObjectTypePastMeetingTranscript
  Registry-->>Indexer: PastMeetingTranscriptEnricher
  Indexer->>PMT: EnrichData(body, tx)

  rect rgba(200,235,255,0.3)
    note over PMT: Compute access control
    PMT->>PMT: If past_meeting_transcript_uid present\nbuild UID-based object
    PMT->>PMT: Default relations (viewer/writer) if missing
    PMT->>FGA: Build AccessCheckQuery (if object+relation)
    PMT->>FGA: Build HistoryCheckQuery (if object+relation)
  end

  PMT->>Def: Delegate core enrichment
  Def-->>PMT: Enriched payload
  PMT-->>Indexer: Result
  Indexer-->>Producer: Ack/Result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning The pull request successfully splits past meeting artifacts into distinct object types by introducing specific enrichers and object constants, but it does not create the required NATS KV bucket for transcripts nor ensure recordings represent single-session objects to enable multiple per meeting, leaving key objectives unaddressed. Implement the creation of the NATS KV bucket for transcripts and adjust the recording logic to treat each session as a separate recording object to fully satisfy the linked issue requirements.
✅ Passed checks (4 passed)
Check name Status Explanation
Out of Scope Changes Check ✅ Passed All modifications directly support the intended separation of artifact types and permission model improvements, and the Helm chart version bump is a standard release update, so there are no changes unrelated to the linked issue objectives.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Title Check ✅ Passed The title clearly summarizes the primary change of storing past meeting artifacts as independent objects, which aligns directly with the core modifications in the pull request. It succinctly conveys the intent without extraneous detail and includes a relevant ticket reference for context. A reviewer scanning the history would immediately grasp the main purpose of the changeset. This meets the criteria for a concise and focused pull request title.
Description Check ✅ Passed The pull request description accurately summarizes the changes to permission logic for recording and summary enrichers, adds the new transcript enricher, and notes the Helm chart version bump. It references modified and added files and links to the relevant ticket, clearly reflecting the changes in the pull request. This detailed relation to the diff confirms it is on-topic and relevant.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch andrest/past-meeting-artifacts

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

Copy link

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

This PR refactors the permission model for past meeting artifacts by making recordings, summaries, and transcripts independent objects with their own permissions instead of inheriting from the parent past meeting object.

  • Adds a new transcript enricher to handle transcript objects as separate entities
  • Updates recording and summary enrichers to use object-specific UIDs and permissions
  • Introduces ObjectTypePastMeetingTranscript constant for the new transcript object type

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
pkg/constants/messaging.go Adds new ObjectTypePastMeetingTranscript constant
internal/enrichers/past_meeting_transcript_enricher.go New enricher for handling transcript objects with independent permissions
internal/enrichers/past_meeting_summary_enricher.go Updates to use past_meeting_summary_uid instead of past_meeting_uid
internal/enrichers/past_meeting_recording_enricher.go Updates to use past_meeting_recording_uid instead of past_meeting_uid
internal/domain/services/indexer_service.go Registers the new transcript enricher
charts/lfx-v2-indexer-service/Chart.yaml Version bump to 0.4.5

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@andrest50 andrest50 changed the title [LFXV2-614] Store past meeting artifacts as independent objects [LFXV2-631] Store past meeting artifacts as independent objects Oct 2, 2025
@andrest50 andrest50 requested a review from jordane October 2, 2025 15:37
@andrest50 andrest50 merged commit a0c29af into main Oct 2, 2025
5 checks passed
@andrest50 andrest50 deleted the andrest/past-meeting-artifacts branch October 2, 2025 19:25
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