10 Commits

Author SHA1 Message Date
a9132109da refactor(frontend): create shared/api layer with re-export shims 2026-06-20 14:54:52 +03:00
5cb51e44f2 chore: sync broker portfolio contract 2026-06-19 06:00:15 +03:00
608e521674 feat(frontend): add BrokerPositionsPage types, API, and hook 2026-06-17 14:43:50 +03:00
50bff3dbe7 feat: add broker frontend api hooks 2026-06-16 22:56:20 +03:00
96f003852d feat: implement portfolio analytics, PnL calculation, and security screener
Some checks failed
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
7b3b77f35e feat(frontend): add enrichment fields to Portfolio type 2026-06-14 14:12:20 +03:00
a980520261 feat: portfolio management with share/bond separation
Some checks failed
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
Some checks failed
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
c2478277e6 feat: add authentication system with JWT + RBAC
Some checks failed
CI / lint (pull_request) Failing after 1m45s
CI / test (pull_request) Failing after 1m42s
CI / build (pull_request) Failing after 1m31s
CI / lint (push) Failing after 1m46s
CI / test (push) Failing after 1m34s
CI / build (push) Failing after 1m35s
Backend:
- AuthModule with register, login, logout, refresh, profile endpoints
- JwtAuthGuard (global, opt-out via @Public) + RolesGuard (@Roles)
- PrismaModule with SQLite via @prisma/adapter-libsql (Prisma 7)
- Auth configuration in configuration.ts

Frontend:
- Auth context with session restoration via refresh cookie
- Login, Register, Profile pages with ProtectedRoute
- Auto-refresh on 401 with token rotation
- API client refactored for auth headers

Russian text: auth flows translated to Russian
All text translated: auth pages, profile, layout, loading states
2026-06-13 22:24:46 +03:00
4b753266b3 feat: frontend API layer, Layout, SearchBar, HomePage
- Add typed API response types and fetch client (responses.ts + client.ts)
- Add useSearch hook with TanStack Query
- Add Layout with header and search bar
- Add SearchBar with debounced search and dropdown
- Implement HomePage, StockPage, BondPage with data loading
2026-06-13 19:16:10 +03:00