-
Notifications
You must be signed in to change notification settings - Fork 1
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
Intelligence Service MVP Chat Interface #169
base: feature/java-chat-mvp-intelligence-service
Are you sure you want to change the base?
Intelligence Service MVP Chat Interface #169
Conversation
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The UI looks very pleasant on the eye!
I got a few general points:
- I know Angular is super confusing in the beginning, but try to get used to the new signals (especially input / output).
- There are also quite a few places where you can simplify code (e.g. remove redundant types).
- We decided on using Skeletons for loading-states. You can pass down the loading state into the invididual components and handle them at the bottom. Feel free to check out the User-Page for examples.
webapp/src/app/chat/first-session-card/first-session-card.component.ts
Outdated
Show resolved
Hide resolved
@@ -0,0 +1,28 @@ | |||
@if (isLoading()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In other components we try to go for Skeletons instead of Spinners since they are much easier on the eye in terms of layout shifts.
Try to integrate Skeletons in here too. You can pass the "loading"-state down to the individual components, which can then handle it themselves.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@GODrums
Sure, was thinking of it too - the only problem in this case is that i am not sure what I need to create a Skeleton for in this case: we have one view which is shown if there are no sessions yet and a completely different one for the actual chat interface. What should I then make a Skeleton for when in is "undecided", which view to show (the number of user sessions is loading)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, I see your point here. I was a little confused about how the whole "fetching"-logic is fully contained in the ChatComponent
.
I would have thought of it this way (inspired by the way https://chatgpt.com/ works):
- until the sessions are loaded, a spinner should be fine
- if existing sessions are found, they are displayed in the sidebar and the "chat-window" displays a message similar to "Please select a session or create a new one", basically a placeholder
- the user is now able to click on a session, replacing the placeholder with Skeletons of sample messages until the real messages are loaded
Maybe I'm overengineering this a little though, I think your approach is fine too!
…e/interface-chat-mvp-intelligence-service
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just did some manual testing and wanted to add the following points:
- The "no-sessions"-screen probably needs extra colors for the dark mode (text + button), it's pretty hard to read right now:
- I forgot to start the
intelligence-service
and the session creation failed. I did not get any feedback of that kind though and the endpoint did not return any errors. So either we should decouple the session creation from the Python-Server or the endpoint has to return an actual error, which can then be translated into an on-screen alert/toast. In production this is a realistic scenario as well if the Python server isn't working properly.
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
…e/interface-chat-mvp-intelligence-service
Motivation
To interact with the AI Mentor we need an interface, which provides users an ability to create reflective sessions, retrieve messages from existing sessions, send messages and see the AI Mentor response.
Description
NB: currently the bot does not persist any specific context and only reacts to the latest user message
Testing Instructions
application-server
,webapp
andintelligence service
Screenshots (if applicable)
Checklist
General
Client (if applicable)