feat: 完成模拟交易闭环、App 与 A 股行情接入
Checks / verify (push) Failing after 9m52s

统一单入口 Go 工程与前端依赖目录,增加后台供应商配置、候选审核、计划预算、成交冲正、持仓复盘和站内通知。接入策略版本、Python 回测、可配置 A 股公开行情及 zap 文件轮转日志,补充迁移、契约与验证。
This commit is contained in:
2026-10-08 22:58:52 +08:00
parent bffdb3858b
commit 92329ddce2
145 changed files with 18593 additions and 587 deletions
+9
View File
@@ -0,0 +1,9 @@
import {request} from "./auth"
export type CandidateContent={symbol:string;exchange:string;name:string;strategy_code:string;title:string;thesis:string;evidence:{source_url:string;locator:string;summary:string}[];counter_evidence:string;invalidation:string;reference_plan:{entry_low:string;entry_high:string;stop_loss:string;target_price:string}}
export type Candidate={id:string;candidate_id:string;revision:number;version:number;status:string;data_mode:"simulation";content:CandidateContent;observed_at:string;valid_until:string;published_at:string|null;is_latest:boolean;is_active_publication:boolean;reviews?:{id:string;decision:string;reason:string;input_version:number;created_at:string}[]}
export type Draft={content:CandidateContent;observed_at:string;valid_until:string}
export const states:Record<string,string>={DRAFT:"草稿",PENDING_REVIEW:"待审核",PUBLISHED:"已发布",RETURNED:"已退回",WITHDRAWN:"已撤回"}
export function getCandidates(signal?:AbortSignal,status=""){return request<Candidate[]>(`/api/admin/v1/candidates${status?`?status=${encodeURIComponent(status)}`:""}`,{signal})}
export function getCandidate(id:string,signal?:AbortSignal){return request<Candidate>(`/api/admin/v1/candidates/${id}`,{signal})}
export function saveDraft(input:Draft,source?:Candidate){return request<Candidate>(source?`/api/admin/v1/candidates/${source.id}/revisions`:"/api/admin/v1/candidates",{method:"POST",body:JSON.stringify({...input,...(source?{expected_version:source.version}:{})})})}
export function actOnCandidate(candidate:Candidate,action:string,reason:string){return request<Candidate>(`/api/admin/v1/candidates/${candidate.id}/${action}`,{method:"POST",body:JSON.stringify({expected_version:candidate.version,reason})})}