v2.1: 新增通知提醒功能和安全增强

功能:
- 通知提醒系统: 还款日提醒、逾期提醒、系统消息横幅、登录时通知
- 通知中心UI: 铃铛图标 + 下拉列表 + 未读徽章
- 定时任务: APScheduler 每小时检查即将到期的还款
- 邮件通知: SMTP 发送还款提醒和安全警告
- 异常登录通知: 3/5/10次失败触发网页和邮件通知

安全:
- 登录安全告警: 异常登录次数达到阈值时发送通知
- 密码重置链接: 一次性使用, 5分钟有效期
- 登录频率限制: IP级和账户级限制

技术:
- 后端: FastAPI + SQLAlchemy + PostgreSQL
- 前端: 纯 HTML/CSS/JS
- 部署: Docker Compose (新增 build 配置)
This commit is contained in:
OP
2026-06-28 18:06:56 +08:00
commit ffca168dbe
41 changed files with 4834 additions and 0 deletions

40
deploy/docker-compose.yml Normal file
View File

@@ -0,0 +1,40 @@
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: debt_manager
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "54326:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
backend:
image: debt-manager-backend:latest
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql+asyncpg://postgres:postgres@db:5432/debt_manager
SECRET_KEY: change-this-in-production-please
depends_on:
db:
condition: service_healthy
restart: unless-stopped
frontend:
image: debt-manager-frontend:latest
ports:
- "806:80"
depends_on:
- backend
restart: unless-stopped
volumes:
pgdata:

39
deploy/install.sh Executable file
View File

@@ -0,0 +1,39 @@
#!/bin/bash
set -e
echo "========================================="
echo " 债务管理系统 - 一键安装"
echo "========================================="
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo ""
echo "[1/3] 加载 Docker 镜像..."
docker load -i "$SCRIPT_DIR/debt-manager-backend.tar.gz"
docker load -i "$SCRIPT_DIR/debt-manager-frontend.tar.gz"
docker load -i "$SCRIPT_DIR/postgres-15-alpine.tar.gz"
echo ""
echo "[2/3] 启动服务..."
cd "$SCRIPT_DIR"
docker compose up -d
echo ""
echo "[3/3] 等待服务就绪..."
sleep 5
echo ""
echo "========================================="
echo " 安装完成!"
echo "========================================="
echo ""
echo " 前台地址: http://localhost:806"
echo " 后台地址: http://localhost:806/admin.html"
echo " API 文档: http://localhost:8000/docs"
echo ""
echo " 默认账号: admin / admin123"
echo " 默认账号: test / test123"
echo ""
echo " 停止服务: docker compose -f $SCRIPT_DIR/docker-compose.yml down"
echo " 查看日志: docker compose -f $SCRIPT_DIR/docker-compose.yml logs -f"
echo "========================================="

22
deploy/uninstall.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
set -e
echo "========================================="
echo " 债务管理系统 - 卸载"
echo "========================================="
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo ""
echo "[1/2] 停止并删除容器..."
cd "$SCRIPT_DIR"
docker compose down -v
echo ""
echo "[2/2] 删除 Docker 镜像..."
docker rmi debt-manager-backend:latest debt-manager-frontend:latest postgres:15-alpine 2>/dev/null || true
echo ""
echo "========================================="
echo " 卸载完成"
echo "========================================="