Files
sanguo_vnpy_v2/frontend/src/views/factor/New.vue
T
claude_dev 212ad6426d feat(s2): 投研核心端到端跑通(IC 表 + tears 报告)
- 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 真实数据
2026-07-07 06:28:01 +08:00

83 lines
2.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import { getFactors, submitFactor, type FactorItem } from '@/api/factor'
const router = useRouter()
const factors = ref<FactorItem[]>([])
const loading = ref(false)
const submitting = ref(false)
const form = reactive({
factor_names: [] as string[],
symbolsText: '600000\n000001\n300750',
start: '2024-01-01',
end: '2024-06-30',
})
onMounted(async () => {
loading.value = true
try {
factors.value = await getFactors()
} catch {
ElMessage.error('因子列表加载失败')
} finally {
loading.value = false
}
})
async function onSubmit(): Promise<void> {
const symbols = form.symbolsText
.split(/[\s,]+/)
.map((s) => s.trim())
.filter(Boolean)
if (!form.factor_names.length || symbols.length < 2) {
ElMessage.warning('至少选 1 个因子 + 2 个标的(IC 横截面需多标的)')
return
}
submitting.value = true
try {
const tid = await submitFactor({
symbols,
factor_names: form.factor_names,
start: form.start,
end: form.end,
})
ElMessage.success('因子分析已提交')
router.push(`/factor/progress/${tid}`)
} catch {
ElMessage.error('提交失败')
} finally {
submitting.value = false
}
}
</script>
<template>
<el-card v-loading="loading">
<template #header>
<h3>新建因子分析</h3>
</template>
<el-form label-width="140px">
<el-form-item label="因子">
<el-select v-model="form.factor_names" multiple placeholder="选择因子" style="width: 380px">
<el-option v-for="f in factors" :key="f.name" :label="f.name" :value="f.name" />
</el-select>
</el-form-item>
<el-form-item label="标的(≥2,每行一个)">
<el-input v-model="form.symbolsText" type="textarea" :rows="3" placeholder="600000&#10;000001&#10;300750" />
</el-form-item>
<el-form-item label="开始日期">
<el-date-picker v-model="form.start" type="date" value-format="YYYY-MM-DD" style="width: 220px" />
</el-form-item>
<el-form-item label="结束日期">
<el-date-picker v-model="form.end" type="date" value-format="YYYY-MM-DD" style="width: 220px" />
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="submitting" @click="onSubmit">提交分析</el-button>
</el-form-item>
</el-form>
</el-card>
</template>