Skip to content

feat(slack): add BotInteraction model and reaction feedback handler#5035

Open
mohityadav8 wants to merge 13 commits into
OWASP:mainfrom
mohityadav8:feat/nestbot-bot-interaction
Open

feat(slack): add BotInteraction model and reaction feedback handler#5035
mohityadav8 wants to merge 13 commits into
OWASP:mainfrom
mohityadav8:feat/nestbot-bot-interaction

Conversation

@mohityadav8

Copy link
Copy Markdown
Collaborator

Proposed change

Resolves #908

This PR implements the feedback loop for NestBot AI replies by adding:

  1. BotInteraction model — logs every AI-generated reply with fields for channel_id, user_id, user_message, bot_response, intent_category, confidence_score, thumbs_up, tokens_used, and slack_reply_ts
  2. Migration 0023_bot_interaction — creates the slack_bot_interactions table
  3. reaction_added event handler (bot_feedback.py) — listens for 👍/👎 reactions on bot replies and updates the thumbs_up field on the matching BotInteraction row
  4. Hook in message_auto_reply.py — after chat_postMessage, creates a BotInteraction row with the reply's ts so reactions can be matched back
  5. Django adminBotInteraction is registered with search, filter, and readonly fields
  6. Tests — full pytest coverage for model, handler, and service hook

Checklist

  • Required: I followed the contributing workflow
  • Required: I verified that my code works as intended and resolves the issue as described
  • Required: I ran make check-test locally: all warnings addressed, tests passed
  • I used AI for code, documentation, tests, or communication related to this PR

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds a BotInteraction model and migration, persists Slack AI-reply records after posting, records 👍/👎 feedback through a reaction_added handler, wires that handler into Slack event setup, registers the model in admin, and updates tests for the new interaction flow.

Changes

Bot Interaction Persistence and Reaction Feedback

Layer / File(s) Summary
BotInteraction model and migration
backend/apps/slack/migrations/0023_bot_interaction.py, backend/apps/slack/models/bot_interaction.py, backend/apps/slack/models/__init__.py
BotInteraction extends TimestampedModel with Slack channel/user IDs, message content, optional intent and confidence fields, nullable thumbs_up, tokens_used, and slack_reply_ts. The migration creates slack_bot_interactions, and the model is exported from the package initializer.
Auto-reply persistence
backend/apps/slack/services/message_auto_reply.py, backend/tests/unit/apps/slack/services/message_auto_reply_test.py
Imports BotInteraction, reads the Slack ts from chat_postMessage, and creates a BotInteraction record after a successful bot reply. The tests assert the created record fields and timestamp handling.
BotFeedback reaction handler
backend/apps/slack/events/reaction_added/__init__.py, backend/apps/slack/events/reaction_added/bot_feedback.py, backend/apps/slack/events/__init__.py, backend/apps/slack/events/member_joined_channel/__init__.py
BotFeedback.handle_event accepts 👍/👎 reactions on message items, matches them to BotInteraction by slack_reply_ts, updates thumbs_up, saves the field change, and logs the result. The handler is imported during Slack event configuration.
BotInteraction Django admin
backend/apps/slack/admin/bot_interaction.py, backend/apps/slack/admin/__init__.py
Defines BotInteractionAdmin field grouping, list display, filters, read-only fields, search fields, and the short_message display helper, then registers and exports the admin class.
Unit tests
backend/tests/unit/apps/slack/events/reaction_added/__init__.py, backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py
Covers BotInteraction formatting and defaults, BotFeedback updates and ignored cases, and the new reaction-added test package docstring.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested labels

backend, backend-tests

Suggested reviewers

  • kasya
  • arkid15r
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding BotInteraction and a reaction feedback handler.
Description check ✅ Passed The description matches the implemented Slack feedback-loop changes and related tests.
Linked Issues check ✅ Passed The PR implements the thumbs up/down feedback loop requested in [#908] by storing bot interactions and handling reaction_added events.
Out of Scope Changes check ✅ Passed The changes stay focused on Slack bot interaction storage, feedback handling, admin registration, and tests, with no clear unrelated additions.
Docstring Coverage ✅ Passed Docstring coverage is 97.22% which is sufficient. The required threshold is 80.00%.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@mohityadav8 mohityadav8 force-pushed the feat/nestbot-bot-interaction branch from e10eddf to baa224b Compare June 23, 2026 22:57
@mohityadav8 mohityadav8 marked this pull request as ready for review June 23, 2026 22:59

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

4 issues found and verified against the latest diff

Confidence score: 2/5

  • In backend/apps/slack/events/reaction_added/bot_feedback.py, reaction matching is keyed only by ts, so identical Slack timestamps across channels can attach 👍/👎 to the wrong interaction (or fail on duplicates), which is a direct feedback-integrity risk in production — scope the lookup by both channel and timestamp before merging.
  • In backend/apps/slack/models/bot_interaction.py, slack_reply_ts is used for reaction correlation but has no DB index, so lookup cost will degrade toward full-table scans as data grows and can slow or stall event handling — add an index on slack_reply_ts (or a composite index matching the final lookup) before merge.
  • In backend/apps/slack/migrations/0023_bot_interaction.py, allowing nullable/empty slack_reply_ts permits rows that can never be matched from reaction_added, creating permanently un-linkable feedback records — make the field required (or enforce a safe backfill/validation path) before merging.
  • In backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py, the fallback test currently checks falsy-response behavior rather than the missing-ts path, so it can miss regressions in timestamp extraction — change the fixture to {"ok": True} to verify the intended branch and de-risk the fix.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="backend/apps/slack/migrations/0023_bot_interaction.py">

<violation number="1" location="backend/apps/slack/migrations/0023_bot_interaction.py:40">
P2: `slack_reply_ts` should not be optional because it is the key used to attach 👍/👎 feedback. Allowing empty values stores interactions that can never be correlated back from reactions.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread backend/apps/slack/events/reaction_added/bot_feedback.py Outdated
Comment thread backend/apps/slack/models/bot_interaction.py
(
"intent_category",
models.CharField(
blank=True,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: slack_reply_ts should not be optional because it is the key used to attach 👍/👎 feedback. Allowing empty values stores interactions that can never be correlated back from reactions.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At backend/apps/slack/migrations/0023_bot_interaction.py, line 40:

<comment>`slack_reply_ts` should not be optional because it is the key used to attach 👍/👎 feedback. Allowing empty values stores interactions that can never be correlated back from reactions.</comment>

<file context>
@@ -0,0 +1,83 @@
+                (
+                    "intent_category",
+                    models.CharField(
+                        blank=True,
+                        default="",
+                        max_length=64,
</file context>

Comment thread backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 11

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
backend/tests/unit/apps/slack/services/message_auto_reply_test.py (1)

36-43: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Mock message fixture missing raw_data attribute.

The service implementation accesses message.raw_data.get("user", "") to extract the user ID, but the mock_message fixture doesn't set raw_data. This causes the tests to pass with a Mock object as user_id instead of validating the actual string value.

Compare with the fixture in bot_feedback_test.py line 214, which correctly sets:

message.raw_data = {"user": "U789"}
🔧 Proposed fix
     `@pytest.fixture`
     def mock_message(self, mock_conversation):
         """Mock message object."""
         message = Mock(spec=Message)
         message.id = 1
         message.slack_message_id = "1234567890.123456"
         message.text = "What is OWASP?"
+        message.raw_data = {"user": "U123456"}
         message.conversation = mock_conversation
         return message
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@backend/tests/unit/apps/slack/services/message_auto_reply_test.py` around
lines 36 - 43, The mock_message method is missing the raw_data attribute that
the service implementation accesses via message.raw_data.get("user", ""). Add a
raw_data dictionary attribute to the Mock message object containing a "user" key
with a user ID string value (such as "U789"), similar to how it's properly
configured in the bot_feedback_test.py fixture at line 214. This ensures the
tests validate the actual string user_id value instead of passing a Mock object.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@backend/apps/slack/admin/__init__.py`:
- Line 8: The file is missing a trailing newline at the end, which is required
by PEP 8 and checked by Ruff W292. Add a newline character at the very end of
the file after the import statement for WorkspaceAdmin to comply with the PEP 8
style guide.

In `@backend/apps/slack/admin/bot_interaction.py`:
- Around line 73-76: In the short_message method, first update the docstring to
use imperative mood instead of descriptive mood (e.g., "Truncate" or "Return
truncated" instead of "Truncated"). Second, extract the magic number 60 as a
named constant at the module or class level (e.g., MAX_MESSAGE_LENGTH = 60) and
use that constant in place of the hardcoded value. Third, add a None check for
obj.user_message before attempting to slice it to prevent potential TypeError if
the field is ever null, handling the null case appropriately (returning empty
string or a default value).
- Line 80: The file is missing a trailing newline at the end, which violates PEP
8 standards and triggers the Ruff W292 linting rule. Add a newline character at
the very end of the file after the last line of code to comply with static
analysis requirements.

In `@backend/apps/slack/events/reaction_added/bot_feedback.py`:
- Line 22: Remove trailing whitespace from the blank lines in this file. The
lines 22, 26, and 30 contain only whitespace characters (spaces or tabs) which
cause Ruff W293 violations; delete all trailing spaces on these blank lines
while preserving the blank lines themselves (keep the newlines) to pass
pre-commit checks.
- Around line 45-47: The BotInteraction.objects.get() call on line 45 queries
using slack_reply_ts, which is not a unique field in the model contract, so it
can raise MultipleObjectsReturned when duplicate rows exist. This exception is
not currently being caught, causing feedback processing to fail. Either add a
try-except block to catch the MultipleObjectsReturned exception alongside the
DoesNotExist exception and handle it gracefully (similar to the non-bot message
case), or switch to using .filter() with slack_reply_ts and handle the case
where multiple objects are returned by selecting the most recent interaction or
another disambiguating field. Ensure the fix prevents updating the wrong
interaction when collisions occur.

In `@backend/apps/slack/models/bot_interaction.py`:
- Around line 52-58: The slack_reply_ts field in the bot_interaction model is
used for matching reaction_added events but lacks database indexing, causing
full table scans as data grows. Add the db_index=True parameter to the
slack_reply_ts CharField definition to create a database index on this field,
which will significantly improve lookup performance for feedback correlation
operations.

In `@backend/apps/slack/services/message_auto_reply.py`:
- Around line 58-64: The BotInteraction.objects.create() call can fail after
chat_postMessage succeeds, causing the entire method to raise an exception
despite the reply being successfully sent. Wrap the
BotInteraction.objects.create() statement in a try-except block to isolate
database persistence failures from the reply path. In the except block, log the
error appropriately without re-raising the exception, ensuring that database
creation failures do not trigger job retries when the actual Slack message reply
has already succeeded.

In `@backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py`:
- Line 324: The file is missing a trailing newline character at the end, which
causes a POSIX compliance warning. Add a blank newline at the very end of the
file after the last assertion statement (the line containing assert
kwargs["slack_reply_ts"] == "") to ensure the file properly terminates with a
newline character.
- Line 1: The test directory containing bot_feedback_test.py is missing an
__init__ file, which prevents Python from recognizing it as a package and causes
the pipeline to fail. Create an empty __init__ file in the same directory as
bot_feedback_test.py to properly establish it as a Python package and allow the
test runner to discover and execute the tests correctly.
- Around line 143-151: In the test_thumbs_down_sets_false method, update the
mock_interaction.save assertion to include verification of the update_fields
argument for consistency with test_thumbs_up_sets_true. Change the
mock_interaction.save.assert_called_once() call to
assert_called_once_with(update_fields=["thumbs_up", "nest_updated_at"]) to match
the pattern and level of detail used in the corresponding thumbs-up test.

In `@backend/tests/unit/apps/slack/services/message_auto_reply_test.py`:
- Line 230: The file is missing a trailing newline at the end, which violates
POSIX standards and triggers the W292 linter warning. Add a newline character at
the very end of the file, after the last assertion statement
mock_client.chat_postMessage.assert_not_called().

---

Outside diff comments:
In `@backend/tests/unit/apps/slack/services/message_auto_reply_test.py`:
- Around line 36-43: The mock_message method is missing the raw_data attribute
that the service implementation accesses via message.raw_data.get("user", "").
Add a raw_data dictionary attribute to the Mock message object containing a
"user" key with a user ID string value (such as "U789"), similar to how it's
properly configured in the bot_feedback_test.py fixture at line 214. This
ensures the tests validate the actual string user_id value instead of passing a
Mock object.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: aac0327b-2914-445e-a67d-59b791efb60b

📥 Commits

Reviewing files that changed from the base of the PR and between ece391b and baa224b.

📒 Files selected for processing (12)
  • backend/apps/slack/admin/__init__.py
  • backend/apps/slack/admin/bot_interaction.py
  • backend/apps/slack/events/__init__.py
  • backend/apps/slack/events/member_joined_channel/__init__.py
  • backend/apps/slack/events/reaction_added/__init__.py
  • backend/apps/slack/events/reaction_added/bot_feedback.py
  • backend/apps/slack/migrations/0023_bot_interaction.py
  • backend/apps/slack/models/__init__.py
  • backend/apps/slack/models/bot_interaction.py
  • backend/apps/slack/services/message_auto_reply.py
  • backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py
  • backend/tests/unit/apps/slack/services/message_auto_reply_test.py

Comment thread backend/apps/slack/admin/__init__.py Outdated
Comment thread backend/apps/slack/admin/bot_interaction.py Outdated
Comment thread backend/apps/slack/admin/bot_interaction.py Outdated
Comment thread backend/apps/slack/events/reaction_added/bot_feedback.py Outdated
Comment thread backend/apps/slack/events/reaction_added/bot_feedback.py Outdated
Comment thread backend/apps/slack/services/message_auto_reply.py Outdated
Comment thread backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py Outdated
Comment thread backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py Outdated
Comment thread backend/tests/unit/apps/slack/services/message_auto_reply_test.py Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 issues found across 1 file (changes from recent commits).

Requires human review: Auto-approval blocked by 4 unresolved issues from previous reviews.

Re-trigger cubic

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
backend/apps/slack/models/bot_interaction.py (1)

17-59: 🧹 Nitpick | 🔵 Trivial

Consider a data-retention/PII policy for stored interactions.

BotInteraction persists user_id, user_message, and bot_response indefinitely. Since these are user-identifiable content captured for a feedback loop, consider documenting/implementing a retention or purge policy (and confirming alignment with GDPR/CCPA) so this table doesn't accumulate PII without bound.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@backend/apps/slack/models/bot_interaction.py` around lines 17 - 59, Add a
retention/purge policy for BotInteraction, since the model stores user_id,
user_message, and bot_response as user-identifiable content. Update the
BotInteraction model or its related cleanup path to support scheduled deletion
or anonymization after a defined period, and document the policy/PII handling so
the storage approach is explicitly aligned with GDPR/CCPA expectations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@backend/apps/slack/models/bot_interaction.py`:
- Around line 17-59: Add a retention/purge policy for BotInteraction, since the
model stores user_id, user_message, and bot_response as user-identifiable
content. Update the BotInteraction model or its related cleanup path to support
scheduled deletion or anonymization after a defined period, and document the
policy/PII handling so the storage approach is explicitly aligned with GDPR/CCPA
expectations.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 976f18aa-cb63-4e4b-9990-58c37cee2128

📥 Commits

Reviewing files that changed from the base of the PR and between df760cb and f074326.

📒 Files selected for processing (8)
  • backend/apps/slack/admin/__init__.py
  • backend/apps/slack/admin/bot_interaction.py
  • backend/apps/slack/events/reaction_added/bot_feedback.py
  • backend/apps/slack/migrations/0023_bot_interaction.py
  • backend/apps/slack/models/bot_interaction.py
  • backend/apps/slack/services/message_auto_reply.py
  • backend/tests/unit/apps/slack/events/reaction_added/bot_feedback_test.py
  • backend/tests/unit/apps/slack/services/message_auto_reply_test.py

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 24, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 issues found across 8 files (changes from recent commits).

Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.

Re-trigger cubic

Removed comment about generated migration for BotInteraction model.
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 25, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 issues found across 2 files (changes from recent commits).

Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.

Re-trigger cubic

@arkid15r arkid15r left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Please fix pre-commit before requesting review.

@arkid15r arkid15r marked this pull request as draft June 25, 2026 19:20

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="backend/apps/slack/migrations/0023_bot_interaction.py">

<violation number="1" location="backend/apps/slack/migrations/0023_bot_interaction.py:40">
P2: `slack_reply_ts` should not be optional because it is the key used to attach 👍/👎 feedback. Allowing empty values stores interactions that can never be correlated back from reactions.</violation>
</file>

<file name="backend/tests/unit/apps/slack/services/message_auto_reply_test.py">

<violation number="1" location="backend/tests/unit/apps/slack/services/message_auto_reply_test.py:100">
P2: BotInteraction.objects.create is asserted with assert_called_once() but arguments are not verified; this could miss incorrect data being persisted for the new feedback loop model.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread backend/tests/unit/apps/slack/services/message_auto_reply_test.py Outdated
mohityadav8 and others added 2 commits June 26, 2026 01:29
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 25, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 issues found across 6 files (changes from recent commits).

Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.

Re-trigger cubic

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

0 issues found across 1 file (changes from recent commits).

Requires human review: Auto-approval blocked by 1 unresolved issue from previous reviews.

Re-trigger cubic

@mohityadav8 mohityadav8 marked this pull request as ready for review June 25, 2026 20:56
@mohityadav8 mohityadav8 requested a review from arkid15r June 25, 2026 20:56
@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.75362% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 98.71%. Comparing base (e925b6f) to head (55516ac).

Files with missing lines Patch % Lines
backend/apps/slack/admin/bot_interaction.py 80.00% 3 Missing ⚠️
backend/apps/slack/services/message_auto_reply.py 75.00% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #5035      +/-   ##
==========================================
- Coverage   98.74%   98.71%   -0.03%     
==========================================
  Files         539      542       +3     
  Lines       17069    17137      +68     
  Branches     2421     2427       +6     
==========================================
+ Hits        16854    16917      +63     
- Misses        123      128       +5     
  Partials       92       92              
Flag Coverage Δ
backend 99.41% <92.75%> (-0.04%) ⬇️
frontend 96.71% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...d/apps/slack/events/reaction_added/bot_feedback.py 100.00% <100.00%> (ø)
backend/apps/slack/models/bot_interaction.py 100.00% <100.00%> (ø)
backend/apps/slack/services/message_auto_reply.py 94.44% <75.00%> (-5.56%) ⬇️
backend/apps/slack/admin/bot_interaction.py 80.00% <80.00%> (ø)

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e925b6f...55516ac. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OWASP NestBot AI Assistant

2 participants