{{ dashboardRange === 'today' ? '今日' : (dashboardRange === 'yesterday' ? '昨日' : '本周') }}运行概览

统计范围:今日 00:00 至今 统计范围:昨日 00:00 - 23:59 统计范围:本周一 00:00 至今

今日执行 (次)

{{ dashboardData.summary.total_runs }}

{{ dashboardData.summary.active_tasks_count }} 个活跃任务

综合成功率

{{ dashboardData.summary.success_rate }}%

失败 {{ dashboardData.summary.fail_count }}

数据吞吐量 (行)

{{ dashboardData.summary.total_data_rows.toLocaleString() }}

API 抓取/读取总数

{{ dashboardRange === 'week' ? '每日趋势分布 (本周)' : '24小时运行分布' }}

慢任务 Top 5

  • {{ task.task_name }}
    #{{ task.uniq_key.split('_')[1] }} {{ formatTime(task.start_time) }} {{ formatTriggerType(task.trigger_type) }}
    {{ task.reason }}
  • 🎉 今日暂无慢任务

深分页 Top 5

  • {{ task.task_name }}
    #{{ task.uniq_key.split('_')[1] }} {{ formatTime(task.start_time) }}
    {{ task.reason }}
  • 🎉 暂无巨型分页任务

最新失败

  • {{ task.task_name }}
    #{{ task.uniq_key.split('_')[1] }} {{ formatTime(task.start_time) }}
    {{ task.reason }}
  • ✅ 今日运行非常完美

{{ currentView ? currentView.view_name : '请选择视图' }}

选择预设条件
暂无预设
WHERE
暂无动作,请先配置

请从左侧选择一个视图

每页行数:
本页: {{ (tableData || []).length }} 总计: {{ totalCount }}
已选择 {{ selectedCellsCount }} 个单元格 (按 Ctrl+C 复制)
Loading data...
# {{ col }}
{{ (currentPage - 1) * pageSize + idx + 1 }} {{ formatCell(row[col]) }}
{{ col }}
{{ row[col] }}
SQL Definition

                        

导出任务中心

任务ID状态创建时间操作
{{ task.file_name || (task.view_name + (getTaskWhere(task) ? '_' + getTaskWhere(task) : '')) || '未命名导出' }}
{{ task.task_id }}
{{ task.status }} {{ formatTime(task.created_at) }}

预设管理中心

条件列表

管理常用的 SQL 筛选条件,可在视图中快速应用。

{{c.name}} {{c.view_name}} 全部视图
WHERE {{c.sql_where}}
暂无预设条件

动作列表

配置可执行的操作(如 API 回调),支持参数输入。

{{a.name}} {{ formatActionType(a.type) }} {{a.view_name}} 全部视图
{{a.target_url}}
需选行 需参数
暂无预设动作

ETL 分段任务

任务详情 流向 调度 / 水位线 状态 操作
{{ task.task_name }}
ID: {{ task.id }} {{ task.source_table }}
API DB DB API
{{ task.cron_expression }} 手动触发
{{ formatTime(task.last_sync_end_time) }}
从未同步

批量执行任务

已选中 {{ selectedEtlIds.size }} 个任务

所有选中的任务将使用此单号作为参数执行。

所有选中的任务将扫描该时间段内的数据。

同步任务 (API直通API)

任务详情 流向 调度 / 水位线 状态 操作
{{ task.task_name }}
ID: {{ task.id }} {{ task.source_table }}
API API
{{ task.cron_expression }} 手动触发
{{ formatTime(task.last_sync_end_time) }}
从未同步

暂无匹配的任务

批量同步任务

已选中 {{ selectedSyncIds.size }} 个任务

将对所有选中任务执行此单号的同步。

运行控制台

加载中...
日志ID ID 流向 开始时间 任务ID 任务名称 触发方式 耗时 状态 结果信息 API报文
{{ log.id }} #{{ log.task_id }} API DB - {{ formatTime(log.start_time) }} {{ log.task_id }}
{{ log.task_name }}
{{ formatTriggerType(log.trigger_type) }} {{ log.duration_ms ? (log.duration_ms/1000).toFixed(1)+'s' : '-' }} 成功 失败 已终止
运行中
{{ log.result_msg }}
暂无运行日志
本页加载 {{ etlLogs.length }} 条

{{ isSyncEditMode ? '编辑同步任务' : '新建同步任务' }}

{{ currentSyncTask.task_name || '未命名同步' }} 启用中 已停用

基础信息

{{ currentSyncTask.is_active ? '已启用' : '已停用' }}
API API (直通)

接口与规则

并发控制 {{ currentSyncTask.allow_concurrent ? '⚠️ 允许并发 (危险)' : '🛡️ 禁止并发 (安全/单例)' }}

高级配置 (page_config)

全链路测试
1. 抓取报文 (Fetch)
{{ syncDryRunResult.req_preview || '// 等待抓取...' }}
2. 中间表 SQL (Preview)
{{ syncDryRunResult.sql_preview || '-- 等待生成...' }}
3. 推送报文 (Push)
{{ syncDryRunResult.res_preview || '// 等待推送...' }}

销售对账【吉客云→A8】

无匹配店铺
~
销售单表头 共 {{ reconHeadersTotal }} 条 已选 {{ selectedHeaderIds.size }} 条
销售单号 店铺 仓库 公司 对账时间 收款时间 订单金额 收款金额 状态 操作
{{ h.trade_no }} {{ h.shop_name }} {{ h.warehouse_name }} {{ h.company_name || '-' }} {{ formatTime(h.bill_date) }} {{ formatTime(h.fin_receipt_time) }} {{ formatMoney(h.payment) }} {{ formatMoney(h.receipt_amount) }} {{ h.is_bill_check === 1 ? '已对账' : (h.is_bill_check === 2 ? '部分对账' : '未对账') }}
暂无数据,请使用上方筛选条件查询
共 {{ reconHeadersTotal }} 条 · 第 {{ reconHeadersPage }} / {{ Math.max(1, Math.ceil(reconHeadersTotal / reconHeadersPageSize)) }} 页 · 每页 {{ reconHeadersPageSize }} 条
商品明细 {{ selectedTradeNo }} (点击上方销售单行以查看明细)
货品编号 货品名称 规格 单位 订单数量 行金额 收款金额
{{ d.goods_no }} {{ d.goods_name }} {{ d.spec_name }} {{ d.unit_name || '-' }} {{ formatMoney(d.sell_count) }} {{ formatMoney(d.sell_total) }} {{ formatMoney(d.pay_amount) }}
暂无明细
批次明细 {{ selectedSubTradeId }} (点击上方明细行以查看批次)
货品编号 批次号 发货量 生产日期 过期日期
{{ b.goods_no }} {{ b.batch_no }} {{ formatMoney(b.send_count) }} {{ b.production_date || '-' }} {{ b.expiration_date || '-' }}
暂无批次
汇总报表(按 店铺+仓库+商品+批次)
{{ reconSummary.length }} 行
店铺 仓库 公司 货品编号 货品名称 规格 单位 批次号 生产日期 过期日期 发货量 收款金额 订单数
{{ r.shop_name }} {{ r.warehouse_name }} {{ r.company_name || '-' }} {{ r.goods_no }} {{ r.goods_name }} {{ r.spec_name }} {{ r.unit_name || '-' }} {{ r.batch_no }} {{ r.production_date || '-' }} {{ r.expiration_date || '-' }} {{ r.total_send_count }} {{ formatMoney(r.total_pay_amount) }} {{ r.trade_count }}
暂无汇总数据,请选择起止日期后点查询
合计 {{ reconSummaryTotals.total_send }} {{ formatMoney(reconSummaryTotals.total_pay) }} {{ reconSummaryTotals.row_count }} 行
启动新补单任务
快捷日期
{{ backfillForm.shop_codes.length === 0 ? '全部 ' + reconShops.length + ' 家' : '已选 ' + backfillForm.shop_codes.length + ' / ' + reconShops.length }}
无匹配店铺
实时进度 task: {{ backfillActiveTaskId }}
暂无监控中的任务
启动新任务后会自动显示进度;也可以从右侧历史列表点一行查看
{{ backfillProgress.running ? '补单中...' : (backfillProgress.status === 'done' ? '✓ 已完成' : '✗ 异常 (code=' + backfillProgress.returncode + ')') }} 已运行 {{ formatDuration(backfillProgress.elapsed_secs) }}
当前阶段:{{ phaseLabel(backfillProgress.progress.phase) }}
翻页:{{ backfillProgress.progress.page + 1 }}
累计: {{ backfillProgress.progress.current_count }}
写入: header {{ backfillProgress.progress.write_header }} / detail {{ backfillProgress.progress.write_detail }} / batch {{ backfillProgress.progress.write_batch }}
日志尾部(30 行):
{{ backfillProgress.log_tail || '(暂无输出)' }}
定时增量同步
当前状态
已启用 同步中
未启用
下次触发
{{ formatTime(syncStatus.next_run_time) }}
上次同步
{{ formatTime(syncStatus.last_started_at) }} {{ syncStatus.last_task_id }}
💡 启用后每小时整点自动增量同步:本次范围 = 上次结束时间 - 5秒 ~ 当前时间,自动拉取新对账完成(含部分对账)的销售单。
⚠️ 首次启用前,必须先手动发起一次补单作为基准(让 jky_backfill_task 表有成功记录)。
历史任务
开始时间 日期范围 店铺 状态 结束时间 操作
{{ formatTime(t.started_at) }} {{ t.start_date }} ~ {{ t.end_date }} {{ t.shop_codes || '全部店铺' }} {{ t.status === 'running' ? '运行中' : (t.status === 'done' ? '✓ 完成' : '✗ 失败') }} {{ formatTime(t.finished_at) }}
暂无历史任务

批量删除销售单

将删除 {{ selectedHeaderIds.size }} 笔勾选的销售单。
如需勾选更多,请关闭本弹窗,在主表中勾选后再来。
尚未勾选任何销售单。请关闭弹窗,在主表中勾选后再来;或切换到"按查询结果删除"模式。
按下方条件删除匹配的所有单据(条件独立配置,不影响主筛选条):
时间
~
店铺
状态
⚠️ 必须填写起止时间,防止误删全表
⚠️ 匹配 {{ batchDeletePreview.matched_count }}+ 笔,超过单次上限 {{ batchDeletePreview.limit }},请缩小时间范围
✅ 匹配 {{ batchDeletePreview.matched_count }} 笔销售单 (前 5 笔:{{ batchDeletePreview.samples.map(s => s.trade_no).join(', ') }}{{ batchDeletePreview.matched_count > 5 ? '...' : '' }})

补单(拉取历史对账数据)

{{ backfillForm.shop_codes.length === 0 ? '将补全部 ' + reconShops.length + ' 家店铺' : '已选 ' + backfillForm.shop_codes.length + ' / ' + reconShops.length + ' 家' }}
店铺列表为空,请先点上方"刷新店铺"
{{ backfillProgress.running ? '补单中...' : (backfillProgress.returncode === 0 ? '完成' : '异常退出 (code=' + backfillProgress.returncode + ')') }} 已运行 {{ backfillProgress.elapsed_secs }} 秒
{{ backfillProgress.log_tail || '(暂无输出)' }}

{{ a8Result.head }}

A8 单号
{{ a8Result.billno }}
已发送 {{ a8Result.sent }} 行({{ a8Result.shop }})
A8 返回 {{ a8Result.a8Resp }}(1 才是成功)
{{ a8Result.errorMsg }}
HTTP 状态码 {{ a8Result.httpStatus }}

提示:单号已同步至 A8,可点击上方「复制」按钮复制。

工单支持中心

{{ ticket.title }}
#{{ 30000 + ticket.id }} {{ formatTime(ticket.created_at) }}
{{ ticket.last_reply_preview || '暂无回复' }}
{{ ticket.status === 'open' ? '待处理' : (ticket.status === 'resolved' ? '已解决' : (ticket.status === 'closed' ? '已关闭' : (ticket.status === 'pending_sys' ? '待客服回复' : (ticket.status === 'pending_tenant' ? '待我回复' : ticket.status)))) }}
暂无工单记录
工单 ID #{{ 30000 + currentTicket.id }}
工单标题
更新时间 状态

{{ currentTicket.title }}

{{ currentTicket.updated_at ? formatTime(currentTicket.updated_at) : formatTime(currentTicket.created_at) }} {{ currentTicket.status === 'open' ? '待处理' : (currentTicket.status === 'resolved' ? '已解决' : (currentTicket.status === 'closed' ? '已关闭' : (currentTicket.status === 'pending_sys' ? '新回复' : (currentTicket.status === 'pending_tenant' ? '待回复' : currentTicket.status)))) }}
暂无交流记录
{{ msg.sender_type === 'tenant' ? (currentTenant?.name || '我') : '官方客服' }} {{ formatTime(msg.created_at) }} Staff
{{ msg.content }}
*工单内容
工单附件 (仅限一张)
点击上传 / 粘贴截图 支持 PNG, JPG, JPEG
图片已上传
点击区域可替换
筛选: {{ contextMenu.col }}

运行控制台

~
加载中...
日志ID 类型 流向 开始时间 任务ID 任务名称 触发方式 耗时 状态 结果信息 API报文
#{{ log.origin_id }} 同步任务 分段任务 {{ log.direction }} {{ formatTime(log.start_time).split(' ')[1] }} {{ formatTime(log.start_time).split(' ')[0] }} {{ log.task_id }}
{{ log.task_name }}
{{ formatTriggerType(log.trigger_type) }} {{ log.duration_ms ? (log.duration_ms/1000).toFixed(1)+'s' : '-' }} 成功 失败 已终止
运行中
{{ log.result_msg }}
暂无运行日志
本页加载 {{ etlLogs.length }} 条

数据库连接

新建工单

点击上传 / 粘贴图片 仅支持 PNG, JPG, JPEG 格式
图片已准备就绪
点击此处可替换图片

导出任务已创建

系统将在后台处理,请前往「导出任务中心」查看进度和下载。

任务ID:
{{ lastExportTaskId }}

是否立即打开任务中心?

{{ editingCondition ? '编辑' : '新增' }}条件

{{ editingAction ? '编辑' : '新增' }}动作

指令示例:

  • • 同步/分段(单号): 指定单号:[15,16]?字段名
  • • 同步/分段(时间): 指定时间:[15,16]
  • • 消息通知: https://api.example.com/webhook

勾选“需要参数”后,请添加参数项

执行: {{executingActionName}}

{{ editingEtlTask ? '编辑分段任务' : '新建分段任务' }}

{{ newEtlTask.task_name || '未命名任务' }} 启用中 已停用

基础信息

{{ newEtlTask.is_active ? '已启用' : '已停用' }}

接口与规则

并发控制 {{ newEtlTask.allow_concurrent ? '⚠️ 允许并发 (危险)' : '🛡️ 禁止并发 (安全/单例)' }}

高级配置 (page_config)

抓取测试预览
1. 请求报文 (Request)
● Sent
{{ testReqPreview || '// 等待测试...' }}
2. 响应报文 (Response)
● Received
{{ testResPreview || '// 等待响应...' }}
3. SQL 逻辑预览 (SQL Preview)
* Dry Run
{{ testSqlPreview || '-- 等待生成...' }}

执行任务

{{ runningTask?.task_name }}

支持批量:每行输入一个单号,系统将逐个执行。

{{ runConfig.f_identity.trim().split(/\n+/).filter(s => s.trim()).length }} 个单号

某些接口查询单号时,必须提供时间范围才能命中索引。

系统将扫描该时间段内的数据。

报文详情

REQUEST (请求)
{{ payloadData?.fetch_stage?.request || payloadData?.request }}
RESPONSE (响应)
{{ payloadData?.fetch_stage?.response || payloadData?.response }}
REQUEST (请求)
{{ payloadData?.push_stage?.request }}
RESPONSE (响应)
{{ payloadData?.push_stage?.response }}