d16078fce9
docs: add broker operations UI improvements spec
2026-06-17 13:37:52 +03:00
bd8d6c11fe
feat: improove ui
CI / lint (pull_request) Successful in 2m3s
CI / test (pull_request) Successful in 2m5s
CI / build (pull_request) Successful in 2m0s
CI / lint (push) Successful in 1m55s
CI / test (push) Successful in 8m13s
CI / build (push) Successful in 2m8s
2026-06-17 13:15:01 +03:00
a8715258ca
fix: avoid stale tbank grpc deadlines
CI / lint (pull_request) Successful in 2m15s
CI / test (pull_request) Successful in 2m2s
CI / build (pull_request) Successful in 2m7s
CI / lint (push) Successful in 2m2s
CI / test (push) Successful in 2m10s
CI / build (push) Successful in 2m7s
2026-06-17 12:08:48 +03:00
8c2a6c9e3c
fix: trust tbank grpc root certificate
CI / lint (pull_request) Successful in 2m11s
CI / test (pull_request) Successful in 1m58s
CI / build (pull_request) Successful in 2m3s
CI / lint (push) Successful in 1m57s
CI / test (push) Successful in 2m4s
CI / build (push) Successful in 2m8s
2026-06-17 07:39:37 +03:00
ea916dfec9
fix: restrict and expose tbank broker sync
2026-06-17 06:57:49 +03:00
b10a2cfb0d
docs: document tbank invest integration
2026-06-17 06:49:09 +03:00
3fe4e7a4ec
fix: harden tbank operation sync
2026-06-17 06:47:18 +03:00
6e30177294
feat: persist tbank broker operations
2026-06-17 06:44:45 +03:00
ead40bff6f
feat: add broker portfolio UI
2026-06-16 23:05:52 +03:00
50bff3dbe7
feat: add broker frontend api hooks
2026-06-16 22:56:20 +03:00
b848d256d1
fix: load tbank proto contracts at runtime
2026-06-16 22:54:21 +03:00
d01d2b9f7f
feat: expose tbank broker operations
2026-06-16 22:46:19 +03:00
bd6b2589c0
feat: expose tbank broker portfolio
2026-06-16 22:43:40 +03:00
ddeab01b9e
feat: expose tbank broker accounts
2026-06-16 22:34:12 +03:00
4ef2f8d05e
feat: add tbank grpc client service
2026-06-16 22:23:33 +03:00
825095106c
feat: add tbank domain mappers
2026-06-16 22:20:01 +03:00
7a8bc7c90a
feat: configure tbank integration
2026-06-16 22:15:31 +03:00
526e5dc5f3
feat: add tbank invest proto contracts
2026-06-16 22:10:54 +03:00
a971d0c8bf
docs: require russian specs
2026-06-16 06:01:48 +03:00
a3817edfc7
docs: add tbank broker portfolios design
2026-06-16 05:40:53 +03:00
106467e5c4
docs: translate docs to russian
CI / lint (pull_request) Successful in 2m8s
CI / test (pull_request) Successful in 1m57s
CI / build (pull_request) Successful in 2m5s
CI / lint (push) Successful in 2m1s
CI / test (push) Successful in 1m51s
CI / build (push) Successful in 2m9s
2026-06-16 05:13:34 +03:00
739405a597
docs: consolidate SDD documentation
CI / lint (pull_request) Successful in 2m10s
CI / build (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-15 21:04:24 +03:00
117f182851
docs: refresh project documentation
CI / lint (pull_request) Successful in 2m14s
CI / test (pull_request) Successful in 1m52s
CI / build (pull_request) Failing after 2m15s
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-15 20:02:50 +03:00
c062850e83
docs: refine openapi null response schema
2026-06-15 19:54:31 +03:00
835686d886
docs: improve openapi schema metadata
2026-06-15 05:58:45 +03:00
143b4758c3
docs: refresh openapi contract artifacts
2026-06-15 05:31:55 +03:00
44e13cc67e
test: cover checked-in openapi artifacts
2026-06-15 05:05:13 +03:00
974c83d67e
test: make backend service specs deterministic
2026-06-15 04:56:53 +03:00
c994b6a2fb
test: split moex live integration checks
2026-06-15 04:47:13 +03:00
bc2d2af141
docs: add quality gate implementation plan
2026-06-14 22:01:36 +03:00
2e79e69403
docs: translate quality gate spec to russian
2026-06-14 21:50:58 +03:00
ee88b29181
docs: add quality gate contract docs spec
2026-06-14 21:46:38 +03:00
96f003852d
feat: implement portfolio analytics, PnL calculation, and security screener
...
CI / lint (pull_request) Failing after 1m48s
CI / test (pull_request) Successful in 1m47s
CI / build (pull_request) Successful in 1m53s
CI / lint (push) Failing after 1m59s
CI / test (push) Successful in 1m56s
CI / build (push) Successful in 1m50s
- Add buyPrice and buyDate to positions for PnL tracking
- Implement backend analytics service for real-time portfolio performance
- Add server-side security screener with filtering, sorting, and pagination
- Update frontend UI with analytics summaries and sortable screener table
- Optimize MOEX API calls with batch fetching and portfolio-specific caching
- Add unit tests for analytics and screener services
2026-06-14 15:59:25 +03:00
1017fd4f08
docs: add spec and plan for portfolio list enrichment
CI / lint (pull_request) Successful in 2m31s
CI / test (pull_request) Successful in 1m37s
CI / build (pull_request) Successful in 1m57s
CI / lint (push) Successful in 1m57s
CI / test (push) Successful in 1m48s
CI / build (push) Successful in 1m54s
2026-06-14 14:18:29 +03:00
2d2089915d
feat(frontend): display enriched data in PortfolioCard
2026-06-14 14:13:31 +03:00
7b3b77f35e
feat(frontend): add enrichment fields to Portfolio type
2026-06-14 14:12:20 +03:00
a8b3b55896
feat(backend): add Swagger decorators for enriched portfolio list
2026-06-14 14:11:05 +03:00
f0e5e36b7d
feat(backend): enrich portfolio list with MOEX batch data
2026-06-14 14:08:43 +03:00
25a6d22a0c
test(backend): add failing tests for portfolio list enrichment
2026-06-14 14:08:11 +03:00
461a5b1ca6
feat(backend): add PortfolioListResponseDto
2026-06-14 14:02:01 +03:00
38729249f3
fix: exclude test files from frontend tsc build
...
CI / lint (pull_request) Successful in 1m46s
CI / test (pull_request) Successful in 1m48s
CI / build (pull_request) Successful in 1m56s
CI / lint (push) Successful in 1m51s
CI / test (push) Successful in 1m51s
CI / build (push) Successful in 1m46s
Test files use vitest globals (vi, describe, afterEach) not available
to tsc. Exclude them from build type-check via tsconfig exclude block.
2026-06-14 13:41:17 +03:00
60e456fbb5
perf: reduce portfolio enrichment from 298 to 2 MOEX API calls (-99.3%)
...
Three optimizations:
1. Merge getBondData + getBondMarketData into single batch call
(same endpoint, parse both tables)
2. Remove redundant getSecurityDescription for shortName
(shortName already in market data responses)
3. Batch by market: 1 call for all shares, 1 call for all bonds
(instead of N individual calls)
Before: 298 API calls for 104 positions -> ~29.8s
After: 2 API calls for 104 positions -> ~0.3s
2026-06-14 13:19:22 +03:00
4c15bda30e
feat: add allocation donut chart to portfolio summary
CI / lint (pull_request) Successful in 1m54s
CI / test (pull_request) Successful in 1m51s
CI / build (pull_request) Failing after 1m51s
CI / lint (push) Successful in 1m54s
CI / test (push) Successful in 1m36s
CI / build (push) Failing after 1m54s
2026-06-14 13:02:24 +03:00
a980520261
feat: portfolio management with share/bond separation
...
CI / lint (pull_request) Successful in 1m59s
CI / test (pull_request) Successful in 1m45s
CI / build (pull_request) Failing after 1m54s
CI / lint (push) Successful in 1m50s
CI / test (push) Successful in 1m47s
CI / build (push) Failing after 2m3s
- Add Portfolio + Position models (Prisma + migrations)
- Backend: PortfolioModule with CRUD, enrichment, type detection
- Backend: enrichBondPosition returns 13 financial fields (YTM, duration,
coupon, NCD, accrued interest, bid/offer, bondType, offerDate, etc.)
- Frontend: portfolio pages, 4 TanStack Query hooks, split share/bond tables
- Fix: MOEX bond marketdata board fallback (TQCB → TQOB for OFZ)
- Frontend: clickable ticker links to /stocks/:secid and /bonds/:secid
- Remove: target allocation, deviation, tags display from Phase 1
- Docs: ADR-009 (domain model), ADR-010 (price computation),
portfolio backend doc, superpowers spec + plan
2026-06-14 11:14:04 +03:00
ca4a8b35f3
fix: null safety for market data components and backend CI
CI / lint (pull_request) Successful in 1m54s
CI / test (pull_request) Successful in 1m46s
CI / build (pull_request) Failing after 1m50s
2026-06-14 09:22:02 +03:00
a14e24d8e8
chore: commit docs and lockfile changes
CI / lint (pull_request) Successful in 1m58s
CI / test (pull_request) Failing after 1m43s
CI / build (pull_request) Failing after 1m42s
CI / lint (push) Successful in 1m44s
CI / test (push) Failing after 1m46s
CI / build (push) Failing after 1m32s
2026-06-14 09:10:33 +03:00
5ff9cd6190
fix: remove unused parserOptions.project in frontend ESLint, fix prettier glob pattern
2026-06-14 09:05:57 +03:00
6a7706f7be
chore: update root lint script to cover both workspaces
2026-06-14 09:03:39 +03:00
515e59600f
feat: add Husky pre-commit hook with lint-staged
2026-06-14 09:02:48 +03:00
090a2b613f
feat: add ESLint config for frontend
2026-06-14 08:58:55 +03:00