commit 6e9b16d5f5bc98cd218fa064df32b898538c42d4 Author: kx_guo Date: Wed Sep 2 10:25:34 2026 +0800 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..3dfcde9 --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# 【问大家】运营管理后台 + +当前阶段初始化 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`。 + +## 钉钉工作台登录 + +运营后台支持从钉钉工作台发起 OAuth 登录。请在钉钉开放平台创建企业内部应用,配置 OAuth 回调地址(必须使用 HTTPS,开发环境可使用内网穿透地址),然后在项目根目录 `.env` 填写: + +```env +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_REDIRECT_URI` 完全一致。未配置 ClientID/ClientSecret 时,登录页仍可使用原有账号密码登录,并会提示钉钉登录尚未配置。 + +MySQL 建表脚本位于 `backend/schema.sql`。未配置 `DATABASE_URL` 时,开发环境会自动使用项目 `data/app.db` 运行,便于本地快速验收。 + +## 问答助手大模型配置 + +问答助手使用 OpenAI 兼容的 Chat Completions 接口。启动后端前设置: + +也可以在项目根目录创建 `.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`。