Larian pengesahan salinan perdagangan (2026-07-10)
Pengesahan penuh kerja salinan perdagangan yang tinggal — kesemua di bawah sebenarnya dilaksanakan, bukan sahaja ditulis.
Langsung (akaun demo cTrader sebenar) — 8/8 lulus
1:1 · 1:banyak · songsang · lintas-cID · partial-close · pending limit + batal · trailing stop · token-refresh.
Senario langsung ditambahkan RunPendingAsync / RunTrailingAsync (+ LoadSpotPriceAsync, OpenPositionSnapshot.StopLoss/TrailingStopLoss).
Integrasi (Postgres sebenar, Testcontainers) — lulus
CopyNodeAffinityTests— tuntutan atomik penyelia sebenar: nod pertama menuntut semua profil berjalan, nod kedua menuntut 0 (tiada salinan berganda); jeda melepaskan + exigam.TokenRotationSignatureTests— tandatangan berubah hanya pada token sebenar berputar.
Dalam-kluster (kind + Helm) — lulus
kind/kubectl/helm dipasang, lari scripts/k8s-e2e.sh terhadap kluster kind sebenar:
- Kerja Deterministik: 101 lulus dalam-kluster.
- Kerja Langsung: 8 lulus dalam-kluster (init-container
seed-secretsmenyalin Rahsia → emptyDir boleh tulis, akaun demo sebenar). - Kerja
Complete 1/1, skrip keluar 0.
Pepijat ditemui semasa pengesahan (diperbaiki + disahkan semula)
- Peristiwa yang belum selesai: cTrader melampirkan placeholder Position bukan terbuka pada
ORDER_ACCEPTED/CANCELLEDuntuk had/dog hold yang melanggar.SourceExecutionsAsyncsekarang mengklasifikasikan penempatan/batal pesanan sebagai peristiwa pesanan sebelum cawangan posisi, tetapi membiarkan had/dog hold fill (cth. stop-loss mencetuskan tutup) jatuh melalui ke laluan tutup. - Token penyegaran sekali-guna: cTrader memutar token penyegaran setiap penyegaran. Cache baca sahaja yang tidak boleh mengekalkan membatalkan dirinya. Kerja K8s langsung therefore menyalin Rahsia ke emptyDir boleh tulis; kerja lalai kepada suite deterministik.
SaveTokenssekarang usaha terbaik. Simbol langsung dipaksa kepada FX (BTCUSD trailing membaiki broker yang ditolak). - Penamaan imej skrip dibetulkan untuk match Helm
registry/repositorysplit +pullPolicy=Never.
Program advanced mirroring + kitaran hayat token + penskalaan (2026-07-10) — lapisan deterministik lulus
Program susulan menambah penapisan jenis pesanan, salinan tamat tempoh pesanan tertunda, slippage julat pasaran / stop-limit, SL/TP salinan Togol, pertukaran token di tempat yang aman (satu token sah setiap cID), simulator yang setia kepada cTrader, lesen nod penyembuhan diri, fail kredensi dev yang disatukan.
- Unit — 210 lulus (
dotnet test tests/UnitTests). Perlindungan salinan baharu: penapis jenis pesanan (buka + tertunda), slippage mirror julat pasaran + harga asas, tamat tempoh salinan atas/matikan, slippage stop-limit, amend tertunda, buka-dengan-master-terbuka, putuskan→master-dagang→sambung semula resync (buka hilang + tutup orphan), pertukaran token di tempat (tiada restart), pembatalan lintas-cID, invariant domain, pemilikan lesen, bumbunan versi token. - Integrasi (Postgres sebenar, Testcontainers) — lulus:
CopyNodeAffinityTests(tuntutan atomik, tiada salinan berganda, pelepasan jeda, lesen luput dituntut oleh nod lain),TokenRotationSignatureTests(tandatangan berubah pada bumbunan versi token),OpenApiAuthorizationPersistenceTests(TokenVersion bertekak + meningkat pada penyegaran). - E2E (
tests/E2ETests): pusingan pilihan destinasi sekarang menegaskan penapis jenis pesanan, salinan-tamat, slippage seiring dengan kitaran hayat penuh. - Bina: bersih di bawah
TreatWarningsAsErrors;get_file_problemsbersih pada fail yang diubah.
Senario langsung (akaun demo cTrader sebenar) untuk stop-tertunda, julat pasaran, tamat, buka-dengan-terbuka,
putaran token tengah-lari ditulis terhadap enjin yang sama; lari dengan secrets/dev-credentials.local.json berpadu
mengikut dev-credentials.md.
Tindak lanjut yang diketahui
Jalankan semula secara langsung Kluster live Token sekali-guna berputar; regenerate cache tempatan dengan
CMIND_ONBOARD=1 dotnet test tests/E2ETests --filter FullyQualifiedName~OnboardingTests
(cTrader mengekang halaman OAuth mereka sebaik sahaja lari — cuba semula apabila jelas).