🏢 展示站 🔐 登录编辑
🏠 首页 /📂 开发参考 /平台架构与技术栈

🏗️平台架构与技术栈

平台架构与技术栈

📄 architecture.md 📂 开发参考 架构技术栈 🕘 1 个历史版本

平台架构与技术栈

整体架构

TK-Safe-UpLoad 采用经典的三层架构。详细数据模型见 数据库表结构,接口规范见 REST API 文档,系统管理见 系统管理

graph TB
    subgraph Frontend["表现层 · Frontend"]
        M["📱 移动端
/m 路径
Tailwind + Alpine.js"] PC["🖥️ PC后台
/admin 路径
ECharts 统计图表"] SP["📊 数据大屏
/screen 路径
轮播 + 实时刷新"] end subgraph Backend["业务层 · Backend (Flask)"] API["REST API 路由
app.py"] AUTH["认证 · 会话管理
RBAC 权限控制"] MD["Markdown 渲染
Jinja2 模板引擎"] end subgraph Storage["数据层 · Storage"] DB["SQLite 数据库
safe_upload.db"] UPL["文件存储
uploads/ 目录"] LOG["操作日志
审计留痕"] end M --> API PC --> API SP --> API API --> AUTH AUTH --> MD MD --> DB API --> DB API --> UPL API --> LOG

核心路由

graph LR
    A["浏览器
192.168.11.70:5111"] --> B["Flask app.py"] B --> C{路径判断} C -->|/m| D["移动端模板
m/*.html"] C -->|/admin| E["PC后台模板
admin/*.html"] C -->|/screen| F["数据大屏
screen.html"] C -->|/api| G["REST API
返回 JSON"] C -->|/s| H["静态文件
uploads/"]

技术栈详情

技术 版本/说明 用途
Python 3.12 后端运行时
Flask 2.x Web 框架
SQLite 3.x 数据库(无需额外安装)
Jinja2 模板引擎 服务端渲染 HTML
Tailwind CSS CDN 引入 响应式 UI 样式
Alpine.js CDN 引入 轻量级前端交互
ECharts CDN 引入 数据可视化图表
hashlib (SHA-256) 标准库 密码加密存储

项目文件结构

TK-Safe-UpLoad/
├── app.py              # Flask 主应用(路由 + 业务逻辑,1296 行)
├── models.py           # 数据层(SQLite CRUD + 统计查询,667 行)
├── config.py           # 项目配置(端口/角色/风险等级等)
├── db_init.py          # 数据库初始化脚本
├── start.sh            # 启动脚本
├── requirements.txt    # 依赖清单
├── data/               # SQLite 数据库文件目录
│   └── safe_upload.db  # 主数据库
├── uploads/            # 上传文件存储
│   ├── photo/          # 隐患随手拍照片
│   ├── patrol/         # 巡查打卡照片
│   ├── report/         # 举报照片
│   ├── rectify/        # 整改照片
│   ├── training/       # 培训课件
│   └── general/        # 通用上传
├── static/             # 静态资源
├── templates/          # Jinja2 模板
│   ├── base.html       # 基础布局
│   ├── login.html      # 登录页
│   ├── portal.html     # 统一门户
│   ├── screen.html     # 数据大屏
│   ├── m/              # 移动端模板
│   │   ├── home.html   # 移动端首页
│   │   ├── photo.html  # 隐患随手拍
│   │   ├── patrol.html # 巡查打卡
│   │   ├── tasks.html  # 我的任务
│   │   ├── report.html # 隐患举报
│   │   ├── training.html # 线上培训
│   │   ├── library.html  # 资料查阅
│   │   ├── alerts.html   # 预警中心
│   │   ├── me.html       # 个人中心
│   │   └── tabbar.html   # 底部导航栏
│   └── admin/          # PC 后台模板
│       ├── modules.html    # 模块总览
│       ├── dashboard.html  # 管理仪表盘
│       ├── table.html      # 通用台账页
│       ├── hazards.html    # 隐患列表
│       ├── risks.html      # 风险点管理
│       ├── special.html    # 专项整治
│       ├── training.html   # 培训管理
│       ├── emergency.html  # 应急管理
│       ├── permits.html    # 作业许可
│       ├── reports.html    # 统计报表
│       ├── users.html      # 用户管理
│       ├── logs.html       # 操作日志
│       ├── settings.html   # 系统配置
│       └── ...             # 其他模板
├── test_all.py         # 完整测试套件
└── venv/               # Python 虚拟环境

部署架构

项目 说明
部署设备 TK-Server · 192.168.11.70
服务端口 5111
公网地址 http://119.145.17.34:5111/
内网地址 http://192.168.11.70:5111/
进程管理 Leon-Control 统一管理(服务 ID 18)
自动备份 每日凌晨自动增量备份至内网 Gitea
反向代理 Caddy 反代(leyon.top:8443/tk-safe/)

安全机制

  • 密码存储:SHA-256 单向哈希,数据库不存储明文密码
  • 会话管理:Flask Session Cookie,HttpOnly + SameSite=Lax,7 天有效期
  • 权限控制:基于角色的访问控制(RBAC),5 级角色体系
  • 操作日志:全操作留痕,IP 地址记录,支持按模块/关键词检索
  • 文件安全:上传文件重命名(时间戳+安全字符),禁止路径穿越
  • CSRF 防护:SameSite Cookie 策略