feat: 添加 cloudflare_pages、mysql_d1_backup_scheduler,更新 start_system、ensemble_models 及配置文件

This commit is contained in:
crypto_predictor committed 2026-03-15 14:22:46 +08:00
1 parent 6184c34a3a
commit 62110554d1
20 files changed
+1438 -19

No files matched your search

@@ -0,0 +1,67 @@
function json(data, status = 200) {
return new Response(JSON.stringify(data), {
status,
headers: { "content-type": "application/json; charset=UTF-8" },
});
}
function modelItem(prediction, probability, isCorrect) {
if (prediction === null || prediction === undefined) return null;
return {
prediction: Number(prediction),
probability: probability === null || probability === undefined ? null : Number(probability),
is_correct: isCorrect === null || isCorrect === undefined ? null : Number(isCorrect) === 1,
};
}
export async function onRequestGet(context) {
const db = context.env.DB;
if (!db) {
return json({ success: false, error: "缺少 D1 绑定 DB" }, 500);
}
try {
const date = context.params.date;
const sql = `
SELECT
timestamp,
hour,
open_price,
close_price,
actual_result,
dlinear_prediction,
dlinear_prob,
dlinear_correct,
nbeats_prediction,
nbeats_prob,
nbeats_correct,
ttm_prediction,
ttm_prob,
ttm_correct,
ensemble_prediction,
ensemble_correct
FROM backup_hourly_model_predictions
WHERE date = ?
ORDER BY hour ASC
`;
const result = await db.prepare(sql).bind(date).all();
const rows = (result.results || []).map((r) => ({
timestamp_cst: r.timestamp,
hour: r.hour,
open_price: r.open_price === null || r.open_price === undefined ? null : Number(r.open_price),
close_price: r.close_price === null || r.close_price === undefined ? null : Number(r.close_price),
actual_result: r.actual_result === null || r.actual_result === undefined ? null : Number(r.actual_result),
models: {
Ensemble: modelItem(r.ensemble_prediction, null, r.ensemble_correct),
DLinear: modelItem(r.dlinear_prediction, r.dlinear_prob, r.dlinear_correct),
"N-BEATS": modelItem(r.nbeats_prediction, r.nbeats_prob, r.nbeats_correct),
"TTM-R2": modelItem(r.ttm_prediction, r.ttm_prob, r.ttm_correct),
},
}));
return json({ success: true, date, data: rows });
} catch (error) {
return json({ success: false, error: String(error) }, 500);
}
}