46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
|
|
---
|
|||
|
|
alwaysApply: true
|
|||
|
|
---
|
|||
|
|
# Nexus 6.0 技术栈
|
|||
|
|
|
|||
|
|
## 架构分层(禁止跨层直连)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
web/app/*.html → server/api/*.py → application/services → infrastructure/* → domain/models
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- API 层:路由 + Pydantic 校验 + `Depends(get_current_admin)`,不写 SQL
|
|||
|
|
- Service 层:业务编排,通过 Repository 访问数据
|
|||
|
|
- Infrastructure:DB/Redis/SSH/Telegram 实现细节
|
|||
|
|
- Domain:SQLAlchemy ORM 模型,无 FastAPI 依赖
|
|||
|
|
|
|||
|
|
## 启动模式
|
|||
|
|
|
|||
|
|
- 无 `.env` → **安装模式**:仅 `/api/install/` + `/app/install.html`
|
|||
|
|
- 有 `.env` → 正常模式:`SECRET_KEY` / `API_KEY` / `ENCRYPTION_KEY` 缺一不可
|
|||
|
|
|
|||
|
|
## 配置三写(安装向导)
|
|||
|
|
|
|||
|
|
`web/data/config.php` + `.env`(`NEXUS_` 前缀)+ MySQL `settings` 表。
|
|||
|
|
**不可从 DB 覆盖**:`SECRET_KEY`、`API_KEY`、`ENCRYPTION_KEY`、`DATABASE_URL`。
|
|||
|
|
|
|||
|
|
## 数据流
|
|||
|
|
|
|||
|
|
Agent(60s) → Redis 实时 → 前端直读 → 10min → MySQL 历史。告警:WebSocket + Telegram。
|
|||
|
|
|
|||
|
|
## 后台任务(仅 primary worker)
|
|||
|
|
|
|||
|
|
`heartbeat_flush`(10min) · `self_monitor`(30s) · `schedule_runner`(60s) · `retry_runner`(5min)
|
|||
|
|
|
|||
|
|
## HTTP / DB 会话
|
|||
|
|
|
|||
|
|
- 普通 API:`DbSessionMiddleware` → `request.state.db`,禁止在 factory 里 `AsyncSessionLocal()` 后不 close
|
|||
|
|
- WebSocket / `/api/install/`:不走 DB 中间件
|
|||
|
|
|
|||
|
|
## 相关规则文件
|
|||
|
|
|
|||
|
|
- `nexus-python-backend.mdc` — `server/**/*.py`
|
|||
|
|
- `nexus-frontend.mdc` — `web/app/**`
|
|||
|
|
- `nexus-security.mdc` — 安全与凭据
|
|||
|
|
- `perfect-implementation.mdc` — 完美实现与文档纪律
|