diff --git a/pkg/api/http/controller/groups/stats.py b/pkg/api/http/controller/groups/stats.py new file mode 100644 index 00000000..45326035 --- /dev/null +++ b/pkg/api/http/controller/groups/stats.py @@ -0,0 +1,23 @@ +import quart +import asyncio + +from .....core import app, taskmgr +from .. import group + + +@group.group_class('stats', '/api/v1/stats') +class StatsRouterGroup(group.RouterGroup): + + async def initialize(self) -> None: + @self.route('/basic', methods=['GET']) + async def _() -> str: + + conv_count = 0 + for session in self.ap.sess_mgr.session_list: + conv_count += len(session.conversations if session.conversations is not None else []) + + return self.success(data={ + 'active_session_count': len(self.ap.sess_mgr.session_list), + 'conversation_count': conv_count, + 'query_count': self.ap.query_pool.query_id_counter, + }) diff --git a/pkg/api/http/controller/groups/system.py b/pkg/api/http/controller/groups/system.py index 17dcba7e..a967d6b1 100644 --- a/pkg/api/http/controller/groups/system.py +++ b/pkg/api/http/controller/groups/system.py @@ -15,7 +15,8 @@ class SystemRouterGroup(group.RouterGroup): return self.success( data={ "version": constants.semantic_version, - "debug": constants.debug_mode + "debug": constants.debug_mode, + "enabled_platform_count": len(self.ap.platform_mgr.adapters) } ) diff --git a/pkg/api/http/controller/main.py b/pkg/api/http/controller/main.py index be9685b1..35ac7616 100644 --- a/pkg/api/http/controller/main.py +++ b/pkg/api/http/controller/main.py @@ -6,7 +6,7 @@ import quart import quart_cors from ....core import app -from .groups import logs, system, settings, plugins +from .groups import logs, system, settings, plugins, stats from . import group diff --git a/web/src/pages/DashBoard.vue b/web/src/pages/DashBoard.vue index bc48c5cd..2c17e575 100644 --- a/web/src/pages/DashBoard.vue +++ b/web/src/pages/DashBoard.vue @@ -10,9 +10,9 @@