Spaces:
Running
Running
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);
|