Spaces:
Sleeping
Sleeping
Add word length validation to batch processing
Browse files- Enforce level-based word length constraints in processBothPassages
- Add validation logging for batch word selection
- Prevent oversized words like 'penetrating' for levels 3-4
- src/aiService.js +22 -0
src/aiService.js
CHANGED
@@ -411,6 +411,28 @@ Return as JSON: {"passage1": {...}, "passage2": {...}}`
|
|
411 |
parsed.passage1.words = parsed.passage1.words.filter(word => word && word.trim() !== '');
|
412 |
parsed.passage2.words = parsed.passage2.words.filter(word => word && word.trim() !== '');
|
413 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
414 |
return parsed;
|
415 |
} catch (e) {
|
416 |
console.error('Failed to parse batch response:', e);
|
|
|
411 |
parsed.passage1.words = parsed.passage1.words.filter(word => word && word.trim() !== '');
|
412 |
parsed.passage2.words = parsed.passage2.words.filter(word => word && word.trim() !== '');
|
413 |
|
414 |
+
// Validate word lengths based on level
|
415 |
+
const validateWords = (words) => {
|
416 |
+
return words.filter(word => {
|
417 |
+
const cleanWord = word.replace(/[^a-zA-Z]/g, '');
|
418 |
+
if (level <= 2) {
|
419 |
+
return cleanWord.length >= 4 && cleanWord.length <= 7;
|
420 |
+
} else if (level <= 4) {
|
421 |
+
return cleanWord.length >= 4 && cleanWord.length <= 10;
|
422 |
+
} else {
|
423 |
+
return cleanWord.length >= 5 && cleanWord.length <= 14;
|
424 |
+
}
|
425 |
+
});
|
426 |
+
};
|
427 |
+
|
428 |
+
const originalP1Count = parsed.passage1.words.length;
|
429 |
+
const originalP2Count = parsed.passage2.words.length;
|
430 |
+
|
431 |
+
parsed.passage1.words = validateWords(parsed.passage1.words);
|
432 |
+
parsed.passage2.words = validateWords(parsed.passage2.words);
|
433 |
+
|
434 |
+
console.log(`✅ Level ${level} batch validation: P1 ${parsed.passage1.words.length}/${originalP1Count}, P2 ${parsed.passage2.words.length}/${originalP2Count} words passed`);
|
435 |
+
|
436 |
return parsed;
|
437 |
} catch (e) {
|
438 |
console.error('Failed to parse batch response:', e);
|