活跃用户
{{ stats.dau.reduce((s, d) => s + d.dau, 0) }}
人 · {{ stats.range }}
任务创建
{{ stats.eventCounts.task_created || 0 }}
次
完成率
{{ stats.completionRate }}%
{{ stats.eventCounts.task_completed || 0 }} / {{ stats.eventCounts.task_created || 0 }}
未读反馈
{{ stats.feedbackOpen }}
条
📅 每日活跃用户
暂无数据
| 日期 | 活跃用户数 |
|---|---|
| {{ d.day }} | {{ d.dau }} |
🚪 用户在哪一步退出 (放弃步骤分布)
暂无放弃记录
| 步骤 | 放弃次数 |
|---|---|
| {{ stepName(row.step) }} | {{ row.count }} |
⚠️ 最近错误 ({{ stats?.recentErrors?.length || 0 }})
没有错误,😎
| 时间 | 用户 | 错误 |
|---|---|---|
| {{ formatTime(e.created_at) }} | {{ e.user_id || '-' }} | {{ e.payload?.msg || '-' }} |
暂无反馈
{{ typeLabel(fb.type) }}
{{ statusLabel(fb.status) }}
{{ formatTime(fb.created_at) }}
{{ fb.content }}
加载中...
暂无 Provider
说明: 在这里配置每个模型厂商的 API Key 和 Endpoint。
后端调用时优先读 DB 配置, 缺失时回退到 env 变量。修改后立即生效, 无需重新部署。
内置 (system) Provider 不可删除, 可禁用; 自定义 Provider 可随时删除。
内置 (system) Provider 不可删除, 可禁用; 自定义 Provider 可随时删除。
接入任何 OpenAI 兼容的厂商 (硅基流动 / 智谱 / 月之暗面 / 自部署模型...)
新建 Provider
{{ p.display_name }}
[{{ p.name }}]
system
custom
通义千问默认: https://dashscope.aliyuncs.com/compatible-mode/v1
独立 ping: 用 available_models 第一个模型发"你好"验 Key
{{ providerTestResult[p.name] }}
说明: 业务流程分 4 步:
①
每个 task 三段式: 🟢 当前生效 / 📝 草稿 / 📜 历史。 修改提示词必须走 "复制为草稿 → 编辑 → 测试 → 激活" 流程。
①
diagnose-identify 品种识别 →
② growth-stage-infer 生长期推断 →
③ diagnose-analyze 病害诊断 (默认双专家会诊) →
④ report 报告生成每个 task 三段式: 🟢 当前生效 / 📝 草稿 / 📜 历史。 修改提示词必须走 "复制为草稿 → 编辑 → 测试 → 激活" 流程。
📌 提示词模板可用占位符
{{ var }}
提示词里写 {{ crop }} 这样的占位符, 后端调 LLM 时会替换为真实业务数据。
| Task | 输入占位符 | 输出 JSON 字段 |
|---|---|---|
① diagnose-identify |
(无变量 · 仅图片) |
crop + scientific_name (拉丁学名)crop_confidence (0-100)notes
|
② growth-stage-infer |
{{ crop }}
{{ location }}
{{ date }}
{{ weather }}
|
growth_stageconfidencederivation (推断依据)
|
③ diagnose-analyze |
{{ crop }}
{{ growth_stage }}+ 10 张图 |
disease { has, conclusion, confidence_stars(1-3), reasoning }pest {...同上}nutrition { conclusion, confidence_stars, reasoning, elements }
|
④ report |
{{ identify_results }}
{{ growth_stage_result }}
{{ analyze_results }}
{{ location }}
{{ weather }}
{{ symptom_duration }}
{{ kb_candidates }}
|
完整报告: crop, growth_stage, overall_confidence,
consultation {disease/pest/nutrition×experts}, treatment {sections, agricultural_practices}
|
加载中...
{{ taskTitle(bundle.task) }}
{{ bundle.task }}
🟢 当前生效
⚠️ 这个 task 没有 active 版本。请从历史选一个"重新激活"或新建草稿激活。
v{{ bundle.active.version_no }}
{{ bundle.active.name || '(未命名)' }}
{{ bundle.active.expert_name }} · {{ bundle.active.role }}
激活于 {{ formatTime(bundle.active.activated_at) }}
Provider: {{ bundle.active.provider }} ·
Model: {{ bundle.active.model }} ·
Temp: {{ bundle.active.temperature }} ·
MaxTok: {{ bundle.active.max_tokens }}
取图步骤: [{{ (bundle.active.input_steps || []).join(', ') }}]
备注: {{ bundle.active.notes }}
👁 查看完整 Prompt
{{ bundle.active.system_prompt }}
{{ bundle.active.user_prompt_tpl }}
📝 草稿 ({{ bundle.drafts.length }})
无草稿
v{{ v.version_no }} 草稿
💾 保存中...
💾 已保存 ✓
可选: {{ getProviderModels(v.provider).join(' / ') || '未配置' }}
1=农田全景 2=病株全貌 3=病斑×3 4=叶背 5=顶叶 6=果实 7=虫害×3 8=健康株
{{ testResult2[v.id] }}
📜 历史版本 ({{ bundle.archived.length }})
还没有归档版本
v{{ v.version_no }}
{{ v.name || '(未命名)' }}
{{ v.expert_name }} · {{ v.role }}
归档于 {{ v.archived_at ? formatTime(v.archived_at) : '—' }}
{{ v.provider }} / {{ v.model }} · Temp {{ v.temperature }}
{{ v.notes }}
👁 查看完整 Prompt
{{ v.system_prompt }}
{{ v.user_prompt_tpl }}
加载中...
| 时间 | Task | Provider | Model | 耗时 | Tokens (入/出/总) | 图数 | 错误 |
|---|---|---|---|---|---|---|---|
| {{ formatTime(call.created_at) }} | {{ call.task }} | {{ call.provider }} | {{ call.model }} | {{ call.latency_ms }}ms | {{ call.prompt_tokens || '-' }}/{{ call.completion_tokens || '-' }}/{{ call.total_tokens || '-' }} | {{ call.images_count }} | {{ call.error || '-' }} |