开放多项目大屏免登录访问
需求描述:/admin/display 需要无需管理员登录即可直接查看多项目公开运行状态。 实现思路:新增公开字段白名单接口与独立大屏页面,移除该路由的管理员会话依赖,同时保留 /api/admin/overview 的鉴权并补充隐私、路由和页面回归测试。 验证:Go 全量测试通过;前端 18 个测试文件共 59 项通过,TypeScript 检查通过。
This commit is contained in:
@@ -444,6 +444,41 @@ func newDisplayBatchDTO(batch model.CallBatch, tickets []displayTicketDTO) displ
|
||||
}
|
||||
}
|
||||
|
||||
func publicDisplayProjectView(project map[string]any) map[string]any {
|
||||
return map[string]any{
|
||||
"id": project["id"],
|
||||
"name": project["name"],
|
||||
"status": project["status"],
|
||||
"waiting_count": project["waiting_count"],
|
||||
"waiting_ticket_count": project["waiting_ticket_count"],
|
||||
"waiting_people_count": project["waiting_people_count"],
|
||||
"issued_ticket_count": project["issued_ticket_count"],
|
||||
"latest_ticket_number": project["latest_ticket_number"],
|
||||
"experienced_people": project["experienced_people"],
|
||||
"current_batch": project["current_batch"],
|
||||
"estimated_wait": project["estimated_wait"],
|
||||
"last_updated_at": project["last_updated_at"],
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) displayOverview(w http.ResponseWriter, r *http.Request) {
|
||||
var projects []model.Project
|
||||
if err := s.db.WithContext(r.Context()).Order("name ASC").Find(&projects).Error; err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
views := make([]map[string]any, 0, len(projects))
|
||||
for _, project := range projects {
|
||||
projection, _, _, _, _, err := s.adminProjectProjection(r.Context(), project)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
views = append(views, publicDisplayProjectView(projection))
|
||||
}
|
||||
writeJSON(w, http.StatusOK, map[string]any{"projects": views, "server_time": s.now()})
|
||||
}
|
||||
|
||||
func (s *Server) events(w http.ResponseWriter, r *http.Request) {
|
||||
projectID := strings.TrimSpace(r.URL.Query().Get("project_id"))
|
||||
if err := validateUUID(projectID); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user