Browse Source

Fix import of activities with Ghostfolio AI

pull/8128/head
Thomas Kaul 4 days ago
parent
commit
393b135ffa
  1. 6
      apps/api/src/app/endpoints/ai/ai.controller.spec.ts
  2. 6
      apps/api/src/app/endpoints/ai/ai.controller.ts
  3. 2
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
  4. 1
      libs/common/src/lib/config.ts

6
apps/api/src/app/endpoints/ai/ai.controller.spec.ts

@ -7,7 +7,7 @@ import {
AI_ACTIVITIES_TIMEOUT,
AI_MAX_ACTIVITIES,
THROTTLE_AI_ACTIVITIES_LIMIT,
THROTTLE_DAILY_TTL
THROTTLE_AI_ACTIVITIES_TTL
} from '@ghostfolio/common/config';
import { permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
@ -93,7 +93,7 @@ describe('AiController', () => {
});
describe('getActivitiesFromFile', () => {
it('Requires the permission and limits the requests of each user per day', () => {
it('Requires the permission and limits the requests of each user per week', () => {
expect(getMetadataOfMethod<string>(HAS_PERMISSION_KEY)).toBe(
permissions.importActivitiesWithAi
);
@ -110,7 +110,7 @@ describe('AiController', () => {
);
expect(getMetadataOfMethod<number>(`${THROTTLER_TTL}default`)).toBe(
THROTTLE_DAILY_TTL
THROTTLE_AI_ACTIVITIES_TTL
);
expect(

6
apps/api/src/app/endpoints/ai/ai.controller.ts

@ -12,7 +12,7 @@ import {
AI_ACTIVITIES_TIMEOUT,
AI_MAX_ACTIVITIES,
THROTTLE_AI_ACTIVITIES_LIMIT,
THROTTLE_DAILY_TTL
THROTTLE_AI_ACTIVITIES_TTL
} from '@ghostfolio/common/config';
import {
AiActivitiesResponse,
@ -67,7 +67,7 @@ export class AiController {
/**
* Reads the activities of a CSV, JPEG, PDF or PNG file with Ghostfolio AI,
* without saving anything. The client imports the activities which the user
* selects with POST api/v1/import. The daily limit applies to each user
* selects with POST api/v1/import. The weekly limit applies to each user
* instead of each IP address. The models stop if the client closes the
* request before the response or at the timeout. An error whose message is
* written for the caller gives the status 400 with this message, the
@ -82,7 +82,7 @@ export class AiController {
return user.id;
},
limit: THROTTLE_AI_ACTIVITIES_LIMIT,
ttl: THROTTLE_DAILY_TTL
ttl: THROTTLE_AI_ACTIVITIES_TTL
}
})
@UseGuards(AuthGuard('jwt'), HasPermissionGuard, CustomThrottlerGuard)

2
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts

@ -371,7 +371,7 @@ export class GfImportActivitiesDialogComponent {
/**
* Gives the error message of a file which the server rejects, as a rejected
* file counts towards the daily limit of Ghostfolio AI
* file counts towards the weekly limit of Ghostfolio AI
*/
private async getErrorMessageOfFileForGhostfolioAi({
file,

1
libs/common/src/lib/config.ts

@ -420,6 +420,7 @@ export const TAG_IDS_SYSTEM = [
];
export const THROTTLE_AI_ACTIVITIES_LIMIT = 25;
export const THROTTLE_AI_ACTIVITIES_TTL = ms('1 week');
export const THROTTLE_DAILY_KEY = 'daily';
export const THROTTLE_DAILY_TTL = ms('1 day');
export const THROTTLE_DEFAULT_LIMIT = 10;

Loading…
Cancel
Save