仪表盘
im.message.receive_v1(接收消息)https://qw.900123.top/api/feishu/event${detail}`;
toast('D1表初始化成功', 'success');
} else {
if (el) el.innerHTML = `${data.message}${detail}`;
}
} catch(e) {
if (el) el.innerHTML = `请求失败: ${e.message}`;
}
}
async function migrateToD1() {
const el = document.getElementById('d1-result');
if (el) el.innerHTML = '迁移中,请勿操作...';
try {
const headers = { 'Content-Type': 'application/json' };
if (_syncToken) headers['Authorization'] = 'Bearer ' + _syncToken;
const resp = await fetch(API_BASE + '/db/migrate', { method: 'POST', headers });
const data = await resp.json();
const detail = JSON.stringify(data, null, 2).replace(/ `${k}: ${v}条`).join(', ');
if (el) el.innerHTML = `✓ ${data.message}${detail}`;
toast('KV→D1迁移成功', 'success');
} else {
if (el) el.innerHTML = `${data.message}${detail}`;
}
} catch(e) {
if (el) el.innerHTML = `迁移失败: ${e.message}`;
}
}
async function testD1Sync() {
const el = document.getElementById('d1-result');
if (el) el.innerHTML = '测试D1同步中...';
try {
const headers = { 'Content-Type': 'application/json' };
if (_syncToken) headers['Authorization'] = 'Bearer ' + _syncToken;
const resp = await fetch(API_BASE + '/d1/sync', { headers });
const data = await resp.json();
if (data && data.data) {
const d = data.data;
const info = `产品: ${(d.products||[]).length}, 单品: ${(d.items||[]).length}, 仓库: ${(d.warehouses||[]).length}, 订单: ${(d.orders||[]).length}, 日志: ${(d.logs||[]).length}`;
if (el) el.innerHTML = `✓ D1同步正常| 时间 | 类型 | 操作人 | 对象类型 | PN | SN | 详情 |
|---|