perf: 首页展示版本信息

This commit is contained in:
Junyan Qin
2024-10-14 21:18:36 +08:00
parent 231dca956d
commit 1fbc92bc6d
10 changed files with 90 additions and 11 deletions

View File

@@ -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)

View 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
}
)

View File

@@ -5,7 +5,7 @@ import asyncio
import quart
from ....core import app
from .groups import logs
from .groups import logs, system
from . import group

View File

@@ -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

View File

@@ -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(

View File

@@ -1 +1,3 @@
semantic_version = "v3.3.1.1"
debug_mode = False

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -17,4 +17,5 @@ export function registerPlugins (app) {
.use(store)
app.config.globalProperties.$axios = axios
store.commit('initializeFetch')
}

View File

@@ -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: {},
})