67 lines
3.0 KiB
Markdown
67 lines
3.0 KiB
Markdown
# 【问大家】运营管理后台
|
||
|
||
当前阶段初始化 React + FastAPI 项目,仅实现运营后台登录闭环和登录后工作台视觉占位页。
|
||
|
||
## 运行
|
||
|
||
后端(PowerShell):
|
||
|
||
```powershell
|
||
cd backend
|
||
python -m pip install -r requirements.txt
|
||
python -m uvicorn app.main:app --reload --port 8000
|
||
```
|
||
|
||
前端:
|
||
|
||
```powershell
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
默认演示账号:
|
||
|
||
- 超级管理员:`admin` / `admin123456`
|
||
- 普通运营:`operator` / `operator123456`
|
||
|
||
正式环境请通过环境变量覆盖账号、密码、`SECRET_KEY` 和 `DATABASE_URL`。
|
||
|
||
## 钉钉工作台免登
|
||
|
||
从钉钉工作台打开时,前端通过钉钉 JSAPI `requestAuthCode` 获取临时授权码,后端换取用户身份并建立会话,不再跳转到 OAuth 确认页。请在钉钉开放平台创建并发布企业内部应用,开通工作台免登/获取用户身份权限,然后在 `backend/.env` 填写:
|
||
|
||
```env
|
||
DINGTALK_CORP_ID=企业CorpId
|
||
DINGTALK_AGENT_ID=应用AgentId
|
||
DINGTALK_CLIENT_ID=钉钉应用ClientID
|
||
DINGTALK_CLIENT_SECRET=钉钉应用ClientSecret
|
||
DINGTALK_REDIRECT_URI=https://你的域名/api/admin/auth/dingtalk/callback
|
||
FRONTEND_URL=https://你的前端域名
|
||
# 可选:限制允许登录的 unionId,多个用逗号分隔
|
||
DINGTALK_ALLOWED_UNION_IDS=
|
||
# 可选:指定 unionId 自动授予超级管理员
|
||
DINGTALK_SUPER_ADMIN_UNION_IDS=
|
||
```
|
||
|
||
`DINGTALK_CLIENT_ID/SECRET` 填应用的 AppKey/AppSecret;`DINGTALK_CORP_ID` 填企业 CorpId;`DINGTALK_AGENT_ID` 用于标识工作台应用。当前免登接口不使用浏览器 OAuth 回调,但保留回调配置兼容旧入口。未配置免登参数时,普通浏览器仍可使用账号密码登录。
|
||
|
||
MySQL 建表脚本位于 `backend/schema.sql`。未配置 `DATABASE_URL` 时,开发环境会自动使用 `backend/data/app.db` 运行,便于本地快速验收。上传截图只保存在服务器文件夹中,不在数据库保留副本。服务器部署时必须通过 `SCREENSHOT_STORAGE_DIR` 指向代码发布目录之外的持久化绝对路径,例如 `/www/wwwroot/wendajia_shared/screenshots`,并对该目录单独备份。目录不存在或不可写时,上传接口会返回明确的存储错误。
|
||
|
||
## 问答助手大模型配置
|
||
|
||
问答助手使用 OpenAI 兼容的 Chat Completions 接口。启动后端前设置:
|
||
|
||
也可以在 `backend/.env` 文件填写这些配置;后端启动时会自动读取。
|
||
|
||
```powershell
|
||
$env:LLM_API_KEY="你的 API Key"
|
||
$env:LLM_BASE_URL="https://api.openai.com/v1"
|
||
$env:LLM_MODEL="gpt-4o-mini"
|
||
$env:LLM_VISION_MODEL="qwen3-vl-plus"
|
||
```
|
||
|
||
也支持 DeepSeek 等兼容服务,例如将 `LLM_BASE_URL` 设为 `https://api.deepseek.com/v1`,并将 `LLM_MODEL` 设为服务商对应的模型名。未配置 `LLM_API_KEY` 时,点击生成会返回明确的配置提示,不会伪造生成结果。
|
||
|
||
`LLM_VISION_MODEL` 用于回答用户上传截图的识图/OCR;如果不填写,则沿用 `LLM_MODEL`。使用 OpenLux 时请填写控制台中已开通图片输入的模型,例如 `qwen3-vl-plus`。
|