File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1515- 领域代码放在 ` backend/apps/<domain>/ ` 。多数域采用 ` api/ ` 、` crud/ ` 或 ` curd/ ` 、` models/ ` 分层;` schemas/ ` 仅 ` system ` 和 ` settings ` 有,` chat ` 另有 ` task/ ` ,` ai_model ` 、` db ` 、` mcp ` 、` template ` 、` swagger ` 不遵循该布局——新代码跟随所在域的既有形态。
1616- 项目同时存在 ` crud ` 和 ` curd ` 拼写;不要为统一命名制造无关重构。
1717- 新 router 注册到 ` backend/apps/api.py ` 。
18- - 应用组装、中间件、MCP、静态资源挂载和 xpack 初始化属于 ` backend/main.py ` 。
18+ - 应用组装、中间件、MCP 和 MCP 图片静态挂载属于 ` backend/main.py ` ; ` init_fastapi_app ` 在此触发 xpack 初始化,前端 dist 静态挂载与 ` /xpack_static ` 提取由 xpack 包内完成(见 ` docs/agents/xpack.md ` ) 。
1919- SQLModel 结构变更必须配套 Alembic 迁移;细节见 ` docs/agents/migrations.md ` 。
2020- 用户可见后端消息使用 ` backend/locales/ ` ,不要硬编码新文案。
2121
@@ -76,7 +76,7 @@ Endpoint 命名沿既有风格:
7676- 生成 SQL、路径、Host 头和上传文件都按不可信输入处理。
7777- 不要削弱行数限制、权限过滤、元数据查询控制、Host 校验或路径穿越防护。
7878- 修改连接池、事务和异步执行边界时,先阅读相邻实现和回归测试;不要把阻塞调用移回事件循环。
79- - 商业实现留在 xpack;本仓库只保留对已发布包的调用和初始化。
79+ - 商业实现留在 xpack;本仓库只保留对已发布包的调用和初始化。xpack 是必装硬依赖(启动即 import,无降级),许可证只做功能门控;加载场景见 ` docs/agents/xpack.md ` 。
8080
8181## Chat 问题流程
8282
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ request.get('/path', {
7171 - 普通登录和管理员登录白名单;
7272 - ` /assistant ` 、` /embeddedPage ` 、` /embeddedCommon ` 、` /401 ` 助手白名单;
7373 - ` userStore.isAdmin ` 与 ` isSpaceAdmin ` 的路由差异;
74- - xpack 静态脚本加载失败路径。
74+ - xpack 静态脚本加载失败路径: ` LicenseGenerator ` 是无类型声明的 window 全局,登录/改密加密( ` sqlbotEncrypt ` )和动态路由注册都硬依赖它,脚本加载失败只提示并中断导航,没有降级 。
7575- 新路由必须配置名称、标题 i18n 和正确父布局;不要绕过已有访问控制。
7676
7777## 视图、组件与样式
Original file line number Diff line number Diff line change 22
33` sqlbot-xpack ` 默认作为版本范围由 ` backend/pyproject.toml ` 约束的已发布 wheel 使用;` uv.lock ` 不入库,只用于冻结本机安装。日常任务不读取、不修改本地 xpack checkout。
44
5+ ## 主工程对 xpack 的运行时依赖
6+
7+ 以下事实在"已发布 wheel"与"源码联调(editable)"两种模式下一致,修改依赖、初始化、许可证或前端集成前先掌握:
8+
9+ - ` sqlbot-xpack ` 是 ` backend/pyproject.toml ` 的** 必装依赖** (不是 optional extra),索引指向 TestPyPI,CE 镜像构建必然包含;构建环境需能访问 test.pypi.org。
10+ - 后端启动即无条件 import:` backend/main.py ` 与多个业务模块(登录加解密、AES 落库、审计、行权限、参数管理、embedded 签名)顶层 import,没有降级路径——xpack 缺失则后端无法启动。8001 的 MCP 进程因 ` uvicorn main:mcp_app ` import 同一 ` main ` 模块,同样加载。
11+ - ` sqlbot_xpack.init_fastapi_app(app) ` 在 import main 时执行:license/config/sse/row-permission/embedded 路由无条件注册;appearance/custom_prompt/authentication/platform/audit 仅在许可证 valid 时注册,到期后由监控任务动态摘除。
12+ - 静态资源在启动时从 wheel 解包复制到 ` ../frontend/dist/xpack_static ` (相对路径,要求后端进程 CWD 在 ` backend/ ` ),由主 app 挂载 serve——前端 dist 静态挂载的实际位置在 xpack ` core.py ` ,不在 ` main.py ` 。
13+ - 许可证只做功能门控,不做加载门控:无许可证时 xpack 仍完整加载,登录加密、SSE、行权限、审计等基础功能照常走 xpack 代码。
14+ - 前端首次路由必加载 ` /xpack_static/license-generator.umd.js ` (window 全局 ` LicenseGenerator ` ,无类型声明);登录/改密加密和动态路由注册硬依赖它,脚本加载失败无降级,只提示并中断导航。
15+
516只有任务确实需要修改或调试闭源 xpack 代码,或者需要两个仓库联动验证时,才检查本地关联开关。未提交的根目录 ` AGENTS.local.env ` 保存本机配置:
617
718``` dotenv
@@ -30,3 +41,5 @@ uv run --no-sync pytest -q
3041```
3142
3243在 ` backend/ ` 执行 ` uv sync ` 可恢复已发布包。变更和提交必须分开:SQLBot 变更留在本仓库,xpack 变更留在独立仓库。完整发布顺序以 ` docs/agents/packaging.md ` 为准。
44+
45+ ** 源码联调的前提与影响面** :checkout 里的 ` src/sqlbot_xpack/static ` 被 gitignore、全新 checkout 不存在,而后端启动时会把包内 ` static ` 复制到前端 dist——目录缺失会让 ` init_fastapi_app ` 直接抛错、后端无法启动。因此首次联调前必须先在 xpack 仓库根目录执行一次 ` ./build_scripts/build-dev.sh ` (构建并复制静态资源),之后每次改动 ` xpack_static/ ` 也要重跑再重启。editable 安装作用于 backend 共享环境,8000 主服务和 8001 MCP 进程都会改用源码;改 Python 源码同样需要重启后端才生效。
You can’t perform that action at this time.
0 commit comments