|
@@ -43,7 +43,7 @@ class IntelligentExamController extends Controller
|
|
|
'grade' => 'nullable|string|max:50',
|
|
'grade' => 'nullable|string|max:50',
|
|
|
'total_questions' => 'required|integer|min:6|max:100',
|
|
'total_questions' => 'required|integer|min:6|max:100',
|
|
|
'difficulty_category' => 'nullable|string',
|
|
'difficulty_category' => 'nullable|string',
|
|
|
- 'kp_codes' => 'required|array|min:1',
|
|
|
|
|
|
|
+ 'kp_codes' => 'nullable|array',
|
|
|
'kp_codes.*' => 'string',
|
|
'kp_codes.*' => 'string',
|
|
|
'skills' => 'array',
|
|
'skills' => 'array',
|
|
|
'skills.*' => 'string',
|
|
'skills.*' => 'string',
|
|
@@ -62,6 +62,12 @@ class IntelligentExamController extends Controller
|
|
|
|
|
|
|
|
$data = $validator->validated();
|
|
$data = $validator->validated();
|
|
|
|
|
|
|
|
|
|
+ // 确保 kp_codes 是数组,如果为空则设置为空数组
|
|
|
|
|
+ $data['kp_codes'] = $data['kp_codes'] ?? [];
|
|
|
|
|
+ if (!is_array($data['kp_codes'])) {
|
|
|
|
|
+ $data['kp_codes'] = [];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
$questionTypeRatio = $this->normalizeQuestionTypeRatio($data['question_type_ratio'] ?? []);
|
|
$questionTypeRatio = $this->normalizeQuestionTypeRatio($data['question_type_ratio'] ?? []);
|
|
|
$difficultyRatio = $this->normalizeDifficultyRatio($data['difficulty_ratio'] ?? []);
|
|
$difficultyRatio = $this->normalizeDifficultyRatio($data['difficulty_ratio'] ?? []);
|
|
|
$paperName = $data['paper_name'] ?? ('智能试卷_' . now()->format('Ymd_His'));
|
|
$paperName = $data['paper_name'] ?? ('智能试卷_' . now()->format('Ymd_His'));
|
|
@@ -172,8 +178,20 @@ class IntelligentExamController extends Controller
|
|
|
*/
|
|
*/
|
|
|
private function normalizePayload(array $payload): array
|
|
private function normalizePayload(array $payload): array
|
|
|
{
|
|
{
|
|
|
- if (isset($payload['kp_codes']) && is_string($payload['kp_codes'])) {
|
|
|
|
|
- $payload['kp_codes'] = array_values(array_filter(array_map('trim', explode(',', $payload['kp_codes']))));
|
|
|
|
|
|
|
+ // 处理 kp_codes:空字符串或null转换为空数组
|
|
|
|
|
+ if (isset($payload['kp_codes'])) {
|
|
|
|
|
+ if (is_string($payload['kp_codes'])) {
|
|
|
|
|
+ $kpCodes = trim($payload['kp_codes']);
|
|
|
|
|
+ if (empty($kpCodes)) {
|
|
|
|
|
+ $payload['kp_codes'] = [];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $payload['kp_codes'] = array_values(array_filter(array_map('trim', explode(',', $kpCodes))));
|
|
|
|
|
+ }
|
|
|
|
|
+ } elseif (!is_array($payload['kp_codes'])) {
|
|
|
|
|
+ $payload['kp_codes'] = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $payload['kp_codes'] = [];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (isset($payload['skills']) && is_string($payload['skills'])) {
|
|
if (isset($payload['skills']) && is_string($payload['skills'])) {
|