From c8c474ecfd0417b8af3c6a63e1a3e8c1cd833221 Mon Sep 17 00:00:00 2001 From: MangoFanFanw Date: Mon, 1 Jun 2026 20:46:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(all):=20=E7=B4=AF=E7=A7=AF=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E5=A4=8D=E5=92=8C=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alembic.ini | 149 ---------------------------- alembic/env.py | 5 + alembic/script.py.mako | 6 ++ src/nyahome/server.py | 3 +- webui/src/App.vue | 2 +- webui/src/assets/main.scss | 4 + webui/src/components/PageHeader.vue | 6 +- webui/vite.config.ts | 6 +- 8 files changed, 25 insertions(+), 156 deletions(-) delete mode 100644 alembic.ini diff --git a/alembic.ini b/alembic.ini deleted file mode 100644 index 83b58c0..0000000 --- a/alembic.ini +++ /dev/null @@ -1,149 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts. -# this is typically a path given in POSIX (e.g. forward slashes) -# format, relative to the token %(here)s which refers to the location of this -# ini file -script_location = %(here)s/alembic - -# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s -# Uncomment the line below if you want the files to be prepended with date and time -# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file -# for all available tokens -# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s -# Or organize into date-based subdirectories (requires recursive_version_locations = true) -# file_template = %%(year)d/%%(month).2d/%%(day).2d_%%(hour).2d%%(minute).2d_%%(second).2d_%%(rev)s_%%(slug)s - -# sys.path path, will be prepended to sys.path if present. -# defaults to the current working directory. for multiple paths, the path separator -# is defined by "path_separator" below. -prepend_sys_path = . - - -# timezone to use when rendering the date within the migration file -# as well as the filename. -# If specified, requires the tzdata library which can be installed by adding -# `alembic[tz]` to the pip requirements. -# string value is passed to ZoneInfo() -# leave blank for localtime -# timezone = - -# max length of characters to apply to the "slug" field -# truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -# version location specification; This defaults -# to /versions. When using multiple version -# directories, initial revisions must be specified with --version-path. -# The path separator used here should be the separator specified by "path_separator" -# below. -# version_locations = %(here)s/bar:%(here)s/bat:%(here)s/alembic/versions - -# path_separator; This indicates what character is used to split lists of file -# paths, including version_locations and prepend_sys_path within configparser -# files such as alembic.ini. -# The default rendered in new alembic.ini files is "os", which uses os.pathsep -# to provide os-dependent path splitting. -# -# Note that in order to support legacy alembic.ini files, this default does NOT -# take place if path_separator is not present in alembic.ini. If this -# option is omitted entirely, fallback logic is as follows: -# -# 1. Parsing of the version_locations option falls back to using the legacy -# "version_path_separator" key, which if absent then falls back to the legacy -# behavior of splitting on spaces and/or commas. -# 2. Parsing of the prepend_sys_path option falls back to the legacy -# behavior of splitting on spaces, commas, or colons. -# -# Valid values for path_separator are: -# -# path_separator = : -# path_separator = ; -# path_separator = space -# path_separator = newline -# -# Use os.pathsep. Default configuration used for new projects. -path_separator = os - -# set to 'true' to search source files recursively -# in each "version_locations" directory -# new in Alembic version 1.10 -# recursive_version_locations = false - -# the output encoding used when revision files -# are written from script.py.mako -# output_encoding = utf-8 - -# database URL. This is consumed by the user-maintained env.py script only. -# other means of configuring database URLs may be customized within the env.py -# file. -sqlalchemy.url = sqlite:///.nyahome/nyahome.db - - -[post_write_hooks] -# post_write_hooks defines scripts or Python functions that are run -# on newly generated revision scripts. See the documentation for further -# detail and examples - -# format using "black" - use the console_scripts runner, against the "black" entrypoint -# hooks = black -# black.type = console_scripts -# black.entrypoint = black -# black.options = -l 79 REVISION_SCRIPT_FILENAME - -# lint with attempts to fix using "ruff" - use the module runner, against the "ruff" module -# hooks = ruff -# ruff.type = module -# ruff.module = ruff -# ruff.options = check --fix REVISION_SCRIPT_FILENAME - -# Alternatively, use the exec runner to execute a binary found on your PATH -# hooks = ruff -# ruff.type = exec -# ruff.executable = ruff -# ruff.options = check --fix REVISION_SCRIPT_FILENAME - -# Logging configuration. This is also consumed by the user-maintained -# env.py script only. -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARNING -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARNING -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/alembic/env.py b/alembic/env.py index 04fa3cc..3ae8753 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -1,9 +1,14 @@ from logging.config import fileConfig +from dotenv import load_dotenv from sqlalchemy import engine_from_config, pool from sqlmodel import SQLModel from alembic import context +from nyahome.cli.cli import ENV_PATH + +load_dotenv(ENV_PATH) + from nyahome.database import ( # noqa AiiModel, AiiModelPublic, diff --git a/alembic/script.py.mako b/alembic/script.py.mako index 697cf67..12dcbe9 100644 --- a/alembic/script.py.mako +++ b/alembic/script.py.mako @@ -10,6 +10,12 @@ from typing import Sequence, Union from alembic import op import sqlalchemy as sa import sqlmodel + +from dotenv import load_dotenv +from nyahome.cli.cli import ENV_PATH + +load_dotenv(ENV_PATH) + ${imports if imports else ""} # revision identifiers, used by Alembic. diff --git a/src/nyahome/server.py b/src/nyahome/server.py index 87e20db..826b02f 100644 --- a/src/nyahome/server.py +++ b/src/nyahome/server.py @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) @asynccontextmanager -async def lifespan(app_: FastAPI) -> AsyncGenerator[None, Any]: +async def lifespan(_: FastAPI) -> AsyncGenerator[None, Any]: # 在生命周期函数内先加载环境变量,再局部导入 nyahome 核心模块 logger.info("🚀 服务启动中...") @@ -50,6 +50,7 @@ app.include_router(aii_router, prefix="/api") app.mount("/nyahome", StaticFiles(directory=Path.cwd() / "public"), name="public") app.mount("/download", StaticFiles(directory=Path.cwd() / ".nyahome/contents"), name="upload") +# noinspection PyTypeChecker app.add_middleware( CORSMiddleware, allow_origins=["*"], diff --git a/webui/src/App.vue b/webui/src/App.vue index f835f5e..9b522af 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -33,7 +33,7 @@ onMounted(async () => {
- +
diff --git a/webui/src/assets/main.scss b/webui/src/assets/main.scss index 244dabc..28e31dd 100644 --- a/webui/src/assets/main.scss +++ b/webui/src/assets/main.scss @@ -48,3 +48,7 @@ div.nyahome-card { border: 1px solid rgb(44 44 44 / 0.4); padding: 10px; } + +.in-form-alert { + margin-bottom: 16px; +} diff --git a/webui/src/components/PageHeader.vue b/webui/src/components/PageHeader.vue index 8c93f80..1b9fec0 100644 --- a/webui/src/components/PageHeader.vue +++ b/webui/src/components/PageHeader.vue @@ -4,13 +4,13 @@ diff --git a/webui/vite.config.ts b/webui/vite.config.ts index baaed0b..85b611b 100644 --- a/webui/vite.config.ts +++ b/webui/vite.config.ts @@ -9,7 +9,7 @@ import {resolve} from 'path' import AutoImport from 'unplugin-auto-import/vite' import {NaiveUiResolver} from 'unplugin-vue-components/resolvers' import Components from 'unplugin-vue-components/vite' -import {unheadVueComposablesImports} from '@unhead/vue' +import {unheadVueComposablesImports} from '@unhead/vue' // 从 package.json 里搞到 WebUI 版本号 // 从 package.json 里搞到 WebUI 版本号 const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8')) @@ -19,7 +19,9 @@ export default defineConfig({ plugins: [ vue(), vueJsx(), - vueDevTools(), + vueDevTools({ + launchEditor: 'pycharm', + }), AutoImport({ imports: [ 'vue',