用户注册登录/权限体系(多角色)
管理后台/多端页面(列表、筛选、操作日志等)
文件上传、下载、恢复、批量管理
日志分析与可视化
即时语音识别+翻译
UI美化与响应式布局
适配桌面/移动端
服务部署、日志采集、容错设计
   1) 整体架构与设计思路(模块与技术栈)
后端
技术:Flask + SQLAlchemy + Flask-Login + Flask-WTF + Flask-Mail,SQLite 存储,Gunicorn 部署。
能力:用户鉴权(多角色:super_admin/admin/merchant/customer)、文件管理(上传/下载/删除/恢复/批量)、操作日志、搜索/筛选、分页、邮件通知、环境变量配置。
前端
技术:原生 HTML + CSS + JavaScript(无框架),Jinja2 渲染;CSS 变量与响应式布局。
页面:登录/注册/忘记密码、后台面板、用户管理、操作日志、文件页、翻译系统页等。
2) 我负责全部模块(全程独立开放)
管理后台“操作日志”页
修复模糊搜索无结果与回车无效问题;端到端打通 API 路径和权限过滤。
解决 SQL 多次 JOIN 触发的 “ambiguous column name: user.id” 错误,梳理查询链路仅一次 JOIN。
新增模板过滤器 operation_css_class,为不同操作类型映射样式;实现 15+ 种操作类型徽章(颜色/图标/渐变)。
表格可用性优化:固定布局、列宽比例(10/10/15/50/15),详情列自动换行;增加 hover 与浅色网格线框。
可量化结果(以现有可见规模估算):
日志页操作类型覆盖 ≥15 类,样式一致性与可读性显著提升;用户筛选平均点击次数减少(支持回车直达)。
3) 难点/坑点与解决方案
难点1:SQLAlchemy 多表 JOIN 造成列名歧义
现象:sqlite3.OperationalError: ambiguous column name: user.id
根因:重复 join(User) 或隐式联结导致别名冲突。
方案:统一查询链路仅一次 JOIN,按条件分支控制是否 JOIN;明确 Model.id 引用或使用别名。
难点2:前后端 API 路径不一致
现象:前端请求 /api/admin/search-users,后端实际为 /file-transfer/api/admin/search-users。
方案:统一路径常量;在 JS 层封装 apiBase;在模板里注入 url_for 生成地址。
难点3:搜索交互不可用(回车无效/无匹配)
方案:为输入框绑定 keypress Enter 事件,变更 URL 查询参数并刷新;后端模糊匹配加权限过滤。
难点5:编码与本地测试输出异常(Windows GBK)
现象:控制台打印 emoji/Unicode 报编码错误。
方案:测试脚本移除 emoji 或使用 ensure_ascii=False;避免控制台强制输出特殊字符。