lrj
9 小时以前 ae3349d2ff53767b5bc9cb30e1bf7e15f9e814ee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
extend type Query {
    "获取所有评委列表"
    judges: [JudgeResponse]
    
    "根据名称搜索评委"
    judgesByName(name: String): [JudgeResponse]
    
    "根据ID获取评委详情"
    judge(id: ID): JudgeResponse
    
    "获取腾讯云COS临时上传凭证"
    getUploadCredentials: CosCredentials
    
    # 评委评审相关查询
    "获取提交详情"
    getSubmissionDetail(submissionId: ID!): SubmissionDetailResponse
 
    # 检查评审状态
    checkReviewStatus(submissionId: ID!): ReviewStatusResponse
    
    # 获取评委统计数据
    judgeStats: JudgeStatsResponse
}
 
extend type Mutation {
    "保存评委信息(新增或修改)"
    saveJudge(input: JudgeInput): JudgeResponse
    
    "删除评委"
    deleteJudge(id: ID): Boolean
    
    # 评审相关mutation
    "保存评审草稿"
    saveReviewDraft(input: ReviewDraftInput!): ReviewDraftResponse
    
    "提交评审"
    submitReview(input: ReviewSubmitInput!): ReviewSubmitResponse
}
 
"评委输入类型"
input JudgeInput {
    id: ID
    name: String
    title: String
    company: String
    phone: String
    password: String
    gender: Int
    description: String
    introduction: String
    avatarUrl: String
    avatarMediaId: ID
    majorIds: [ID]
    tagNames: [String]
}
 
"评委响应类型"
type JudgeResponse {
    id: ID
    name: String
    title: String
    company: String
    phone: String
    gender: Int
    description: String
    introduction: String
    avatarUrl: String
    specialties: [TagResponse]
    tags: [TagResponse]
}
 
# 标签响应类型(用于评委专业领域)
type TagResponse {
    id: Long!
    name: String!
    code: String
}
 
 
 
"腾讯云COS临时凭证类型"
type CosCredentials {
    bucket: String
    region: String
    key: String
    presignedUrl: String
    expiration: String
}
 
# 提交详情响应类型
type SubmissionDetailResponse {
    id: ID!
    activityId: ID!
    playerId: ID!
    playerName: String
    projectName: String
    description: String
    submissionFiles: [SubmissionMediaResponse]
    currentScore: Float
    maxScore: Int
    reviewStatus: String
}
 
# 评审状态响应类型
type ReviewStatusResponse {
    submissionId: ID!
    reviewStatus: String
    canReview: Boolean
    hasReviewed: Boolean
    currentScore: Float
    reviewTime: String
}
 
# 评审草稿输入类型
input ReviewDraftInput {
    submissionId: ID!
    scores: [ReviewScoreInput!]!
    comments: String
}
 
# 评审提交输入类型
input ReviewSubmitInput {
    submissionId: ID!
    scores: [ReviewScoreInput!]!
    comments: String
    finalScore: Float!
}
 
# 评审分数输入类型
input ReviewScoreInput {
    itemId: ID!
    score: Float!
}
 
# 评审草稿响应类型
type ReviewDraftResponse {
    id: ID!
    submissionId: ID!
    status: String
    saveTime: String
}
 
# 评审提交响应类型
type ReviewSubmitResponse {
    id: ID!
    submissionId: ID!
    finalScore: Float!
    status: String
    submitTime: String
}
 
# 评委统计响应类型
type JudgeStatsResponse {
    pendingReviews: Int!
    completedReviews: Int!
    totalReviews: Int!
}