Кабинет: оценка портфеля по ценам QUIK и карточка бумаги из справочника депозитария
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -236,15 +236,63 @@ func registerLKAPI(mux *http.ServeMux, rc *RuntimeConfig, svc *Service) {
|
||||
}
|
||||
pos = p2
|
||||
}
|
||||
total, priced := lkApplyPrices(r.Context(), rc, pos)
|
||||
lkJSON(w, http.StatusOK, map[string]any{
|
||||
"contract": u.Contract,
|
||||
"full_name": u.FullName,
|
||||
"positions": pos,
|
||||
"source": source,
|
||||
"read_only": readOnly,
|
||||
"contract": u.Contract,
|
||||
"full_name": u.FullName,
|
||||
"positions": pos,
|
||||
"source": source,
|
||||
"read_only": readOnly,
|
||||
"total_value": total, // оценка портфеля, 0 — цен нет
|
||||
"priced": priced, // по скольким бумагам есть цена
|
||||
})
|
||||
})
|
||||
|
||||
// Карточка бумаги: реквизиты выпуска, цена, позиция клиента, график выплат.
|
||||
mux.HandleFunc("/api/lk/security", func(w http.ResponseWriter, r *http.Request) {
|
||||
if !auth(w, r) {
|
||||
return
|
||||
}
|
||||
u, ok := current(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
isin := strings.ToUpper(strings.TrimSpace(r.URL.Query().Get("isin")))
|
||||
if isin == "" {
|
||||
lkJSON(w, http.StatusBadRequest, map[string]string{"error": "не указана бумага"})
|
||||
return
|
||||
}
|
||||
var pos *ClientPosition
|
||||
if dp, err := depoClientPositions(r.Context(), rc.Snapshot().Fancy, u.Contract); err == nil && len(dp) > 0 {
|
||||
for _, p := range depoPositionsAsClient(dp) {
|
||||
if strings.EqualFold(p.ISIN, isin) {
|
||||
cp := p
|
||||
pos = &cp
|
||||
break
|
||||
}
|
||||
}
|
||||
} else if p2, err2 := lkClientPositions(r.Context(), rc, u.Contract); err2 == nil {
|
||||
for _, p := range markTransferable(p2) {
|
||||
if strings.EqualFold(p.ISIN, isin) {
|
||||
cp := p
|
||||
pos = &cp
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if pos != nil {
|
||||
one := []ClientPosition{*pos}
|
||||
lkApplyPrices(r.Context(), rc, one)
|
||||
pos = &one[0]
|
||||
}
|
||||
card, err := securityCard(r.Context(), rc, isin, pos)
|
||||
if err != nil {
|
||||
lkJSON(w, http.StatusBadRequest, map[string]string{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
lkJSON(w, http.StatusOK, map[string]any{"security": card})
|
||||
})
|
||||
|
||||
mux.HandleFunc("/api/lk/claims", func(w http.ResponseWriter, r *http.Request) {
|
||||
if !auth(w, r) {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user