212ad6426d
- Task 加 raw_result 字段;orchestrator get_raw_result(内存存 FactorReport)
- 路由 /factor/list、/task/{id}/ic-summary、/task/{id}/report/{factor}(query token 给 iframe)
- analyzer cfg=None 时加载 data_platform.yaml(修 API 路径 read_db_daily 崩)
- get_status 返回 error_msg(调试+前端 failed 展示)
- 前端 投研-新建(多因子/多标的/日期)+ 结果页(IC 表 + tears iframe)
- factor 冒烟通过:ma5 → IC 1D/5D/10D 真实数据
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { apiClient } from './client'
|
|
import { useAuthStore } from '@/stores/auth'
|
|
|
|
export interface FactorItem {
|
|
name: string
|
|
category: string
|
|
}
|
|
|
|
export interface FactorSubmit {
|
|
symbols: string[]
|
|
factor_names: string[]
|
|
start: string
|
|
end: string
|
|
}
|
|
|
|
export async function getFactors(): Promise<FactorItem[]> {
|
|
const { data } = await apiClient.get<{ factors: FactorItem[] }>('/factor/list')
|
|
return data.factors
|
|
}
|
|
|
|
export async function submitFactor(req: FactorSubmit): Promise<string> {
|
|
const { data } = await apiClient.post<{ task_id: string }>('/factor/analyze', req)
|
|
return data.task_id
|
|
}
|
|
|
|
export async function getIcSummary(taskId: string): Promise<Record<string, unknown>> {
|
|
const { data } = await apiClient.get<{ ic_summary: Record<string, unknown> }>(`/task/${taskId}/ic-summary`)
|
|
return data.ic_summary
|
|
}
|
|
|
|
/** Report URL with token in query (iframe can't set Authorization header). */
|
|
export function reportUrl(taskId: string, factor: string): string {
|
|
const auth = useAuthStore()
|
|
return `/api/v1/task/${taskId}/report/${factor}?token=${encodeURIComponent(auth.token ?? '')}`
|
|
}
|