diff --git a/.trae/skills/pyinstaller-one/SKILL.md b/.trae/skills/pyinstaller-one/SKILL.md
new file mode 100644
index 0000000..b260fd9
--- /dev/null
+++ b/.trae/skills/pyinstaller-one/SKILL.md
@@ -0,0 +1,17 @@
+---
+name: pyinstaller-one
+description: 当执行pyinstaller打包的时候,执行这个技能。
+---
+
+## 元数据
+name: pyinstaller个性化打包
+description: 打包的时候,要求生成为一个exe文件,使用ico等等
+
+## 概述
+此 Skill 用于给有GUI界面的python代码,打包的时候,生成一个统一的要求:生成一个exe文件,去掉控制台窗口,使用本目录下的ico文件作为程序的图标。打包时,如果之前有打包过的文件(dist/build 文件夹),自动覆盖旧文件,不用手动确认,一键打包到底。
+
+## 打包命令示例
+pyinstaller --onefile --noconsole --icon=图标文件名.ico --distpath=. --hidden-import=PySide6.Qt6Compat python程序名.py
+
+## 清除多余文件
+在windows环境下,执行clean.py
\ No newline at end of file
diff --git a/.trae/skills/pyinstaller-one/clean.py b/.trae/skills/pyinstaller-one/clean.py
new file mode 100644
index 0000000..268139a
--- /dev/null
+++ b/.trae/skills/pyinstaller-one/clean.py
@@ -0,0 +1,17 @@
+import os
+import shutil
+import glob
+import subprocess
+
+# 2. 清理打包残留文件 等价:rd /s /q build + del /f *.spec
+print("开始清理打包残留文件...")
+# 删除build文件夹
+if os.path.exists("build") and os.path.isdir("build"):
+ shutil.rmtree("build")
+# 删除所有.spec文件
+spec_files = glob.glob("*.spec")
+for spec_file in spec_files:
+ if os.path.exists(spec_file):
+ os.remove(spec_file)
+
+print("✅ 打包完成 + 残留文件清理完毕!exe文件已生成在当前目录")
\ No newline at end of file
diff --git a/main.exe b/main.exe
new file mode 100644
index 0000000..29b3e48
Binary files /dev/null and b/main.exe differ
diff --git a/main.py b/main.py
index fcdbc31..38af677 100644
--- a/main.py
+++ b/main.py
@@ -274,6 +274,10 @@ def setup_logging(log_path: str, level: str = "INFO"):
"""配置日志"""
logger.remove() # 移除默认的处理器
+ # 确保log_path不为None
+ if log_path is None:
+ log_path = 'guba.log'
+
logger.add(
log_path,
rotation="10 MB",
@@ -283,11 +287,13 @@ def setup_logging(log_path: str, level: str = "INFO"):
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}"
)
- logger.add(
- sys.stdout,
- level=level,
- format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}"
- )
+ # 仅当sys.stdout可用时才添加控制台日志
+ if sys.stdout is not None:
+ logger.add(
+ sys.stdout,
+ level=level,
+ format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}"
+ )
def main():
@@ -304,8 +310,10 @@ def main():
# 配置日志
log_config = config.logging_config
- setup_logging(log_config.get('path', 'guba.log'), log_config.get('level', 'INFO'))
- logger.info(f"日志配置完成: {log_config.get('path', 'guba.log')}, 级别: {log_config.get('level', 'INFO')}")
+ log_path = log_config.get('path') or 'guba.log'
+ log_level = log_config.get('level') or 'INFO'
+ setup_logging(log_path, log_level)
+ logger.info(f"日志配置完成: {log_path}, 级别: {log_level}")
# 初始化组件
logger.info("初始化数据库...")
diff --git a/screenshots/sse_page_20260109_173924.png b/screenshots/sse_page_20260109_173924.png
deleted file mode 100644
index 177b6d4..0000000
Binary files a/screenshots/sse_page_20260109_173924.png and /dev/null differ
diff --git a/screenshots/sse_page_20260109_174348.png b/screenshots/sse_page_20260109_174348.png
deleted file mode 100644
index 177b6d4..0000000
Binary files a/screenshots/sse_page_20260109_174348.png and /dev/null differ
diff --git a/sse_screenshot.png b/sse_screenshot.png
index d9ef3ad..0075ef8 100644
Binary files a/sse_screenshot.png and b/sse_screenshot.png differ