Dashboard-V2
ProfanityBlocker Release Notes |
Hello there,
We are glad to inform you that the latest version Dashboard-V2 of ProfanityBlocker is out. Below is the list of JIRA issues that were part of this upgrade.
Summary -
New Feature
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-171 | Request History csv export (non-discord view) | Allows to download 1K entries from request history against the service licence |
Done | Dashboard | |
PB-89 | Overhaul Profanity Training and False Positive Reporting System | Implement false positive reporting for request history. We no longer store false positives and profanity training data in .csv files in the dashboard filesystem. |
Done | Dashboard | |
PB-51 | DeepSense class thresholds, probability tuning for clients | Interpret probabilities from the class result, and allow users to set sensitivity thresholds for how confident and strict the DeepSense filter is, that the content is bad.
|
Done | Dashboard, DeepSense, Filter |
Improvements
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-167 | Create placeholder users, licences and transaction for guilds and link them - transfer ownership when owner logs in | This further simplifies onboarding as we create a placeholder user, licence and transaction for the guild the bot is in so users can use the free plan without additional action (no need to visit dashboard).
When logging in via Discord, we check owned guilds for matching placeholder licences, create the new discord account and transfer ownership. |
Done | Dashboard | |
PB-129 | Dashboard filter Options for non-discord users | Add licence filter options to non-Discord dashboard. |
Done | Dashboard | |
PB-109 | If Discord serverlist is empty we should try the login again | This also fixes a keyerror when serverlist is empty |
Done | Dashboard | |
PB-91 | Separated OAuth and Django Authentication | . Refactored User and Password Generation Functions: We updated the MakeDiscordOTPUser and MakeDiscordOTPPass functions to ensure they are used correctly for generating random usernames and passwords when creating new user accounts. These functions are not used for authentication purposes. 2. Updated User Authentication Logic: We modified the authenticateuser function to handle the Discord OAuth login flow properly. The function now: 3. Separated OAuth and Django Authentication: We ensured that the Discord OAuth login flow is separate from the Django login flow. The OAuth process does not rely on the user's Django password for authentication, and the user's session is managed independently of the Django password. 5. Session Management: After a successful OAuth login, the user's session is created or updated in a way that is recognized by the Django application, regardless of the user's password in Django. These changes aim to provide a seamless login experience for users who choose to log in via Discord OAuth and to ensure that the application's internal authentication mechanisms (such as password changes through the Django admin) do not interfere with the OAuth login process. |
Done | Dashboard |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-145 | Simplify onboarding for discord |
|
Done | Dashboard, Discord Bot |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-137 | Redis, celery and Kafka - Database optimisations | With the use of the Chrome extension, we have observed a significant increase in the number of requests made to the filter, often reaching a thousand within a 30-minute span. Improvements:
|
Done | Dashboard, Filter |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-131 | DeepSense class thresholds needs request history to store thresholds for request history | Since clients can set probabilities for the class result, reproducing results from false positives will require us to know the class thresholds for the request at the time it was made. Save in request history table (DB). Request history is only kept for 30 days.
|
Done | DeepSense, Filter |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-90 | Better align filter and bot request history recording | Improve synchronization between the filter service and the Discord bot for recording request history. Previously, both the filter service and the Discord bot were independently creating request history entries, resulting in duplicate entries. Furthermore, the fields in these entries did not match, leading to inconsistencies in the displayed data in the request history views. To address this issue, we have implemented a solution. The filter service now includes the request ID it generates, and the Discord bot reads this ID to update the corresponding record with additional information, rather than creating a new entry in the database. This ensures better alignment between the filter service and the Discord bot in recording request history, eliminating duplicate entries and ensuring consistent data in the request history views. |
Done | Discord Bot, Filter |
Tasks
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-186 | Instantly create licences for new bot users | Improved onboarding by creating a service licence on the spot, bypassing our background job which can take a few minutes - our analytics found users adding the bot, immediately sending content into their channel (presumably to test) and removing it when nothing happened (because licence setup in the background hadn't finished/ran yet. |
Done | Celery, Dashboard, Discord Bot |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-142 | Delete request history data after 30 days where there is no linked custom datasets | Reduce clutter by removing request history entries older than 30 days. Dataset entries created from request history stays intact for tracing/integrity - migration required if we want to delete the original request history entry linked to custom datasets, out of scope of this task. |
Done | Dashboard |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-81 | PoC: custom model criteria | At a high level: Implement custom model training per client.
As per |
Done | Dashboard, Discord Premium, Filter, Hybrid, InsightGuard |
Subtasks
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-93 | False Positive Validation | *Enhancements to False Positive Reports Management*
|
Done | Dashboard | |
PB-92 | Train for duplicates in Profanity Training dataset |
Overall, these updates lead to a more reliable and efficient system for detecting duplicates in both client-specific and global datasets, ensuring the integrity of our data import workflow. |
Done | Dashboard |
Bugs
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-170 | Dashboard: address request history train and false positive conditions inconsistencies | Problems:
How they've been addressed:
Genre_id restrictions:
Consistency
These changes ensure that both the main dashboard and the Discord dashboard handle profanity detection training consistently and correctly, improving the overall functionality and user experience of the system. |
Done | Dashboard, DeepSense, Hybrid, InsightGuard |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-135 | maxrequests not updated upon plan change | maxrequests for a licence is not updated dynamically when a licence plan is updated. This means until the application nodes are restarted, request limits are kept at initialisation values. |
Done | Billing, Dashboard, Discord Premium, Filter |
Priority | Key | Summary | Description | Status | Component/s |
---|---|---|---|---|---|
PB-45 | Data too long for request history (request_string, returned_string) | Migrate these columns to a larger type to allow more text for the fields to fix the error with filter service. |
Done | Dashboard, Filter |
Looking for more nitty gritty details? Take a look:
Number of issues resolved: 51 (including private issues)
Looking forward to hear your feedback.
Thanks,
Team ProfanityBlocker