feat: 新增定时账单导入提醒与通知直达导入页

- 新增通知配置、渠道、发送日志三张表(MySQL/SQLite 双建表脚本)及实体、Mapper、Service、Controller
- 支持邮箱(SMTP)与 Server 酱两种推送渠道,抽象 NotificationSender 工厂统一发送
- 新增 NotificationScheduler 定时任务,按每天/每周/每月周期检查并推送账单导入提醒
- 新增全局通知链接地址配置(/api/app/notification-url),随提醒一并下发
- 前端系统设置页新增「定时通知」面板,支持周期配置、渠道增删改测、立即发送与发送日志
- 新增 /bill-import 直达页,供提醒链接一键打开账单上传弹窗
- 登录支持 redirect 回跳,仅允许站内路径以防开放重定向
This commit is contained in:
2026-09-18 16:47:09 +08:00
parent c1f5d02564
commit e49b6b7b81
45 changed files with 3469 additions and 513 deletions
+10 -3
View File
@@ -1,9 +1,10 @@
<script setup lang="ts">
// 系统设置页:上下分区展示数据库配置与 AI 模型配置
// 系统设置页:上下分区展示数据库配置、注册设置、AI 模型配置与定时通知
import { useI18n } from 'vue-i18n'
import DatabaseConfigPanel from '../components/DatabaseConfigPanel.vue'
import RegistrationConfigPanel from '../components/RegistrationConfigPanel.vue'
import AiConfigPanel from '../components/AiConfigPanel.vue'
import NotificationConfigPanel from '../components/NotificationConfigPanel.vue'
const { t } = useI18n()
</script>
@@ -14,17 +15,23 @@ const { t } = useI18n()
<DatabaseConfigPanel />
<RegistrationConfigPanel />
<AiConfigPanel />
<NotificationConfigPanel />
</div>
</template>
<style scoped>
.settings-page {
max-width: 860px;
display: flex;
flex-direction: column;
gap: 20px;
}
.page-title {
margin: 0 0 16px;
margin: 0;
}
.settings-page > :deep(.n-card) {
margin-bottom: 16px;
border: 1px solid #efeff5;
border-radius: 12px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
}
</style>