AI copy-profile recommender
AI helper. Rekomendasikan pengaturan tujuan copy-trading yang aman dari profil risiko follower + deskripsi akun sumber (master). Diekspos melalui REST API, MCP tool, halaman Copy Trading. Advisory saja — tidak pernah membuat/memutasi profil; manusia (atau follow-up MCP call) menerapkan pengaturan.
Model
IAiFeatureService.RecommendCopyProfileAsync(riskProfile, sourceDescription, ct)— membangun request dari promptAiPrompts.CopyProfileSystem, mengembalikanAiResultyang teksnya = objek JSON pengaturan yang disarankan:riskMode(namaMoneyManagementMode),riskParameter,maxDrawdownPercent,dailyLossLimit,direction,copyStopLoss,copyTakeProfit,slippagePips,rationalependek.- Seperti setiap fitur AI, gate pada
App:Ai:ApiKey: tanpa key → panggilan mengembalikanAiResult.Fail(disabled), aplikasi tidak terpengaruh.
Permukaan
| Permukaan | Entri |
|---|---|
| REST | POST /api/ai/recommend-copy-profile { riskProfile, sourceDescription } → AiResult (fitur Ai, role User+) |
| MCP | CopyTools.RecommendCopyProfile(riskProfile, sourceDescription) (fitur CopyTrading, mendelegasikan ke AI service) |
| UI | Halaman Copy Trading → tombol AI suggest; rekomendasi render di inline alert |
Rekomendasi tidak auto-diterapkan dengan sengaja: follower meninjau, lalu membuat profil / tujuan melalui dialog Copy Trading normal (atau MCP client mem-parse JSON + memanggil endpoint create).
Tes
- Unit —
UnitTests/Ai/AiFeatureServiceRecommendTests.cs: profil risiko + deskripsi sumber diteruskan ke AI client di bawah copy-profile system prompt (NSubstitute). - Integrasi —
IntegrationTests/AiRecommendDisabledTests.cs: tanpa API key →AnthropicAiClientnyata +AiFeatureServicemenurun ke failure result (aplikasi berjalan tanpa key). - E2E —
E2ETests/AiCopyRecommendTests.cs: tombol AI suggest memanggil endpoint + render result (pesan "not configured" yang graceful di test env), membuktikan path UI → endpoint → AI.