Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Require id_type for mark-id-verified - #76

Merged
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type
Mar 2, 2026
Merged

Require id_type for mark-id-verified#76
michaelmwu merged 5 commits into
mainfrom
michaelmwu/mark-id-type

Conversation

@michaelmwu

@michaelmwumichaelmwu commented Mar 2, 2026

Copy link
Copy Markdown
Member

Description

  • Added required id_type to /mark-id-verified and wired it through the command handler, contact-selection flow, and CRM update payload.
  • The command now writes cVerifiedIdType (id_type) in addition to existing cIdVerifiedAt and cIdVerifiedBy fields.
  • Updated success feedback to include recorded ID type and added required-arg help text examples.
  • Documented the /mark-id-verified command and field mapping in README.md.

Related Issue

None.

How Has This Been Tested?

Local hooks ran via commit (ruff and mypy passed) and no additional manual tests were executed.

Summary by CodeRabbit

  • Documentation

    • Added comprehensive Discord Bot documentation covering all slash commands, role-based permissions, and command parameters
    • Consolidated Discord slash command documentation references
  • New Features

    • Enhanced ID verification workflow to capture and persist ID type information alongside verification records

@coderabbitai

coderabbitaiBot commented Mar 2, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michaelmwu has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 18 minutes and 31 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ca9738 and 012ce77.

📒 Files selected for processing (2)
  • DISCORD_BOT.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
📝 Walkthrough

Walkthrough

This pull request introduces comprehensive Discord bot documentation and extends the CRM cog's ID verification workflow to support an ID type field. The changes add documentation files for bot commands and permissions, while implementing a new id_type parameter that threads through the mark-ID-verified command pipeline, payload structures, and verification embeds.

Changes

Cohort / File(s)Summary
Documentation
DISCORD_BOT.md, DISCORD_SLASH_COMMANDS.md, README.md
New Discord bot documentation detailing bot overview, role-based permissions, and slash command specifications. Added deprecation notice in DISCORD_SLASH_COMMANDS.md directing to DISCORD_BOT.md. Cross-references added to README.md.
CRM ID Verification Flow
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Extended ID verification workflow with new id_type parameter. Modified mark_id_verified command, _show_mark_id_verified_contact_choices, _mark_id_verified_for_contact, and selection UI classes (MarkIdVerifiedSelectionButton, MarkIdVerifiedSelectionView) to accept and propagate id_type. Added ID_VERIFIED_TYPE_FIELD constant and updated payloads and embeds to include ID type field.

Sequence Diagram(s)

sequenceDiagram
participant User as Discord User
participant Cmd as mark_id_verified Command
participant Show as _show_mark_id_verified_contact_choices
participant View as Selection View
participant Verify as _mark_id_verified_for_contact
participant CRM as CRM Backend
User->>Cmd: /mark-id-verified search_term verified_by id_type
Cmd->>Show: Search for contact, pass id_type
Show->>View: Create selection UI with id_type
View-->>User: Display contact options
User->>View: Select contact
View->>Verify: Call with contact, verified_by, id_type, verified_at
Verify->>Verify: Build payload with id_type
Verify->>CRM: Update contact record with cVerifiedIdType
CRM-->>Verify: Confirmation
Verify->>View: Create embed with ID type display
View-->>User: Show verification result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A hop through the code, a new type takes flight,
ID verification flows with parameter might,
Through commands and selections it threads its way true,
From Discord to CRM, the id_type shines new! 🆔

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 71.43% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title directly and accurately reflects the main change: requiring id_type as a parameter for the mark-id-verified command, which is the core functional change across the codebase.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch michaelmwu/mark-id-type

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
apps/discord_bot/src/five08/discord_bot/cogs/crm.py (1)

2366-2377: Include id_type in audit metadata for completeness.

The success audit event is missing id_type in its metadata, while the command-level audit events include it. For consistency and traceability, consider adding it here as well.

♻️ Suggested improvement
 self._audit_command(
interaction=interaction,
action="crm.mark_id_verified",
result="success",
metadata={
"contact_id": str(contact_id),
"verified_by": verified_by,
"verified_at": verified_at,
+ "id_type": id_type,
},
resource_type="crm_contact",
resource_id=str(contact_id),
)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py` around lines 2366 -
2377, The audit call for success in crm.mark_id_verified is missing the id_type
field; update the metadata passed to self._audit_command (the block that
currently contains "contact_id", "verified_by", "verified_at") to also include
"id_type": id_type so the success event matches the command-level audit entries
and uses the existing id_type variable in scope.
DISCORD_BOT.md (1)

16-21: Clarify Admin-only command placement in permissions list.

Line 19 mentions that mark-id-verified requires Admin, but it's listed under the Steering Committee bullet point, which could be confusing. Consider either moving it to the Admin section or restructuring for clarity.

📝 Suggested restructure
 - `Admin`:
- `/mark-id-verified`
- `Steering Committee`:
- - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others), `mark-id-verified` requires `Admin`.+ - `/kimai-status`, `/link-discord-user`, `/unlinked-discord-users`, `/set-github-username` (for others), `/upload-resume` (for others)
- `Member`:
- `/search-members`, `/get-resume`, `/view-skills`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@DISCORD_BOT.md` around lines 16 - 21, The documentation lists the command
"mark-id-verified" under the "Steering Committee" section while stating it
requires Admin, which is confusing; update DISCORD_BOT.md to either move
"mark-id-verified" into the "Admin" bullet or explicitly annotate it in the
"Steering Committee" list as "mark-id-verified (Admin only)" so the required
role is unambiguous—search for the headings "Admin" and "Steering Committee" and
the command name "mark-id-verified" to locate and correct the
placement/annotation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@apps/discord_bot/src/five08/discord_bot/cogs/crm.py`:
- Around line 2366-2377: The audit call for success in crm.mark_id_verified is
missing the id_type field; update the metadata passed to self._audit_command
(the block that currently contains "contact_id", "verified_by", "verified_at")
to also include "id_type": id_type so the success event matches the
command-level audit entries and uses the existing id_type variable in scope.
In `@DISCORD_BOT.md`:
- Around line 16-21: The documentation lists the command "mark-id-verified"
under the "Steering Committee" section while stating it requires Admin, which is
confusing; update DISCORD_BOT.md to either move "mark-id-verified" into the
"Admin" bullet or explicitly annotate it in the "Steering Committee" list as
"mark-id-verified (Admin only)" so the required role is unambiguous—search for
the headings "Admin" and "Steering Committee" and the command name
"mark-id-verified" to locate and correct the placement/annotation.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 48e6f50 and 5ca9738.

📒 Files selected for processing (4)
  • DISCORD_BOT.md
  • DISCORD_SLASH_COMMANDS.md
  • README.md
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py

@michaelmwu
michaelmwu merged commit ec61b63 into mainMar 2, 2026
5 checks passed
@michaelmwu
michaelmwu deleted the michaelmwu/mark-id-type branch March 2, 2026 10:50
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
michaelmwu added a commit that referenced this pull request Mar 2, 2026
* Require id_type for mark-id-verified (#76)
* feat: require id_type for mark-id-verified
* docs: move slash command docs to linked command reference
* docs: add consolidated Discord bot documentation file
* docs: remove obsolete kimai slash commands
* Handle optional id_type for mark-id-verified compatibility
* Add job rerun endpoint and CLI tooling (#81)
* add rerun endpoint and jobsctl CLI
* Fix rerun payload validation and stabilize jobsctl tests
* fix: confirm overwrite for ID verified fields (#80)
* fix: confirm ID verification overwrite before update
* fix: require overwrite confirmation for single field conflicts
* feat(worker): add jobsctl recent jobs query
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for freeto 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.

1 participant

@michaelmwu