Add encrypted card pool management, persisted card and outbound rotation, and per-card decline cooldowns. Improve customer and redemption-code lookup, recovery controls, and filtering; rebuild frontend assets and refresh mock screenshots. Give read-only eligibility checks four independent slots so payment processing no longer blocks them. Cover concurrency, slot cleanup, card rotation, and lookup behavior with tests.
39 lines
1.2 KiB
HTML
39 lines
1.2 KiB
HTML
<!doctype html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
<meta name="color-scheme" content="light dark" />
|
|
<meta name="theme-color" content="#F5F5F5" />
|
|
<meta name="csp-nonce" content="__XGIFT_NONCE__" />
|
|
<style nonce="__XGIFT_NONCE__">
|
|
:root {
|
|
background: #F5F5F5;
|
|
color-scheme: light;
|
|
}
|
|
:root[data-dark] {
|
|
background: #121212;
|
|
color-scheme: dark;
|
|
}
|
|
@media (prefers-color-scheme: dark) {
|
|
:root:not([data-light]) {
|
|
background: #121212;
|
|
color-scheme: dark;
|
|
}
|
|
}
|
|
</style>
|
|
<script src="/appearance.js?v=b178d8b94c59"></script>
|
|
<meta
|
|
name="description"
|
|
content="XGift 兑换码管理:生成批次、下载兑换码并查看兑换状态。"
|
|
/>
|
|
<title>XGift · 兑换码管理</title>
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<script type="module" src="/admin.js?v=00ddc63a3139"></script>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<noscript>请启用 JavaScript 使用兑换码管理。</noscript>
|
|
</body>
|
|
</html>
|