@@ -1326,7 +1326,7 @@ export function SettingsPage() {
13261326
13271327 if ( activeTab === 'database' ) {
13281328 return (
1329- < div className = "space-y-6 " >
1329+ < div className = "grid gap-6 xl:grid-cols-2 xl:items-start " >
13301330 < AppCard
13311331 title = "自动数据清理"
13321332 description = "每天凌晨 3 点自动清理超出保留期的观测数据,统一作用于访问日志、性能快照和请求聚合。"
@@ -1365,60 +1365,62 @@ export function SettingsPage() {
13651365 </ PrimaryButton >
13661366 }
13671367 >
1368- < div className = "grid gap-6 xl:grid-cols-[0.9fr_1.1fr]" >
1369- < ToggleField
1370- label = "启用每日自动清理"
1371- description = "开启后,服务端每天自动删除保留天数之外的观测数据。"
1372- checked = { databaseFields . DatabaseAutoCleanupEnabled }
1373- onChange = { ( checked ) =>
1374- setDatabaseFields ( ( previous ) => ( {
1375- ...previous ,
1376- DatabaseAutoCleanupEnabled : checked ,
1377- } ) )
1378- }
1379- />
1380- < div className = "space-y-4 rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-5" >
1381- < ResourceField
1382- label = "自动清理保留天数"
1383- hint = "必须至少保留 1 天,服务端不允许配置为 24 小时以内。"
1384- >
1385- < ResourceInput
1386- type = "number"
1387- min = { 1 }
1388- value = { databaseFields . DatabaseAutoCleanupRetentionDays }
1389- onChange = { ( event ) =>
1390- setDatabaseFields ( ( previous ) => ( {
1391- ...previous ,
1392- DatabaseAutoCleanupRetentionDays : event . target . value ,
1393- } ) )
1394- }
1395- placeholder = "例如 30"
1396- />
1397- </ ResourceField >
1398- < div className = "grid gap-4 md:grid-cols-3" >
1399- < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1400- < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1401- 触发频率
1402- </ p >
1403- < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1404- 每天一次
1405- </ p >
1406- </ div >
1407- < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1408- < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1409- 默认执行时间
1410- </ p >
1411- < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1412- 凌晨 3:00
1413- </ p >
1414- </ div >
1415- < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1416- < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1417- 生效范围
1418- </ p >
1419- < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1420- 三类观测表
1421- </ p >
1368+ < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-elevated)] p-5" >
1369+ < div className = "space-y-5" >
1370+ < ToggleField
1371+ label = "启用每日自动清理"
1372+ description = "开启后,服务端每天自动删除保留天数之外的观测数据。"
1373+ checked = { databaseFields . DatabaseAutoCleanupEnabled }
1374+ onChange = { ( checked ) =>
1375+ setDatabaseFields ( ( previous ) => ( {
1376+ ...previous ,
1377+ DatabaseAutoCleanupEnabled : checked ,
1378+ } ) )
1379+ }
1380+ />
1381+ < div className = "border-t border-[var(--border-default)] pt-5" >
1382+ < ResourceField
1383+ label = "自动清理保留天数"
1384+ hint = "必须至少保留 1 天,服务端不允许配置为 24 小时以内。"
1385+ >
1386+ < ResourceInput
1387+ type = "number"
1388+ min = { 1 }
1389+ value = { databaseFields . DatabaseAutoCleanupRetentionDays }
1390+ onChange = { ( event ) =>
1391+ setDatabaseFields ( ( previous ) => ( {
1392+ ...previous ,
1393+ DatabaseAutoCleanupRetentionDays : event . target . value ,
1394+ } ) )
1395+ }
1396+ placeholder = "例如 30"
1397+ />
1398+ </ ResourceField >
1399+ < div className = "mt-4 grid gap-4 md:grid-cols-3" >
1400+ < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1401+ < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1402+ 触发频率
1403+ </ p >
1404+ < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1405+ 每天一次
1406+ </ p >
1407+ </ div >
1408+ < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1409+ < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1410+ 默认执行时间
1411+ </ p >
1412+ < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1413+ 凌晨 3:00
1414+ </ p >
1415+ </ div >
1416+ < div className = "rounded-2xl border border-[var(--border-default)] bg-[var(--surface-base)] px-4 py-4" >
1417+ < p className = "text-xs tracking-[0.2em] uppercase text-[var(--foreground-muted)]" >
1418+ 生效范围
1419+ </ p >
1420+ < p className = "mt-2 text-sm font-semibold text-[var(--foreground-primary)]" >
1421+ 三类观测表
1422+ </ p >
1423+ </ div >
14221424 </ div >
14231425 </ div >
14241426 </ div >
0 commit comments