多用户系统 + Admin 角色权限 + Web/TUI 同步 + 构建集成

本轮实现功能:
1. 多用户隔离:每个用户独立 config.json + graph.db
2. TUI 登录页 + 旧版自动迁移(core/migrate.py)
3. Admin/User 角色体系(core/embedded_db.py)
4. Web 后台管理 API(userinfo + admin CRUD)
5. Web 设置页用户管理区(仅 admin 可见)
6. TUI 侧栏配置区权限同步(非 admin 隐藏 Web 服务设置)
7. Web 服务打包为独立二进制(trulymem-web)
8. 双入口 PyInstaller 构建脚本(TUI + Web)
9. 活动记录器(core/activity_recorder.py)
10. 静态页面模板(登录/设置/首次引导)
This commit is contained in:
root
2026-04-28 10:37:57 +08:00
parent 46008c14c5
commit b4456a9c5b
22 changed files with 5488 additions and 183 deletions

View File

@ -1,28 +1,56 @@
@echo off
echo ===== Building TrulyMEM for Windows =====
#!/bin/bash
set -e
REM 切换到脚本所在目录的上一级目录(项目根目录)
cd /d "%~dp0.."
echo Project root: %CD%
echo "===== Building TrulyMEM for Windows ====="
python --version >nul 2>&1
if errorlevel 1 (
echo Error: python not found
exit /b 1
)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_ROOT"
echo "Project root: $PROJECT_ROOT"
echo Installing dependencies...
if ! command -v python &> /dev/null; then
echo "Error: python not found"
exit 1
fi
VENV_DIR="$PROJECT_ROOT\.venv_build"
echo "Creating virtual environment: %VENV_DIR%"
python -m venv "%VENV_DIR%"
call "%VENV_DIR%\Scripts\activate.bat"
pip install --upgrade pip
pip install -r requirements.txt
echo Running PyInstaller...
echo "Cleaning previous builds..."
rmdir /s /q "build\dist" 2>nul
rmdir /s /q "build\__pycache__" 2>nul
del /f /q "TrulyMEM.spec" 2>nul
CORE_HIDDEN=(
--hidden-import core
--hidden-import core.embedded_db
--hidden-import core.graph_client
--hidden-import core.tool_executor
--hidden-import core.tool_limiter
--hidden-import core.tools
--hidden-import core.tools.memory_tools
--hidden-import core.prompts
--hidden-import core.prompts.prompt_manager
--hidden-import core.server
--hidden-import core.client
--hidden-import core.migrate
--hidden-import core.activity_recorder
)
echo "================================"
echo "1. Build TUI: TrulyMEM.exe"
echo "================================"
python -m PyInstaller trulymem_entry.py ^
--clean ^
--onefile ^
--console ^
--name TrulyMEM ^
--icon "pic/TrulyMEM.ico" ^
--clean --onefile --console --name TrulyMEM ^
--add-data "ui/styles;ui/styles" ^
--add-data "core/prompts/templates;core/prompts/templates" ^
--add-data "static;static" ^
--add-data "templates;templates" ^
--add-data "web_api.py;." ^
--hidden-import textual ^
--hidden-import textual.app ^
--hidden-import textual.widgets ^
@ -31,17 +59,10 @@ python -m PyInstaller trulymem_entry.py ^
--hidden-import openai._client ^
--hidden-import neo4j ^
--hidden-import sqlite3 ^
--hidden-import core ^
--hidden-import core.embedded_db ^
--hidden-import core.graph_client ^
--hidden-import core.tool_executor ^
--hidden-import core.tool_limiter ^
--hidden-import core.tools ^
--hidden-import core.tools.memory_tools ^
--hidden-import core.prompts ^
--hidden-import core.prompts.prompt_manager ^
%CORE_HIDDEN% ^
--hidden-import ui ^
--hidden-import ui.app ^
--hidden-import ui.login_screen ^
--hidden-import ui.models ^
--hidden-import ui.models.message ^
--hidden-import ui.models.config ^
@ -51,10 +72,27 @@ python -m PyInstaller trulymem_entry.py ^
--hidden-import ui.services ^
--hidden-import ui.services.config_manager ^
--hidden-import ui.services.config_service ^
--hidden-import web_api ^
--hidden-import flask ^
--hidden-import flask_cors ^
--collect-all textual ^
--noconfirm
echo ===== Build Complete =====
echo Binary: dist\TrulyMEM.exe
dir dist\TrulyMEM.exe
pause
echo "================================"
echo "2. Build Web: trulymem-web.exe"
echo "================================"
python -m PyInstaller web_api.py ^
--clean --onefile --console --name trulymem-web ^
--add-data "templates;templates" ^
--add-data "static;static" ^
--hidden-import flask ^
--hidden-import flask_cors ^
%CORE_HIDDEN% ^
--noconfirm
echo "===== Build Complete ====="
echo "Output: dist/TrulyMEM.exe, dist/trulymem-web.exe"
deactivate
rmdir /s /q "%VENV_DIR%"
echo "Build finished successfully!"