Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
3859f05
added kpi keys to front
abdratsd Mar 11, 2026
492a65a
refactor(assistant): unify recommendations view and add KPI compariso…
abdratsd Mar 11, 2026
5002179
feat(railway): update manager and schema and add mock recommendations
abdratsd Mar 11, 2026
fd264d0
feat(frontend): add session trace export utility
abdratsd Mar 17, 2026
0e7e01f
feat(frontend): record traces in session exporter
abdratsd Mar 17, 2026
99d9a3b
feat(auth): export session traces on logout
abdratsd Mar 17, 2026
0d93a5c
feat(frontend): record EVENT traces on card add/update and ASKFORHELP…
abdratsd Mar 25, 2026
53ac0ae
feat(frontend): record FEEDBACK traces on user recommendation interac…
abdratsd Mar 25, 2026
dbd9b54
feat(frontend): structured JSON export with per-event and session KPIs
abdratsd Mar 25, 2026
3973aa4
feat(frontend): add HTML session summary builder
abdratsd Mar 25, 2026
c89465f
feat(frontend): open HTML summary on logout and download as backup
abdratsd Mar 25, 2026
26fd835
Merge pull request #16 from AI4REALNET/ci/hub-deploy
abdratsd Mar 25, 2026
3d43b4b
Merge pull request #17 from AI4REALNET/evaluation-logging
abdratsd Mar 25, 2026
436c5a0
ci: add PowerGrid app/api to Docker build workflow
abdratsd Mar 25, 2026
351f032
fix(backend): translate 'Poursuivre' to 'Continue' in recommendation …
abdratsd Mar 25, 2026
ff054f9
temp: disable auto-logout on expired token and simulator APIs for demo
abdratsd Mar 25, 2026
7f7ca04
feat(frontend): enrich EVENT traces with title, summary, and publishD…
abdratsd Mar 25, 2026
d8d1726
feat(frontend): large data protection, event titles, publishDate filt…
abdratsd Mar 25, 2026
76a5e9d
temp: disable applyRecommendation API, return fake success for demo
abdratsd Mar 25, 2026
69f4fbb
feat(frontend): set criticality to ND on recommendation confirmation
abdratsd Mar 26, 2026
323908b
fix(frontend): map event_type 'KPI' to 'Overload' in session export
abdratsd Mar 26, 2026
27eb041
update to 1.2.0
Mar 26, 2026
73e861e
fix: disable nginx proxy buffering
abdratsd Mar 26, 2026
1ecb160
fix nginx buffer on nginx cors permissive conf
abdratsd Mar 26, 2026
5650e9f
update to 1.2.2
Mar 26, 2026
5ae35af
feat(zoom): add zoom feature to PowerGrid usecase. Also switch to SVG…
wily-werewolf Mar 2, 2026
dcdbf00
fix - nginx buffer
abdratsd Apr 22, 2026
f5bda7e
Merge pull request #18 from AI4REALNET/chart-values
abdratsd Apr 22, 2026
d6dc005
chore: emphasize temporary demo hacks with TODO comments
abdratsd May 6, 2026
dd0fb12
merge: eval-demo into main
abdratsd May 6, 2026
0a64d4e
fix: render event_context base64 as image in HTML export, redact in JSON
abdratsd May 20, 2026
5a86957
feat: add nginx reverse proxy and API client for INESCTEC cognitive API
abdratsd May 21, 2026
dbcd1e0
feat: enrich trace session export with cognitive snapshot
abdratsd May 21, 2026
28bbd8b
security: read RL agent URL and token from environment variables
abdratsd May 21, 2026
9f6a8d2
security: read INESCTEC cognitive token from VITE_COGNITIVE_TOKEN env…
abdratsd May 21, 2026
f1a745e
fix: preserve secrets through docker-compose.sh and wire VITE_COGNITI…
abdratsd May 21, 2026
8d38d1b
fix: add nginx proxy for RL agent API and improve connection error ha…
abdratsd May 21, 2026
05f8eed
chore: bump OVH chart image tags to v1.3.0
abdratsd May 21, 2026
3308271
fix: wire secrets for OVH deployment and restrict CI build args
abdratsd May 22, 2026
8cfae93
fix: pass VITE_COGNITIVE_TOKEN as build arg only for frontend via ste…
abdratsd May 22, 2026
92cdaa0
fix: bake nginx proxy rules into frontend image for cognitive-api
abdratsd May 22, 2026
7512d2c
chore: bump versions to 1.3.2
abdratsd May 22, 2026
20f563a
chore: bump package-lock.json version to 1.3.2
abdratsd May 22, 2026
fd49dcb
remove powergrid app temporarily - ovh deployment not possible atm
abdratsd May 22, 2026
fefd0a7
fix: remove resolver comment from nginx default.conf and bump to v1.3.3
abdratsd May 22, 2026
84bf9f0
Merge pull request #20 from bentriom/feature/zoom
abdratsd Jul 9, 2026
c42531d
feat(railway): add KPI-based recommendation sorting modes
abdratsd Jul 6, 2026
b08d9b2
fix(powergrid): send apply action to the simulator for real
abdratsd Jul 6, 2026
ab01434
feat(powergrid): add same-origin nginx proxy to the simulator
abdratsd Jul 6, 2026
7aa2575
feat(powergrid-sim): overhaul simulator recommendation flow and UX
abdratsd Jul 6, 2026
dcb6cf9
refactor(i18n): export a shared instance and inject it into setup
abdratsd Jul 6, 2026
98c9d28
chore(deploy): add cab assistant platform ConfigMap
abdratsd Jul 6, 2026
f3ce436
fix(powergrid): restore in-cluster default for RL_AGENT_API_URL
abdratsd Jul 6, 2026
e24d9a0
Merge pull request #21 from ainetus/solution-application
abdratsd Jul 20, 2026
5b0ce5d
consent-gated cognitive data
abdratsd Jul 24, 2026
f45f48d
Merge pull request #22 from ainetus/agent-data-powergrid
abdratsd Jul 24, 2026
c471a52
docs: add AIAgent integration guide and workflow diagrams
MarouaMed Jul 24, 2026
ec3e0c4
update README
abdratsd Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/docker-build-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ jobs:
- service: cab-standalone-frontend
dockerfile: frontend/Dockerfile
context: frontend
# - service: powergrid-app
# dockerfile: usecases_examples/PowerGrid/Dockerfile.app
# context: usecases_examples/PowerGrid
# - service: powergrid-api
# dockerfile: usecases_examples/PowerGrid/Dockerfile.api
# context: usecases_examples/PowerGrid

steps:
- name: Checkout code
Expand Down Expand Up @@ -72,5 +78,6 @@ jobs:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: ${{ matrix.service == 'cab-standalone-frontend' && format('VITE_COGNITIVE_TOKEN={0}', secrets.VITE_COGNITIVE_TOKEN) || '' }}
cache-from: type=gha
cache-to: type=gha,mode=max
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ cython_debug/
.DS_Store
.env
.flaskenv
.secrets
*.pyc
*.pyo
env/
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export VITE_ATM_SIMU=http://[Service url]:[Service port]
cd config/dev/cab-standalone
./docker-compose.sh
```
> **_NOTE:_** You will see the word cab (Cockpit Assistant Bidirectionnel) on most files in the project. Note that it was the initial project name of InteractiveAI. Might be updated later.
> **_NOTE:_** You will see the word cab on most files in the project. Note that it was the initial project name of InteractiveAI. Might be updated later.

3. **Setting up Keycloak `Frontend URL`**
* Access Keycloak Interface:
Expand All @@ -99,13 +99,13 @@ cd config/dev/cab-standalone
- Log in to the Keycloak admin console using your administrator credentials (`admin:admin` by default)
* Configure frontendUrl:
- On the Keycloak admin console, locate and click on the "Realm Settings" section.
- In the Frontend URL setting, add the URL of your Assistant Platform frontend as a valid redirect URI. This URL is typically where your frontend application is hosted. For example, if your frontend is hosted locally for development purposes, you might add `http://localhost:3200/*`.
- After adding the frontend URL, save the changes to update the client settings.
- In the Frontend URL field, add the URL of InteractiveAI frontend. If your frontend is hosted locally for development purposes, you might add `http://localhost:3200/`.
- After adding the frontend URL, save the changes.
* Configure Valid Redirect URIs:
- On the Keycloak admin console, locate and click on the "Clients" section.
- Select the client representing your Assistant Platform application.
- Within the client settings, look for the "Valid Redirect URIs" or similar configuration field.
- Add the URL of your Assistant Platform frontend, it should match the one used in the frontendUrl setting.
- Select the client (opfab-client).
- Within the client settings, look for the "Valid Redirect URIs" field.
- Add the URL of the frontend with /*, if it's local deployment: `http://localhost:3200/*`.
- After adding the Valid Redirect URIs, save the changes to update the client settings.


Expand All @@ -121,7 +121,7 @@ cd resources
./loadTestConf.sh
```

5. If you encounter CORS errors (which can happen if you start tha platform in a non-HTTPS environment), you can start your browser with security mode disabled.
5. If you encounter CORS errors (which can happen if you start the platform in a non-HTTPS environment), you can start your browser with security mode disabled.

```sh
your-chromium-browser --disable-web-security --user-data-dir="[some directory here]" # replace your-chromium-browser with your browser
Expand All @@ -131,7 +131,7 @@ your-chromium-browser --disable-web-security --user-data-dir="[some directory he

### Default ports

This project is based on a microservice architecture. Every service run on a specific port. Some of th default ports are as fellow:
This project is based on a microservice architecture. Every service run on a specific port. Some of the default ports are as fellow:
* Frontend: 3200
* Context Service: 5100
* Event Service: 5000
Expand Down
3 changes: 2 additions & 1 deletion backend/event-service/resources/Railway/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ def __init__(self):

# Optional: Customize Event Uniqueness
def get_unique_fields(self, data):
id_event = data["data"].get("id_event")
id_train = data["data"].get("id_train")
event_type = data["data"].get("event_type")
return {"id_train": id_train, "event_type": event_type}
return {"id_event": id_event, "id_train": id_train, "event_type": event_type}
1 change: 1 addition & 0 deletions backend/event-service/resources/Railway/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
class MetadataSchemaRailway(MetadataSchema):
agent_id = String(allow_none=True, required=True)
event_type = String(required=True)
id_event = String(allow_none=True, required=True)
agent_position = List(
Integer(allow_none=True), allow_none=True, default=None
)
Expand Down
2 changes: 1 addition & 1 deletion backend/event-service/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
'formatter': 'default'
}},
'root': {
'level': 'INFO',
'level': 'DEBUG',
'handlers': ['wsgi']
}
}
Expand Down
4 changes: 4 additions & 0 deletions backend/recommendation-service/api/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
class RecommendationAsk(Schema):
context = Dict()
event = Dict()
# Optional operator cognitive/stress snapshot, sent alongside event/context
# only when the operator has consented. Declared so it survives schema
# validation and is forwarded verbatim to the RL agent.
cognitive_snapshot = Dict()


class RecommendationOut(Schema):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ def get_parade_info(self, act):
kpis["type_of_the_reco"] = (
"Do nothing" # pour renvoyer le kpi type_of_the_reco
)
title.append("Poursuivre")
title.append("Continue")
description.append(
"Continuation of the scenario without operator action"
)
Expand Down
Loading
Loading