AIAnalystAgent / frontend /ui_admin.py
Lawrence LV
fix: remove duplicated login UI in admin panel
ad6be7b
Raw History Blame Contribute Delete
2.15 kB
import gradio as gr
from datetime import datetime
ADMIN_PASSWORD = "CLDAI"
def render_admin_ui(is_admin_state):
# 管理员主面板(登录成功后显示)
with gr.Column(visible=False) as admin_panel:
gr.Markdown("### 🛠️ 管理员控制面板")
kb_files = gr.File(file_types=[".pdf", ".docx"], file_count="multiple", label="📘 上传参考资料文件")
prompt_file = gr.File(file_types=[".txt", ".docx"], label="🧠 上传 Prompt 文档")
template_file = gr.File(file_types=[".docx"], label="📄 上传报告输出模版")
api_key_file = gr.File(file_types=[".txt"], label="🔑 上传 API Key 文件(每行一个)")
preset_btn = gr.Button("⚙️ 执行预设构建")
admin_status = gr.Textbox(label="管理员状态 / 执行日志", lines=6)
def run_preset(kb, prompt, template, keyfile):
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return f"✅ 执行预设构建成功\n时间:{now}"
preset_btn.click(
fn=run_preset,
inputs=[kb_files, prompt_file, template_file, api_key_file],
outputs=admin_status
)
# ✅ 只保留一段登录区域
with gr.Row():
with gr.Column():
pwd_input = gr.Textbox(
label="🔐 请输入管理员密码:",
placeholder="请输入密码",
type="password",
value="", # 确保无默认值
show_label=True,
interactive=True
)
login_btn = gr.Button("登录")
login_status = gr.Textbox(label="登录状态", lines=1, interactive=False)
def verify_login(pwd):
if pwd == ADMIN_PASSWORD:
return True, "✅ 登录成功"
else:
return False, "❌ 密码错误,请重试"
login_btn.click(fn=verify_login, inputs=pwd_input, outputs=[is_admin_state, login_status])
def show_admin_panel(is_admin):
return gr.update(visible=is_admin)
is_admin_state.change(fn=show_admin_panel, inputs=is_admin_state, outputs=admin_panel)