AI copy-profile recommender
AI helper. Recommend safe copy-trading destination settings από follower risk profile + source (master) account description. Exposed πάνω από REST API, MCP tool, Copy Trading page. Advisory μόνο — ποτέ δεν δημιουργεί/mutate profile; ο χρήστης (ή follow-up MCP call) εφαρμόζει settings.
Model
IAiFeatureService.RecommendCopyProfileAsync(riskProfile, sourceDescription, ct)— κατασκευάστε request απόAiPrompts.CopyProfileSystemprompt, επιστρέψτεAiResultτου οποίου το text = JSON object των suggested settings:riskMode(έναMoneyManagementModename),riskParameter,maxDrawdownPercent,dailyLossLimit,direction,copyStopLoss,copyTakeProfit,slippagePips, shortrationale.- Όπως κάθε AI feature, gated σε
App:Ai:ApiKey: χωρίς key → κλήση returnAiResult.Fail(disabled), app unaffected.
Surfaces
| Surface | Entry |
|---|---|
| REST | POST /api/ai/recommend-copy-profile { riskProfile, sourceDescription } → AiResult (feature Ai, role User+) |
| MCP | CopyTools.RecommendCopyProfile(riskProfile, sourceDescription) (feature CopyTrading, delegates στο AI service) |
| UI | Copy Trading page → AI suggest button; η recommendation renders σε inline alert |
Recommendation δεν auto-applied σκοπίμως: ο follower reviews, τότε δημιουργεί profile / destination μέσω normal Copy Trading dialog (ή MCP client αναλύει JSON + καλεί create endpoints).
Tests
- Unit —
UnitTests/Ai/AiFeatureServiceRecommendTests.cs: risk profile + source description forwarded στο AI client κάτω από copy-profile system prompt (NSubstitute). - Integration —
IntegrationTests/AiRecommendDisabledTests.cs: χωρίς API key → πραγματικόAnthropicAiClient+AiFeatureServicedegrade σε failure result (app τρέχει χωρίς key). - E2E —
E2ETests/AiCopyRecommendTests.cs: AI suggest button καλεί endpoint + renders result (graceful "not configured" message σε test env), proving UI → endpoint → AI path.