增加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")
|
||||
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="获取默认翻译参数")
|
||||
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")
|
||||
async def get_engin_list_for_frontend(request: Request):
|
||||
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")
|
||||
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",
|
||||
"Expires": "0"}
|
||||
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")
|
||||
async def temp_translate(base_url: str = Body(...),
|
||||
api_key: str = Body(...),
|
||||
|
||||
@@ -454,6 +454,7 @@
|
||||
// --- Global State ---
|
||||
let defaultParams = {};
|
||||
const tasks = {}; // { taskId: { elements: {...}, state: {...}, intervals: {...} } }
|
||||
let isAdminMode = false; // Flag for admin view
|
||||
|
||||
const apiHrefMap = {
|
||||
"https://openrouter.ai/api/v1": "https://openrouter.ai/settings/keys",
|
||||
@@ -530,6 +531,7 @@
|
||||
}
|
||||
|
||||
function saveTaskIds() {
|
||||
if (isAdminMode) return; // In admin mode, do not save task list to localStorage
|
||||
const taskIds = Object.keys(tasks);
|
||||
saveToStorage('active_task_ids', JSON.stringify(taskIds));
|
||||
}
|
||||
@@ -955,6 +957,9 @@
|
||||
|
||||
// --- Initialization ---
|
||||
async function init() {
|
||||
// Determine if in admin mode
|
||||
isAdminMode = window.location.pathname === '/admin';
|
||||
|
||||
// Fetch metadata
|
||||
try {
|
||||
const [metaRes, enginRes, paramsRes] = await Promise.all([
|
||||
@@ -996,12 +1001,29 @@
|
||||
setupSlider(concurrentSlider, concurrentDisplay, concurrentReset, 'concurrent', defaultParams);
|
||||
setupSlider(temperatureSlider, temperatureDisplay, temperatureReset, 'temperature', defaultParams);
|
||||
|
||||
// Restore tasks
|
||||
const savedTaskIds = JSON.parse(getFromStorage('active_task_ids', '[]'));
|
||||
if (savedTaskIds.length > 0) {
|
||||
savedTaskIds.forEach(taskId => createTaskCard(taskId, true));
|
||||
// Restore tasks based on mode
|
||||
if (isAdminMode) {
|
||||
document.title = "DocuTranslate - Admin Panel";
|
||||
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 {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user