Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5bc8f6a42b | ||
| 4fd5e900af |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.12.24",
|
||||
"version": "0.12.25",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "flyer-crawler",
|
||||
"version": "0.12.24",
|
||||
"version": "0.12.25",
|
||||
"dependencies": {
|
||||
"@bull-board/api": "^6.14.2",
|
||||
"@bull-board/express": "^6.14.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "flyer-crawler",
|
||||
"private": true,
|
||||
"version": "0.12.24",
|
||||
"version": "0.12.25",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "concurrently \"npm:start:dev\" \"vite\"",
|
||||
|
||||
@@ -331,7 +331,9 @@ describe('FlyerAiProcessor', () => {
|
||||
|
||||
expect(result.needsReview).toBe(true);
|
||||
expect(logger.warn).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ qualityIssues: ['Missing both valid_from and valid_to dates'] }),
|
||||
expect.objectContaining({
|
||||
qualityIssues: ['Missing validity dates (valid_from or valid_to)'],
|
||||
}),
|
||||
expect.stringContaining('AI response has quality issues.'),
|
||||
);
|
||||
});
|
||||
@@ -358,10 +360,10 @@ describe('FlyerAiProcessor', () => {
|
||||
qualityIssues: [
|
||||
'Missing store name',
|
||||
'No items were extracted',
|
||||
'Missing both valid_from and valid_to dates',
|
||||
'Missing validity dates (valid_from or valid_to)',
|
||||
],
|
||||
},
|
||||
'AI response has quality issues. Flagging for review. Issues: Missing store name, No items were extracted, Missing both valid_from and valid_to dates',
|
||||
'AI response has quality issues. Flagging for review. Issues: Missing store name, No items were extracted, Missing validity dates (valid_from or valid_to)',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -99,8 +99,8 @@ export class FlyerAiProcessor {
|
||||
}
|
||||
|
||||
// 4. Check for flyer validity dates.
|
||||
if (!valid_from && !valid_to) {
|
||||
qualityIssues.push('Missing both valid_from and valid_to dates');
|
||||
if (!valid_from || !valid_to) {
|
||||
qualityIssues.push('Missing validity dates (valid_from or valid_to)');
|
||||
}
|
||||
|
||||
const needsReview = qualityIssues.length > 0;
|
||||
|
||||
@@ -296,6 +296,23 @@ describe('E2E Receipt Processing Journey', () => {
|
||||
expect(reprocessResponse.status).toBe(200);
|
||||
expect(reprocessResponse.body.data.message).toContain('reprocessing');
|
||||
|
||||
// Wait for the reprocess job to complete before deleting
|
||||
await poll(
|
||||
async () => {
|
||||
const statusResponse = await getRequest()
|
||||
.get(`/api/v1/receipts/${receipt2Result.rows[0].receipt_id}`)
|
||||
.set('Authorization', `Bearer ${authToken}`);
|
||||
return statusResponse.status === 200
|
||||
? statusResponse.body
|
||||
: { data: { receipt: { status: 'pending' } } };
|
||||
},
|
||||
(result) => {
|
||||
const status = result.data?.receipt?.status;
|
||||
return status === 'completed' || status === 'failed';
|
||||
},
|
||||
{ timeout: 15000, interval: 1000, description: 'receipt reprocessing' },
|
||||
);
|
||||
|
||||
// Step 17: Delete the failed receipt
|
||||
const deleteResponse = await getRequest()
|
||||
.delete(`/api/v1/receipts/${receipt2Result.rows[0].receipt_id}`)
|
||||
|
||||
Reference in New Issue
Block a user