|
|
|
@ -41,10 +41,9 @@ export class McpService { |
|
|
|
userId |
|
|
|
}: z.infer<typeof GET_ACCOUNTS_PARAMETERS> & { userId: string }) { |
|
|
|
const filters = this.apiService.buildFiltersFromQueryParams({ |
|
|
|
...this.getHoldingFilterParameters({ holding }), |
|
|
|
filterByAccounts: accountIds, |
|
|
|
filterByAssetClasses: assetClasses, |
|
|
|
filterByDataSource: holding?.dataSource, |
|
|
|
filterBySymbol: holding?.symbol |
|
|
|
filterByAssetClasses: assetClasses |
|
|
|
}); |
|
|
|
|
|
|
|
const table = await this.portfolioTableService.getAccountsTable({ |
|
|
|
@ -78,9 +77,8 @@ export class McpService { |
|
|
|
} |
|
|
|
|
|
|
|
const filters = this.apiService.buildFiltersFromQueryParams({ |
|
|
|
filterByAssetClasses: assetClasses, |
|
|
|
filterByDataSource: holding?.dataSource, |
|
|
|
filterBySymbol: holding?.symbol |
|
|
|
...this.getHoldingFilterParameters({ holding }), |
|
|
|
filterByAssetClasses: assetClasses |
|
|
|
}); |
|
|
|
|
|
|
|
const table = await this.portfolioTableService.getActivitiesTable({ |
|
|
|
@ -123,11 +121,7 @@ export class McpService { |
|
|
|
permission: permissions.createActivity |
|
|
|
}); |
|
|
|
|
|
|
|
const ghostfolioDataSources = this.configurationService.get( |
|
|
|
'ENABLE_FEATURE_SUBSCRIPTION' |
|
|
|
) |
|
|
|
? this.configurationService.get('DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER') |
|
|
|
: []; |
|
|
|
const ghostfolioDataSources = this.getGhostfolioDataSources(); |
|
|
|
|
|
|
|
const activitiesDto = activities.map((activity) => { |
|
|
|
return { |
|
|
|
@ -171,11 +165,7 @@ export class McpService { |
|
|
|
|
|
|
|
const { items } = await this.symbolService.lookup({ query, user }); |
|
|
|
|
|
|
|
const ghostfolioDataSources = this.configurationService.get( |
|
|
|
'ENABLE_FEATURE_SUBSCRIPTION' |
|
|
|
) |
|
|
|
? this.configurationService.get('DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER') |
|
|
|
: []; |
|
|
|
const ghostfolioDataSources = this.getGhostfolioDataSources(); |
|
|
|
|
|
|
|
const assetProfiles = items.flatMap( |
|
|
|
({ |
|
|
|
@ -210,6 +200,24 @@ export class McpService { |
|
|
|
return this.getTextResult(JSON.stringify({ assetProfiles }, null, 2)); |
|
|
|
} |
|
|
|
|
|
|
|
private getGhostfolioDataSources() { |
|
|
|
return this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') |
|
|
|
? this.configurationService.get('DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER') |
|
|
|
: []; |
|
|
|
} |
|
|
|
|
|
|
|
private getHoldingFilterParameters({ |
|
|
|
holding |
|
|
|
}: Pick<z.infer<typeof GET_ACCOUNTS_PARAMETERS>, 'holding'>) { |
|
|
|
return { |
|
|
|
filterByDataSource: getUnmaskedGhostfolioDataSource({ |
|
|
|
dataSource: holding?.dataSource, |
|
|
|
ghostfolioDataSources: this.getGhostfolioDataSources() |
|
|
|
}), |
|
|
|
filterBySymbol: holding?.symbol |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private getTextResult(text: string) { |
|
|
|
return { content: [{ text, type: 'text' as const }] }; |
|
|
|
} |
|
|
|
|