Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add a feedback form #1751

Merged
merged 2 commits into from
Sep 20, 2024
Merged

feat: Add a feedback form #1751

merged 2 commits into from
Sep 20, 2024

Conversation

zusorio
Copy link
Member

@zusorio zusorio commented Sep 4, 2024

Add a feedback form that can be triggered after terminating a session, on a session card, in regular intervals, and in the footer. Feedback can optionally contain freeform text and include the users contact information. Feedback includes an anonymized version of any associated sessions.

Closes #1742

Copy link

github-actions bot commented Sep 4, 2024

A Storybook preview is available for commit 0af0f0b.
➡️ View Storybook
➡️ View Chromatic build
✅ Captured 41 snapshots. No changes detected.

Copy link

codecov bot commented Sep 4, 2024

Codecov Report

Attention: Patch coverage is 89.23077% with 21 lines in your changes missing coverage. Please review.

Project coverage is 84.31%. Comparing base (9715d90) to head (d302c11).
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
backend/capellacollab/core/email/send.py 26.92% 19 Missing ⚠️
backend/capellacollab/feedback/util.py 96.29% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1751      +/-   ##
==========================================
+ Coverage   84.18%   84.31%   +0.13%     
==========================================
  Files         186      193       +7     
  Lines        6159     6344     +185     
  Branches      677      693      +16     
==========================================
+ Hits         5185     5349     +164     
- Misses        826      846      +20     
- Partials      148      149       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@zusorio zusorio force-pushed the feedback-form branch 4 times, most recently from 09e1541 to 516d96a Compare September 11, 2024 16:37
@zusorio zusorio marked this pull request as ready for review September 11, 2024 16:37
@MoritzWeber0
Copy link
Member

Thanks for the PR! I hope that I'll find some time tomorrow to review it :)

@zusorio zusorio force-pushed the feedback-form branch 3 times, most recently from 85c299a to 3314044 Compare September 12, 2024 09:22
@zusorio
Copy link
Member Author

zusorio commented Sep 12, 2024

Note that the switch to Material Symbols in #1798 changed the sentiment icons. The names do still exist, but look more intense. If it's merged, the icons here should be updated as following:
sentiment_very_dissatisfied -> sentiment_dissatisfied
sentiment_very_satisfied -> sentiment_satisfied

@zusorio
Copy link
Member Author

zusorio commented Sep 12, 2024

Note that the switch to Material Symbols in #1798 changed the sentiment icons. The names do still exist, but look more intense. If it's merged, the icons here should be updated as following: sentiment_very_dissatisfied -> sentiment_dissatisfied sentiment_very_satisfied -> sentiment_satisfied

This has been done now

@zusorio
Copy link
Member Author

zusorio commented Sep 16, 2024

I've added tracking for where the feedback dialog was triggered

@zusorio zusorio force-pushed the feedback-form branch 2 times, most recently from 2c60f88 to 77fdf0e Compare September 16, 2024 15:11
Add a feedback form that can be triggered after terminating a session, on a session card, in regular
intervals, and in the footer. Feedback can optionally contain freeform text and include the users
contact information. Feedback includes an anonymized version of any associated sessions.

Closes #1742

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

@DSD-DBS DSD-DBS deleted a comment from github-actions bot Sep 19, 2024
@@ -44,6 +44,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-backend
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzt4Lr33TEe84pZZ-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzt4Lr33TEe84pZZ&open=AZIMSzt4Lr33TEe84pZZ&pullRequest=1751">SonarCloud</a></p>
@@ -30,7 +30,8 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-backend-postgres
{{ if .Values.docker.images.postgres }}
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzvZLr33TEe84pZb-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzvZLr33TEe84pZb&open=AZIMSzvZLr33TEe84pZb&pullRequest=1751">SonarCloud</a></p>
@@ -21,6 +21,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-docs
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzzbLr33TEe84pZw-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzzbLr33TEe84pZw&open=AZIMSzzbLr33TEe84pZw&pullRequest=1751">SonarCloud</a></p>
@@ -39,6 +39,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-frontend
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzw5Lr33TEe84pZj-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzw5Lr33TEe84pZj&open=AZIMSzw5Lr33TEe84pZj&pullRequest=1751">SonarCloud</a></p>
@@ -35,6 +35,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: grafana
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzy2Lr33TEe84pZu-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzy2Lr33TEe84pZu&open=AZIMSzy2Lr33TEe84pZu&pullRequest=1751">SonarCloud</a></p>
@@ -41,6 +41,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-guacamole-guacamole
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzwILr33TEe84pZf-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzwILr33TEe84pZf&open=AZIMSzwILr33TEe84pZf&pullRequest=1751">SonarCloud</a></p>
@@ -39,6 +39,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-guacamole-guacd
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzwgLr33TEe84pZh-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzwgLr33TEe84pZh&open=AZIMSzwgLr33TEe84pZh&pullRequest=1751">SonarCloud</a></p>
@@ -35,6 +35,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-guacamole-postgres
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzvwLr33TEe84pZd-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzvwLr33TEe84pZd&open=AZIMSzvwLr33TEe84pZd&pullRequest=1751">SonarCloud</a></p>
@@ -29,6 +29,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: {{ .Release.Name }}-prometheus-nginx
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzyFLr33TEe84pZp-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzyFLr33TEe84pZp&open=AZIMSzyFLr33TEe84pZp&pullRequest=1751">SonarCloud</a></p>
@@ -29,6 +29,7 @@
{{- include "capellacollab.pod.spec" . | indent 6 -}}
containers:
- name: prometheus
{{- include "capellacollab.container.spec" . | indent 10 -}}

Check warning

Code scanning / SonarCloud

Storage limits should be enforced

<!--SONAR_ISSUE_KEY:AZIMSzxnLr33TEe84pZn-->Specify a storage limit for this container. <p>See more on <a href="https://sonarcloud.io/project/issues?id=DSD-DBS_capella-collab-manager&issues=AZIMSzxnLr33TEe84pZn&open=AZIMSzxnLr33TEe84pZn&pullRequest=1751">SonarCloud</a></p>
@DSD-DBS DSD-DBS deleted a comment from github-actions bot Sep 19, 2024

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

- Add SMTP mock for local development (in cluster and in dev-mode)
- Change to newer Python syntax, e.g. `t.Optional` -> `| None`
- Outsource email sending to it's own module, it will be relevant for other parts as well
- Import modules and not classes or functions directly.
- Remove the anonoymity policy and feedback percentage for simplicity and determinism.
- Auto-disable feedback if SMTP is not set, decline enabling with disabled SMTP
- Decline enabling feedback with empty list of recipients
- Reduce the verbosity of the AnonymizedSession. It did include the whole tool config before.
- Rename receivers to recipients.
- Add more Stories and pytests.
- Add storage limits to all containers (suggested by SonarCloud)
- Change some error codes from Server errors to Client errors
- Disable footer feedback button if not logged in.
Copy link
Member

@MoritzWeber0 MoritzWeber0 left a comment

Choose a reason for hiding this comment

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

Great PR, thanks a lot! I had some improvement suggestions and implemented them directly. You can have a look at my commit, it also contains a description of all relevant changes.

Copy link

sonarcloud bot commented Sep 20, 2024

Copy link

This report was generated by comparing 0af0f0b with 9715d90.
If you would like to check difference, please check here.

change detected

ArtifactName: reg

item count
pass 210
change 34
new 14
delete 0
📝 Report

Differences

General Components_Footer_General_desktop.png

actual Actual
expected Expected
difference Difference

General Components_Footer_General_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Readonly Session Success State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Readonly Session Success State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Error State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Error State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Failed Scheduling State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Failed Scheduling State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Killing State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Killing State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Network Issues State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Network Issues State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Pulled State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Pulled State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Pulling State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Pulling State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Queued State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Queued State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Scheduled State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Scheduled State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Shared With User_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Shared With User_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Sharing Enabled_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Sharing Enabled_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Stopped State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Stopped State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Success State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Success State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Unknown State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Unknown State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Warning State Story_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Session Warning State Story_mobile.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Shared Session_desktop.png

actual Actual
expected Expected
difference Difference

Session Components_Active Sessions_Shared Session_mobile.png

actual Actual
expected Expected
difference Difference

New Items

General Components_Footer_With Feedback Enabled_desktop.png

NewItem

General Components_Footer_With Feedback Enabled_mobile.png

NewItem

Session Components_Active Sessions_Session With Feedback Enabled_desktop.png

NewItem

Session Components_Active Sessions_Session With Feedback Enabled_mobile.png

NewItem

Session Components_Feedback_No Sessions_desktop.png

NewItem

Session Components_Feedback_No Sessions_mobile.png

NewItem

Session Components_Feedback_One Session With User Information_desktop.png

NewItem

Session Components_Feedback_One Session With User Information_mobile.png

NewItem

Session Components_Feedback_One Session_desktop.png

NewItem

Session Components_Feedback_One Session_mobile.png

NewItem

Session Components_Feedback_Rating Selected_desktop.png

NewItem

Session Components_Feedback_Rating Selected_mobile.png

NewItem

Session Components_Feedback_Two Sessions_desktop.png

NewItem

Session Components_Feedback_Two Sessions_mobile.png

NewItem

@MoritzWeber0 MoritzWeber0 merged commit 7fc4711 into main Sep 20, 2024
32 checks passed
@MoritzWeber0 MoritzWeber0 deleted the feedback-form branch September 20, 2024 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add form for submitting feedback about a session
2 participants