增加admin页面
This commit is contained in:
@@ -368,6 +368,10 @@ async def service_get_engin_list():
|
|||||||
if available_packages.get("docling"): engin_list.append("docling")
|
if available_packages.get("docling"): engin_list.append("docling")
|
||||||
return JSONResponse(content=engin_list)
|
return JSONResponse(content=engin_list)
|
||||||
|
|
||||||
|
@service_router.get("/task-list", summary="获取所有task-id")
|
||||||
|
async def service_get_task_list():
|
||||||
|
return JSONResponse(content=list(tasks_state.keys()))
|
||||||
|
|
||||||
|
|
||||||
@service_router.get("/default-params", summary="获取默认翻译参数")
|
@service_router.get("/default-params", summary="获取默认翻译参数")
|
||||||
def service_get_default_params():
|
def service_get_default_params():
|
||||||
@@ -477,7 +481,9 @@ async def get_logs_from_queue_for_frontend(request: Request, task_id: str = Quer
|
|||||||
@backend_router.get("/get-engin-list")
|
@backend_router.get("/get-engin-list")
|
||||||
async def get_engin_list_for_frontend(request: Request):
|
async def get_engin_list_for_frontend(request: Request):
|
||||||
return await _proxy_request(request, "GET", "/service/engin-list")
|
return await _proxy_request(request, "GET", "/service/engin-list")
|
||||||
|
@backend_router.get("/get-task-list")
|
||||||
|
async def get_task_list_for_frontend(request: Request):
|
||||||
|
return await _proxy_request(request, "GET", "/service/task-list")
|
||||||
|
|
||||||
@backend_router.get("/translate/default_param")
|
@backend_router.get("/translate/default_param")
|
||||||
async def get_default_param_for_frontend(request: Request):
|
async def get_default_param_for_frontend(request: Request):
|
||||||
@@ -500,7 +506,13 @@ async def main_page():
|
|||||||
no_cache_headers = {"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0", "Pragma": "no-cache",
|
no_cache_headers = {"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0", "Pragma": "no-cache",
|
||||||
"Expires": "0"}
|
"Expires": "0"}
|
||||||
return FileResponse(index_path, headers=no_cache_headers)
|
return FileResponse(index_path, headers=no_cache_headers)
|
||||||
|
@app.get("/admin", response_class=HTMLResponse, include_in_schema=False)
|
||||||
|
async def main_page_admin():
|
||||||
|
index_path = Path(STATIC_DIR) / "index.html"
|
||||||
|
if not index_path.exists(): raise HTTPException(status_code=404, detail="index.html not found")
|
||||||
|
no_cache_headers = {"Cache-Control": "no-store, no-cache, must-revalidate, max-age=0", "Pragma": "no-cache",
|
||||||
|
"Expires": "0"}
|
||||||
|
return FileResponse(index_path, headers=no_cache_headers)
|
||||||
@app.post("/temp/translate")
|
@app.post("/temp/translate")
|
||||||
async def temp_translate(base_url: str = Body(...),
|
async def temp_translate(base_url: str = Body(...),
|
||||||
api_key: str = Body(...),
|
api_key: str = Body(...),
|
||||||
|
|||||||
@@ -454,6 +454,7 @@
|
|||||||
// --- Global State ---
|
// --- Global State ---
|
||||||
let defaultParams = {};
|
let defaultParams = {};
|
||||||
const tasks = {}; // { taskId: { elements: {...}, state: {...}, intervals: {...} } }
|
const tasks = {}; // { taskId: { elements: {...}, state: {...}, intervals: {...} } }
|
||||||
|
let isAdminMode = false; // Flag for admin view
|
||||||
|
|
||||||
const apiHrefMap = {
|
const apiHrefMap = {
|
||||||
"https://openrouter.ai/api/v1": "https://openrouter.ai/settings/keys",
|
"https://openrouter.ai/api/v1": "https://openrouter.ai/settings/keys",
|
||||||
@@ -530,6 +531,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function saveTaskIds() {
|
function saveTaskIds() {
|
||||||
|
if (isAdminMode) return; // In admin mode, do not save task list to localStorage
|
||||||
const taskIds = Object.keys(tasks);
|
const taskIds = Object.keys(tasks);
|
||||||
saveToStorage('active_task_ids', JSON.stringify(taskIds));
|
saveToStorage('active_task_ids', JSON.stringify(taskIds));
|
||||||
}
|
}
|
||||||
@@ -955,6 +957,9 @@
|
|||||||
|
|
||||||
// --- Initialization ---
|
// --- Initialization ---
|
||||||
async function init() {
|
async function init() {
|
||||||
|
// Determine if in admin mode
|
||||||
|
isAdminMode = window.location.pathname === '/admin';
|
||||||
|
|
||||||
// Fetch metadata
|
// Fetch metadata
|
||||||
try {
|
try {
|
||||||
const [metaRes, enginRes, paramsRes] = await Promise.all([
|
const [metaRes, enginRes, paramsRes] = await Promise.all([
|
||||||
@@ -996,12 +1001,29 @@
|
|||||||
setupSlider(concurrentSlider, concurrentDisplay, concurrentReset, 'concurrent', defaultParams);
|
setupSlider(concurrentSlider, concurrentDisplay, concurrentReset, 'concurrent', defaultParams);
|
||||||
setupSlider(temperatureSlider, temperatureDisplay, temperatureReset, 'temperature', defaultParams);
|
setupSlider(temperatureSlider, temperatureDisplay, temperatureReset, 'temperature', defaultParams);
|
||||||
|
|
||||||
// Restore tasks
|
// Restore tasks based on mode
|
||||||
const savedTaskIds = JSON.parse(getFromStorage('active_task_ids', '[]'));
|
if (isAdminMode) {
|
||||||
if (savedTaskIds.length > 0) {
|
document.title = "DocuTranslate - Admin Panel";
|
||||||
savedTaskIds.forEach(taskId => createTaskCard(taskId, true));
|
try {
|
||||||
|
const response = await fetch('/backend/get-task-list');
|
||||||
|
if (!response.ok) throw new Error(`Failed to fetch task list: ${response.statusText}`);
|
||||||
|
const allTaskIds = await response.json();
|
||||||
|
if (allTaskIds && Array.isArray(allTaskIds) && allTaskIds.length > 0) {
|
||||||
|
allTaskIds.reverse().forEach(taskId => createTaskCard(taskId, true));
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Admin mode: Failed to load task list from server.", error);
|
||||||
|
alert("无法从服务器加载任务列表,请检查后台连接。");
|
||||||
|
}
|
||||||
|
updateTaskPlaceholderVisibility();
|
||||||
} else {
|
} else {
|
||||||
createTaskCard(); // Create one new task by default
|
// Normal mode: Restore from localStorage
|
||||||
|
const savedTaskIds = JSON.parse(getFromStorage('active_task_ids', '[]'));
|
||||||
|
if (savedTaskIds.length > 0) {
|
||||||
|
savedTaskIds.forEach(taskId => createTaskCard(taskId, true));
|
||||||
|
} else {
|
||||||
|
createTaskCard(); // Create one new task by default
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add event listeners for settings
|
// Add event listeners for settings
|
||||||
|
|||||||
Reference in New Issue
Block a user