const { request, buildResultView, normalizeResponse } = require('../../utils/request'); const RESULT_PREVIEW_LIMIT = 240; function buildResultState(text) { const content = text || ''; return { resultHasMore: content.length > RESULT_PREVIEW_LIMIT, resultExpanded: false }; } function buildImportCards(payload) { const cards = []; if (!payload || typeof payload !== 'object') return cards; if (payload.task_id) { cards.push({ label: '关联任务', value: `#${payload.task_id}` }); } if (payload.existing_task) { const name = payload.existing_task.title || payload.existing_task.id || '已存在任务'; cards.push({ label: '已存在任务', value: String(name) }); if (payload.existing_task.conversation_count !== undefined) { cards.push({ label: '对话数量', value: String(payload.existing_task.conversation_count) }); } } if (Array.isArray(payload.conversations)) { cards.push({ label: '解析对话', value: String(payload.conversations.length) }); } if (payload.summary) { const summary = payload.summary; if (summary.total_rounds !== undefined) { cards.push({ label: '总轮数', value: String(summary.total_rounds) }); } if (summary.user_messages !== undefined) { cards.push({ label: '用户消息', value: String(summary.user_messages) }); } if (summary.bot_messages !== undefined) { cards.push({ label: '机器人消息', value: String(summary.bot_messages) }); } if (Array.isArray(summary.keywords) && summary.keywords.length) { cards.push({ label: '关键词', value: summary.keywords.join('、') }); } if (Array.isArray(summary.main_topics) && summary.main_topics.length) { cards.push({ label: '主要话题', value: summary.main_topics.join('、') }); } } return cards; } Page({ data: { content: '', check_only: 'false', overwrite: 'false', task_id: '', task_name: '', robot_id: '', result: '', resultCards: [], resultExpanded: false, resultHasMore: false, importCards: [] }, onInput(e) { const key = e.currentTarget.dataset.key; this.setData({ [key]: e.detail.value }); }, toggleResult() { this.setData({ resultExpanded: !this.data.resultExpanded }); }, setResult(result) { const view = buildResultView(result); const payload = normalizeResponse(result).payload; const importCards = buildImportCards(payload); const state = buildResultState(view.text); this.setData({ result: view.text, resultCards: view.cards, importCards, ...state }); }, async parse() { const result = await request({ url: '/api/prompt/import', method: 'POST', data: { content: this.data.content, check_only: true } }); this.setResult(result); }, async confirm() { const payload = { content: this.data.content, check_only: String(this.data.check_only).toLowerCase() === 'true', overwrite: String(this.data.overwrite).toLowerCase() === 'true', task_id: this.data.task_id ? Number(this.data.task_id) : undefined, task_name: this.data.task_name, robot_id: this.data.robot_id ? Number(this.data.robot_id) : undefined }; const result = await request({ url: '/api/prompt/import', method: 'POST', data: payload }); this.setResult(result); } });