Commit Graph

27 Commits

Author SHA1 Message Date
OP
00d1b96415 fix: 导出数据按用户权限过滤
- 普通用户只能导出自己的数据
- 管理员可以导出所有用户数据
- 添加 getVisibleLoans() 函数统一过滤逻辑
2026-06-29 00:50:20 +08:00
OP
e5acd0115e fix: 修复导出列顺序,用途移到最后一列
- CSV/JSON/HTML 导出:用途列移到最后
- 下载模板示例数据同步更新
- 导入时正确对应各列数据
2026-06-29 00:45:16 +08:00
OP
7a9c19e5c5 fix: 更新导出导入字段名
- 借款人 → 债权人
- 年利率 → 年化率
- 新增「用途」列
- 更新下载模板示例数据
- 导入时读取用途字段
2026-06-29 00:41:36 +08:00
OP
1aac03b7a4 feat: 新增个人中心功能
- 修改昵称改为个人中心
- 个人中心包含:账号(只读)、昵称、邮箱
- 修改邮箱需要旧邮箱验证码验证
- 后端新增 /auth/verify-email 和 /auth/change-email API
- 两个页面同步更新
2026-06-29 00:35:47 +08:00
OP
b9b7e2637a fix: analysis.html 同步用户菜单完整功能
- 添加修改昵称/修改密码模态框
- 添加 showChangeNick/showChangePwd/doChangeNick/doChangePwd 函数
- 添加 modal CSS 样式
- 两个页面现在功能完全一致
2026-06-29 00:31:49 +08:00
OP
c5697f8b7b fix: 恢复用户菜单(修改昵称/修改密码)
- userInfo 添加 onclick 触发用户菜单
- 添加 userMenu 下拉菜单(修改昵称/修改密码)
- 点击页面其他位置关闭菜单
2026-06-29 00:28:42 +08:00
OP
5d5ee9ecdc fix: analysis.html 添加用户昵称显示
- checkAuth 中添加 .textContent 设置
- 分析页面导航栏现在显示用户昵称
2026-06-29 00:25:43 +08:00
OP
d27c855e62 fix: 删除 analysis.html 重复的导出/导入/退出 2026-06-29 00:24:03 +08:00
OP
bc5ce695d2 fix: 删除重复的导出/导入/退出元素
- 之前正则替换失败导致两套 header 元素
- 手动删除重复的 export/import/退出
- 现在只有一套正确的导航栏
2026-06-29 00:22:13 +08:00
OP
018913f337 fix: 恢复 Image 2 的正确导航栏样式
- 恢复原来的 header-inner 布局(space-between)
- 左侧:标题 + 导航标签
- 右侧:通知铃铛 + 用户名 + 管理 + 导出 + 导入 + 退出
- 两个页面样式完全一致
2026-06-29 00:18:58 +08:00
OP
3da97f7dd5 fix: 修复导航栏布局,元素不再换行
- header-inner 改用 gap 布局,移除 space-between
- max-width 从 1200px 增加到 1400px
- 所有子元素设置 flex-shrink:0
- 三个区域在一行内显示
2026-06-29 00:14:57 +08:00
OP
27ad9b6901 feat: 恢复导航栏完整功能(通知/导出/导入)
- 两个页面 header 统一添加:通知铃铛、导出按钮、导入按钮、用户信息
- 添加通知相关 JS 函数到 analysis.html
- 添加导出/导入相关 JS 函数到 analysis.html
- 导航栏布局:Logo + 标题 | 首页/分析 | 用户名+通知+导出+导入+管理+退出
2026-06-29 00:10:20 +08:00
OP
1aa2f529e7 fix: Chart.js 改为本地加载,修复分析页面无数据
- 下载 chart.min.js 到本地(200KB)
- analysis.html 引用改为 /chart.min.js
- Dockerfile 添加 chart.min.js 复制
- 避免 CDN 访问问题导致图表无法渲染
2026-06-29 00:07:36 +08:00
OP
d183ca9207 fix: 添加 userInfo 元素到 header,修复首页数据加载
- 之前移除 header 时误删了 userInfo span
- JS 中 .textContent 会报错导致页面无法加载
2026-06-29 00:04:32 +08:00
OP
f69c8bf510 fix: 统一首页和分析页面导航栏为三栏式布局
- 左侧:Logo + 系统名称
- 中间:首页/分析 导航
- 右侧:管理/退出
- 两个页面 header HTML 和 CSS 完全一致
2026-06-28 23:56:11 +08:00
OP
156bcb9505 fix: 同步 analysis.html 导航栏为三栏式布局
- 添加 header-left (Logo + 系统名称)
- 更新 CSS 为三栏式布局
- 现在两个页面导航栏完全一致
2026-06-28 23:50:24 +08:00
OP
8379126f9d style: 优化导航栏布局为三栏式
- 左侧:Logo图标 + 系统名称「债务管理」
- 中间:页面导航(首页/分析)
- 右侧:用户信息和操作按钮
- 增加间距和圆角,视觉更舒适
- header 高度从52px增加到56px
- 导航按钮增加 hover 效果
- 用户名区域增加浅色背景
2026-06-28 23:48:33 +08:00
OP
664b845cef fix: 以 analysis.html 为准统一导航栏样式
- 移除 index.html 多余的 -webkit-backdrop-filter 和 padding:0
- 移除 .hdr-btn 样式(analysis.html 无此样式)
- 两个页面 header CSS 现在完全一致
2026-06-28 23:46:16 +08:00
OP
012de577d7 fix: 统一首页和分析页面的导航栏样式
- analysis.html header-inner 改用 gap 布局
- 添加 white-space:nowrap 防止标题换行
- 添加 flex-shrink:0 防止元素被挤压
- 两个页面的导航栏现在完全一致
2026-06-28 23:43:06 +08:00
OP
2d91e73063 fix: 修复导航栏布局,确保导航可见
- header-inner 改用 gap 替代 space-between
- h1/nav-tabs/header-right 都设置 flex-shrink:0
- 确保三个元素不会被挤压
2026-06-28 23:41:25 +08:00
OP
1bb826e7ac feat: 新增数据分析页面
- 添加导航栏:首页(原有功能)+ 分析(新页面)
- 分析页面包含 5 个专业图表:
  - 借款总额 vs 已还总额(环形图)
  - 债权人分布(柱状图)
  - 还款方式分布(环形图)
  - 利率分布(柱状图)
  - 月度还款计划(柱状图)
- 使用 Chart.js 图表库
- 首页和分析页面共享导航栏样式
2026-06-28 23:38:47 +08:00
OP
a49a5a7cff build: 添加 x86 和 arm64 双架构部署包
- 构建 x86 (linux/amd64) backend 和 frontend 镜像
- 导出 arm64 和 x86 两种架构的 tar.gz 镜像包
- 添加 docker-compose.x86.yml 和 docker-compose.arm64.yml
- install.sh 自动检测架构并加载对应镜像
- 部署包约 200MB (backend 75M x2 + frontend 24M x2 + postgres 106M)
2026-06-28 23:07:06 +08:00
OP
75875606a2 fix: 修复 admin.html 通知函数引号嵌套错误导致 JS 解析失败
- renderNotifList/renderNotifBadge/loadNotifications 等函数使用了双引号嵌套
- 导致整个 script 块解析失败,所有函数(包括 loadStats/loadGroups/loadUsers)无法执行
- 统一改为单引号,修复管理后台数据不显示和退出按钮失效问题
v2.2
2026-06-28 23:01:28 +08:00
OP
498d29dfa9 security: 全面安全加固 v2.1
严重修复:
- C1: JWT密钥生成64字节随机字符串替代硬编码占位符
- C2: 数据库密码改为随机强密码,移除宿主机端口映射
- C3: 管理员默认密码改为强密码

高危修复:
- H1: 移除数据库54326端口映射,仅内部网络访问
- H3: 添加X-Frame-Options/CSP/XSS-Protection等安全头
- H4: 前端所有innerHTML拼接处添加escapeHtml转义防XSS
- H5: SMTP密码在API响应中脱敏显示
- H6: 债务列表接口添加用户隔离,普通用户只能看自己的数据
- H7: 债务详情/计划/记录接口添加归属校验
- H8: 账户级暴力破解锁定(5次失败锁定5分钟)
- H9: 速率限制数据增加过期清理机制防内存泄漏

中危修复:
- M1: 注册/重置密码接口添加后端密码强度校验(最少8位)
- M4: 添加全局异常处理器,500错误不再暴露堆栈
- M5: Docker容器改为非root用户运行
- M6: 添加.dockerignore排除pyc和敏感文件
- M7: 管理员操作写入审计日志
- M8: CORS限制为实际使用的HTTP方法和头

其他:
- Nginx隐藏版本号(server_tokens off)
- 管理员角色修改添加枚举校验
- 密码重置验证码接口返回统一错误信息
2026-06-28 22:46:24 +08:00
OP
ead41e2b8e fix: 修复注册接口和 refresh 接口账号枚举漏洞
- /register: 已存在账号返回相同成功消息,不再暴露账号是否存在
- /refresh: 将 'User not found' 改为 'Token 无效'
- 防止攻击者通过错误提示枚举有效账号
2026-06-28 22:37:18 +08:00
OP
4f9a5af306 fix: 修复找回密码接口账号枚举漏洞
- verify-reset-code: 将'账号不存在'改为'验证码错误或已过期'
- reset-password: 将'账号不存在'改为'验证码错误或已过期'
- 防止攻击者通过错误提示枚举有效账号
2026-06-28 22:35:21 +08:00
OP
ffca168dbe v2.1: 新增通知提醒功能和安全增强
功能:
- 通知提醒系统: 还款日提醒、逾期提醒、系统消息横幅、登录时通知
- 通知中心UI: 铃铛图标 + 下拉列表 + 未读徽章
- 定时任务: APScheduler 每小时检查即将到期的还款
- 邮件通知: SMTP 发送还款提醒和安全警告
- 异常登录通知: 3/5/10次失败触发网页和邮件通知

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

技术:
- 后端: FastAPI + SQLAlchemy + PostgreSQL
- 前端: 纯 HTML/CSS/JS
- 部署: Docker Compose (新增 build 配置)
2026-06-28 18:06:56 +08:00