wendajia/README.md

67 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 【问大家】运营管理后台
当前阶段初始化 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` 运行,便于本地快速验收;上传截图保存在 `backend/data/uploads/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`。