feat(i8-i9): webhook DEAD replay, read-only delivery status, and callback UI

I8: platform proxies replay to webhook; webhook ops token filter and internal
replay endpoint; delivery service supports read/replay flows.

I9: platform GET callback webhook delivery status by inbox id; UI shows
read-only status block and handles load errors without blocking the page.

Also refresh OpenAPI, Runbook notes, test fixtures and YAML; fix Vite dev
axios baseURL so /api uses proxy; improve login error messaging.

Made-with: Cursor
This commit is contained in:
2026-04-07 21:26:44 +08:00
parent 5e051633ec
commit d53ddf32c8
20 changed files with 874 additions and 6 deletions
+4 -3
View File
@@ -7,10 +7,11 @@ import App from "./App.vue";
import router from "./router";
import { useAuthStore } from "./stores/auth";
const apiBase =
// 开发环境始终使用相对路径,以便 Vite 将 /api 代理到后端;误设 VITE_API_BASE 时否则会直连并常出现跨域或连错环境。
const apiBaseRaw =
typeof import.meta.env.VITE_API_BASE === "string" ? import.meta.env.VITE_API_BASE.trim() : "";
if (apiBase) {
axios.defaults.baseURL = apiBase.replace(/\/+$/, "");
if (!import.meta.env.DEV && apiBaseRaw) {
axios.defaults.baseURL = apiBaseRaw.replace(/\/+$/, "");
}
const pinia = createPinia();