Skip to content

Conversation

@asithade
Copy link
Contributor

@asithade asithade commented Sep 9, 2025

Summary

  • Fix meeting route path from /meeting/:id to /meetings/:id for consistency across the application
  • Improve committee member registration counting logic to properly calculate individual vs committee registrants
  • Add robust error handling for committee enrichment failures to prevent API crashes
  • Reduce access check logging verbosity from info to debug level for cleaner logs
  • Update documentation to reflect correct route patterns
  • Clean up HTML formatting for meeting join buttons

Test plan

  • Verify public meeting routes work correctly with new /meetings/:id path
  • Test registration counting displays accurate numbers for individual and committee members
  • Confirm committee enrichment failures are handled gracefully
  • Validate access check logging operates at appropriate debug level
  • Check meeting join buttons display properly without formatting issues

Resolves LFXV2-417

- Consolidate MeetingCommittee and MeetingCommitteePayload interfaces
- Add committee name enrichment when fetching meetings
- Update committee modal to handle voting status configurations
- Fix various UI components to handle updated committee structure
- Improve committee data display across meeting components

LFXV2-448

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

Signed-off-by: Asitha de Silva <[email protected]>
- Add writer permission override option to ApiMockHelper.setupProjectSlugMock()
- Add comprehensive tests for users without write permissions
- Add writer property to mock project data for permission testing
- Restructure tests with permission-based describe blocks
- Fix GitHub Actions e2e workflow to use exit codes instead of .last-run.json
- Test Quick Actions menu visibility based on permissions
- Test empty state buttons (Create Meeting, Add Committee) are hidden for read-only
- Test read-only users can still access all view-only functionality
- Test responsive design for read-only users

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

Signed-off-by: Asitha de Silva <[email protected]>
- Add composite action .github/actions/setup-playwright/action.yml
- Cache browser binaries based on OS and Playwright version
- Install browsers only on cache miss, OS deps only on cache hit
- Support selective browser installation (all, chromium, firefox, mobile-chrome)
- Update e2e-tests.yml workflow to use new composite action
- Reduce CI/CD pipeline time by avoiding redundant browser downloads

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

Signed-off-by: Asitha de Silva <[email protected]>
- Fix meeting route path from /meeting/:id to /meetings/:id for consistency
- Improve committee member registration counting logic
- Add error handling for committee enrichment failures
- Reduce access check logging verbosity to debug level
- Update documentation to reflect correct route patterns
- Clean up HTML formatting for meeting join buttons

LFXV2-417

Signed-off-by: Asitha de Silva <[email protected]>
Copilot AI review requested due to automatic review settings September 9, 2025 17:43
@asithade asithade requested a review from jordane as a code owner September 9, 2025 17:43
@coderabbitai
Copy link

coderabbitai bot commented Sep 9, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Caution

Review failed

The pull request is closed.

Walkthrough

Updated meeting page route from /meeting/:id to /meetings/:id across client and docs; adjusted return URL computation accordingly. Refactored template buttons to use label attribute. Fixed committee modal status comparison by flattening. Revised registrant counting logic in controller. Added guarded committee enrichment with warnings. Adjusted access-check logging details and level.

Changes

Cohort / File(s) Summary
Route path rename
apps/lfx-pcc/src/app/modules/meeting/meeting.component.ts, docs/architecture/backend/public-meetings.md
Changed route/URL from /meeting/:id to /meetings/:id; updated return URL computation and documentation/middleware examples accordingly.
Template button label usage
apps/lfx-pcc/src/app/modules/meeting/meeting.component.html
Rewrote two lfx-button usages to single-line tags using the label attribute instead of inner text; attributes unchanged.
Committee modal voting status comparison
apps/lfx-pcc/src/app/modules/project/meetings/components/meeting-committee-modal/meeting-committee-modal.component.ts
Flattened allowed_voting_statuses before comparison; handles undefined entries; no other logic changes.
Registrant counting in controller
apps/lfx-pcc/src/server/controllers/meeting.controller.ts
individual_registrants_count now computed as total registrants minus committee members in both list and detail endpoints.
Access-check logging
apps/lfx-pcc/src/server/services/access-check.service.ts
Logging moved from info to debug; message text and payload structure changed; no access logic changes.
Committee enrichment resilience
apps/lfx-pcc/src/server/services/meeting.service.ts
Wrapped per-committee lookup in try/catch; on failure logs a warning and returns name as undefined instead of aborting.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor C as Client
  participant MS as MeetingService
  participant CS as CommitteeService

  C->>MS: getMeetingCommittees(meetingId)
  loop for each committee_uid
    MS->>CS: fetchCommittee(committee_uid)
    alt success
      CS-->>MS: { uid, name }
      MS->>MS: append { uid, name }
    else failure
      CS-->>MS: throws error
      MS->>MS: log warn {operation, committee_uid, error}
      MS->>MS: append { uid, name: undefined }
    end
  end
  MS-->>C: committees[{ uid, name? }]
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d0cfacc and fdd5164.

📒 Files selected for processing (7)
  • apps/lfx-pcc/src/app/modules/meeting/meeting.component.html (2 hunks)
  • apps/lfx-pcc/src/app/modules/meeting/meeting.component.ts (1 hunks)
  • apps/lfx-pcc/src/app/modules/project/meetings/components/meeting-committee-modal/meeting-committee-modal.component.ts (1 hunks)
  • apps/lfx-pcc/src/server/controllers/meeting.controller.ts (2 hunks)
  • apps/lfx-pcc/src/server/services/access-check.service.ts (1 hunks)
  • apps/lfx-pcc/src/server/services/meeting.service.ts (1 hunks)
  • docs/architecture/backend/public-meetings.md (2 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/LFXV2-417

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

Copy link
Contributor

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 fixes critical meeting route consistency and improves registration counting logic while adding robust error handling for committee operations.

  • Fixed public meeting route path from /meeting/:id to /meetings/:id for consistency across the application
  • Improved committee member registration counting to properly distinguish individual vs committee registrants
  • Added comprehensive error handling for committee enrichment failures to prevent API crashes

Reviewed Changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
packages/shared/src/interfaces/meeting.interface.ts Consolidated meeting committee interfaces and updated field types for consistency
packages/shared/src/constants/meeting.constants.ts Updated platform values to use proper display names instead of lowercase values
docs/architecture/backend/public-meetings.md Fixed route documentation to reflect correct /meetings/:id pattern
apps/lfx-pcc/src/server/services/meeting.service.ts Added committee enrichment logic with robust error handling and improved query filtering
apps/lfx-pcc/src/server/services/access-check.service.ts Reduced logging verbosity from info to debug level for access checks
apps/lfx-pcc/src/server/controllers/meeting.controller.ts Fixed registration counting logic to properly calculate individual vs committee registrants
apps/lfx-pcc/src/app/shared/services/meeting.service.ts Updated query tags to use proper project_uid: prefix format
Multiple frontend components Updated to use consolidated committees interface and corrected form control names
Multiple test files Enhanced test coverage with read-only user permissions and improved CI setup

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

@asithade asithade merged commit ef2b9ce into main Sep 9, 2025
8 checks passed
@asithade asithade deleted the feat/LFXV2-417 branch September 9, 2025 17:46
@github-actions
Copy link

github-actions bot commented Sep 9, 2025

🧹 Deployment Removed

The deployment for PR #75 has been removed.

@github-actions
Copy link

github-actions bot commented Sep 9, 2025

✅ E2E Tests Passed

Browser: chromium
Status: passed

All E2E tests passed successfully.

Test Configuration

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