mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 03:55:55 +00:00
perf: 首页展示版本信息
This commit is contained in:
@@ -54,7 +54,7 @@ class RouterGroup(abc.ABC):
|
||||
return self.http_status(500, -2, str(e))
|
||||
|
||||
new_f = handler_error
|
||||
new_f.__name__ = f.__name__
|
||||
new_f.__name__ = (self.name + rule).replace('/', '__')
|
||||
new_f.__doc__ = f.__doc__
|
||||
|
||||
self.quart_app.route(rule, **options)(new_f)
|
||||
|
||||
19
pkg/api/http/controller/groups/system.py
Normal file
19
pkg/api/http/controller/groups/system.py
Normal file
@@ -0,0 +1,19 @@
|
||||
import quart
|
||||
|
||||
from .....core import app
|
||||
from .. import group
|
||||
from .....utils import constants
|
||||
|
||||
|
||||
@group.group_class('system', '/api/v1/system')
|
||||
class SystemRouterGroup(group.RouterGroup):
|
||||
|
||||
async def initialize(self) -> None:
|
||||
@self.route('/info', methods=['GET'])
|
||||
async def _() -> str:
|
||||
return self.success(
|
||||
data={
|
||||
"version": constants.semantic_version,
|
||||
"debug": constants.debug_mode
|
||||
}
|
||||
)
|
||||
@@ -5,7 +5,7 @@ import asyncio
|
||||
import quart
|
||||
|
||||
from ....core import app
|
||||
from .groups import logs
|
||||
from .groups import logs, system
|
||||
from . import group
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,12 @@ from __future__ import print_function
|
||||
|
||||
import traceback
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
from . import app
|
||||
from ..audit import identifier
|
||||
from . import stage
|
||||
from ..utils import constants
|
||||
|
||||
# 引入启动阶段实现以便注册
|
||||
from .stages import load_config, setup_logger, build_app, migrate, show_notes
|
||||
@@ -25,6 +27,10 @@ async def make_app(loop: asyncio.AbstractEventLoop) -> app.Application:
|
||||
# 生成标识符
|
||||
identifier.init()
|
||||
|
||||
# 确定是否为调试模式
|
||||
if "DEBUG" in os.environ and os.environ["DEBUG"] in ["true", "1"]:
|
||||
constants.debug_mode = True
|
||||
|
||||
ap = app.Application()
|
||||
|
||||
ap.event_loop = loop
|
||||
|
||||
@@ -5,6 +5,8 @@ import time
|
||||
|
||||
import colorlog
|
||||
|
||||
from ...utils import constants
|
||||
|
||||
|
||||
log_colors_config = {
|
||||
"DEBUG": "green", # cyan white
|
||||
@@ -22,7 +24,7 @@ async def init_logging(extra_handlers: list[logging.Handler] = None) -> logging.
|
||||
|
||||
level = logging.INFO
|
||||
|
||||
if "DEBUG" in os.environ and os.environ["DEBUG"] in ["true", "1"]:
|
||||
if constants.debug_mode:
|
||||
level = logging.DEBUG
|
||||
|
||||
log_file_name = "data/logs/qcg-%s.log" % time.strftime(
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
semantic_version = "v3.3.1.1"
|
||||
|
||||
debug_mode = False
|
||||
@@ -5,7 +5,13 @@
|
||||
<v-navigation-drawer id="navigation-drawer" :width="160" app permanent rail>
|
||||
<v-list-item id="logo-list-item">
|
||||
<template v-slot:prepend>
|
||||
<v-img src="@/assets/langbot-logo-block.png" height="32" width="32"></v-img>
|
||||
<div id="logo-container">
|
||||
<v-img id="logo-img" src="@/assets/langbot-logo-block.png" height="32" width="32"></v-img>
|
||||
|
||||
<div id="version-chip" v-tooltip="proxy.$store.state.version + (proxy.$store.state.debug ? ' (调试模式已启用)' : '')" :style="{ 'background-color': proxy.$store.state.debug ? '#c79a47' : '#1e9ae2' }">
|
||||
{{ proxy.$store.state.version }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</v-list-item>
|
||||
<v-divider></v-divider>
|
||||
@@ -23,7 +29,7 @@
|
||||
<template v-slot:append>
|
||||
<div>
|
||||
<v-list density="compact" nav>
|
||||
<v-list-item id="about-list-item" title="关于" prepend-icon="mdi-cog-outline" v-tooltip="关于">
|
||||
<v-list-item id="about-list-item" title="系统信息" prepend-icon="mdi-cog-outline" v-tooltip="系统信息">
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</div>
|
||||
@@ -38,6 +44,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getCurrentInstance } from 'vue'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -46,9 +55,39 @@
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#logo-list-item {
|
||||
#logo-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-left: -0.2rem;
|
||||
margin-block: 0.5rem;
|
||||
}
|
||||
|
||||
#logo-img {
|
||||
/* margin-left: -0.2rem; */
|
||||
}
|
||||
|
||||
#logo-list-item {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
#version-chip {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
margin-top: 2.4rem;
|
||||
margin-right: 0.3rem;
|
||||
font-size: 0.55rem;
|
||||
font-weight: 500;
|
||||
padding-inline: 0.4rem;
|
||||
text-align: center;
|
||||
background-color: #c79a47;
|
||||
color: white;
|
||||
border-radius: 0.5rem;
|
||||
border: 1px solid #fff;
|
||||
box-shadow: 0 0 0.1rem 0 rgba(0, 0, 0, 0.5);
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
#about-list-item {
|
||||
|
||||
@@ -32,7 +32,7 @@ let logPointer = {
|
||||
}
|
||||
|
||||
const refreshLog = () => {
|
||||
proxy.$axios.get(`${proxy.$store.state.apiBaseUrl}/logs`, {
|
||||
proxy.$axios.get(`/logs`, {
|
||||
params: {
|
||||
start_page_number: logPointer.start_page_number,
|
||||
start_offset: logPointer.start_offset
|
||||
@@ -79,7 +79,7 @@ onUnmounted(() => {
|
||||
#log-card {
|
||||
margin: 1rem;
|
||||
margin-top: 1rem;
|
||||
height: calc(100vh - 10rem);
|
||||
height: calc(100vh - 9.5rem);
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,4 +17,5 @@ export function registerPlugins (app) {
|
||||
.use(store)
|
||||
|
||||
app.config.globalProperties.$axios = axios
|
||||
store.commit('initializeFetch')
|
||||
}
|
||||
|
||||
@@ -6,8 +6,18 @@ export default createStore({
|
||||
state: {
|
||||
apiBaseUrl: 'http://localhost:5300/api/v1',
|
||||
autoRefreshLog: false,
|
||||
version: '0.0.1'
|
||||
version: 'v0.0.0',
|
||||
debug: false
|
||||
},
|
||||
mutations: {
|
||||
initializeFetch() {
|
||||
axios.defaults.baseURL = this.state.apiBaseUrl
|
||||
|
||||
axios.get('/system/info').then(response => {
|
||||
this.state.version = response.data.data.version
|
||||
this.state.debug = response.data.data.debug
|
||||
})
|
||||
}
|
||||
},
|
||||
mutations: {},
|
||||
actions: {},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user