Skip to content

idoknow/Memories

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Memories — 多学校校园回忆图片分享平台

一个基于 Rust 后端 + React 前端的全栈校园回忆图片分享平台,支持多学校独立运营、OAuth 2.0 校园认证、AI 自动审核、EXIF 信息提取、实时统计与定时任务。


📋 目录


项目概述

Memories 是一个多学校 (Multi-Tenant) 校园回忆图片分享平台。每个学校可以独立配置 OAuth 认证、Logo 和品牌信息,用户通过校园墙账号登录后可以上传、浏览、搜索校园回忆图片。平台内置 AI 自动审核机制,确保内容安全合规。

适用场景

  • 🏫 多校区 / 多学校的统一回忆分享平台
  • 📸 毕业季、校庆等活动的照片收集与展示
  • 🔍 按时间、标签、学校分类检索历史照片
  • 🛡️ 需要内容审核的 UGC 图片平台

当前状态

编译通过 (Rust 1.93.0, 0 错误, 38 非关键警告) ✅ 所有核心功能已实现 ⚠️ 部分警告待清理(未使用的导入/函数,不影响运行)


系统架构

┌──────────────────────────────────────────────────────┐
│                    用户浏览器                          │
│            (React SPA + Tailwind CSS)                 │
└──────────────┬───────────────────────────────────────┘
               │ HTTP/HTTPS
               ▼
┌──────────────────────────────────────────────────────┐
│                 Nginx (前端静态资源)                    │
│                    Port 80/443                        │
└──────────────┬───────────────────────────────────────┘
               │ API 代理 (/api/*)
               ▼
┌──────────────────────────────────────────────────────┐
│            Actix-web 后端服务 (Rust)                   │
│                  Port 8080                            │
│  ┌──────────┬──────────┬──────────┬──────────┐      │
│  │ Handlers │ Services │ Models   │ Utils    │      │
│  │ (API层)  │ (业务层)  │ (数据层)  │ (工具层)  │      │
│  └──────────┴──────────┴──────────┴──────────┘      │
│  ┌──────────────────────────────────────────┐       │
│  │  调度器: 定时统计 + 链接保活 + 内存清理    │       │
│  └──────────────────────────────────────────┘       │
└──────────────┬───────────────────────────────────────┘
               │ SQL (SQLx 异步)
               ▼
┌──────────────────────────────────────────────────────┐
│              PostgreSQL 16 数据库                      │
│                  Port 5432                            │
│  20 张迁移表: schools, users, images, tags, stats...  │
└──────────────────────────────────────────────────────┘
               │
               ▼ (可选)
┌──────────────────────────────────────────────────────┐
│              外部服务集成                               │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐          │
│  │ OAuth 2.0 │  │ OpenAI   │  │ 图床服务  │          │
│  │ 校园墙    │  │ AI 审核   │  │ 图片存储  │          │
│  └──────────┘  └──────────┘  └──────────┘          │
└──────────────────────────────────────────────────────┘

技术栈

后端 (Rust)

类别 技术 说明
语言 Rust 2021 Edition 内存安全、高性能
Web 框架 Actix-web 4.x 异步 Actor 模型 HTTP 服务器
数据库驱动 SQLx 0.7 异步、编译时 SQL 校验的 PostgreSQL 驱动
异步运行时 Tokio 1.x Rust 异步生态核心
OAuth 2.0 oauth2 4.x + reqwest 校园墙 OAuth 认证集成
AI 集成 async-openai 0.23 OpenAI API 调用 (支持自定义 Base URL)
EXIF 解析 kamadak-exif 0.5 读取 JPEG 图片拍摄时间
定时任务 tokio-cron-scheduler 0.11 Cron 表达式调度
序列化 serde + serde_json JSON 序列化/反序列化
日志 tracing + tracing-subscriber 结构化日志
验证 validator 0.18 请求参数校验
错误处理 anyhow + thiserror 灵活的错误处理

前端 (React)

类别 技术 说明
框架 React 19 UI 组件库
语言 TypeScript 5 类型安全
构建 Vite 6 快速开发与构建
样式 Tailwind CSS 4 实用优先的 CSS 框架
状态管理 Zustand 5 轻量级全局状态
数据请求 TanStack Query (React Query) 缓存与自动刷新
路由 React Router 7 客户端路由
表单 react-hook-form + Zod 表单验证
通知 sonner Toast 通知组件
布局 react-masonry-css 瀑布流图片布局

基础设施

类别 技术 说明
数据库 PostgreSQL 16 关系型数据库
容器化 Docker + Docker Compose 一键部署
反向代理 Nginx (前端容器内) 静态资源 + API 代理

项目结构

Memories/
├── Cargo.toml                    # Rust 项目配置 (依赖、二进制入口)
├── Cargo.lock                    # 依赖锁文件
├── docker-compose.yml            # Docker 三服务编排 (PG + 后端 + 前端)
├── Dockerfile                    # 后端多阶段构建镜像
├── package.json                  # 根目录包信息
├── .env.example                  # 环境变量模板
├── .gitignore
│
├── migrations/                   # 数据库迁移脚本 (按序执行)
│   ├── 001_create_schools.sql              # 学校表
│   ├── 002_create_users.sql                # 用户表
│   ├── 003_create_images.sql               # 图片表
│   ├── 004_create_image_tags.sql           # 图片标签表
│   ├── 005_create_site_config.sql          # 网站配置表
│   ├── 006_create_external_services.sql    # 外部服务/友链表
│   ├── 007_create_global_stats.sql         # 全局统计表
│   ├── 008_create_school_stats.sql         # 学校统计表
│   ├── 009_fix_timestamp_types.sql         # 时间戳类型修正
│   ├── 010_add_oauth_config_to_schools.sql # 学校 OAuth 配置字段
│   ├── 011_create_operation_logs.sql       # 操作日志表
│   ├── 012_add_icp_filing.sql              # ICP 备案号字段
│   ├── 013_add_backup_ai_config.sql        # 备用 AI 配置
│   ├── 014_add_member_role.sql             # 成员角色扩展
│   ├── 015_add_ai_providers.sql            # AI 提供商多源支持
│   ├── 016_add_theme_config.sql            # 主题配置
│   ├── 017_add_brand_slogan_github.sql     # 品牌标语 + GitHub 链接
│   ├── 018_add_help_center_and_icons.sql   # 帮助中心 + 图标配置
│   ├── 019_add_developers_changelog.sql    # 开发者 + 更新日志
│   └── 020_add_user_fields.sql             # 用户扩展字段
│
├── scripts/                      # 运维脚本
│   ├── install-commands.sh       # 安装全局 CLI 命令
│   └── memories-stop.sh          # 停止服务脚本
│
├── src/                          # Rust 后端源代码
│   ├── main.rs                   # 应用入口:路由、中间件、启动流程
│   ├── lib.rs                    # 模块声明
│   ├── config.rs                 # 配置管理 (环境变量 → Config 结构体)
│   ├── database.rs               # 数据库连接池 + 迁移 + 默认配置初始化
│   ├── scheduler.rs              # 定时任务调度器
│   │
│   ├── handlers/                 # HTTP 请求处理器 (Controller 层)
│   │   ├── mod.rs                # 模块导出
│   │   ├── auth.rs               # OAuth 登录/回调/登出/用户信息
│   │   ├── image.rs              # 图片上传/列表/详情/修改/删除
│   │   ├── admin.rs              # 管理后台: 审核/用户管理/统计
│   │   ├── search.rs             # 图片搜索/热门标签
│   │   ├── public.rs             # 公开接口: 站点配置/学校列表
│   │   └── database.rs           # 数据库管理接口 (调试用)
│   │
│   ├── models/                   # 数据模型 (对应数据库表)
│   │   ├── mod.rs                # 统一导出所有模型
│   │   ├── user.rs               # 用户模型 + 角色管理
│   │   ├── school.rs             # 学校模型 + OAuth 配置
│   │   ├── image.rs              # 图片模型 + 搜索/分页/标签关联
│   │   ├── tag.rs                # 标签模型 + 热门统计
│   │   ├── config.rs             # 站点配置 + 外部服务
│   │   ├── stats.rs              # 全局统计 + 学校统计
│   │   ├── ai_provider.rs        # AI 提供商模型
│   │   └── operation_log.rs      # 操作日志模型
│   │
│   ├── services/                 # 业务逻辑服务层
│   │   ├── mod.rs
│   │   ├── oauth.rs              # OAuth 2.0 认证流程
│   │   ├── ai_review.rs          # AI 自动审核 (OpenAI 兼容 API)
│   │   ├── exif_parser.rs        # EXIF 拍摄时间提取
│   │   ├── stats_updater.rs      # 统计数据定时更新
│   │   ├── maintenance.rs        # 运维任务: 链接保活/限流/内存清理
│   │   ├── school_init.rs        # 首次运行学校初始化向导
│   │   ├── operation_log_service.rs  # 操作日志记录
│   │   └── realtime_stats.rs     # 实时统计查询
│   │
│   ├── utils/                    # 工具模块
│   │   ├── mod.rs
│   │   ├── response.rs           # 统一 JSON 响应格式
│   │   ├── validation.rs         # 输入验证函数
│   │   └── process_lock.rs       # 进程锁 (PID 文件管理)
│   │
│   └── bin/                      # 额外的二进制入口
│       ├── cli.rs                # CLI 工具 (数据库初始化/学校管理)
│       ├── stop.rs               # 停止服务命令
│       └── commands/             # CLI 子命令模块
│
├── frontend/                     # React 前端应用
│   ├── package.json              # 前端依赖
│   ├── vite.config.ts            # Vite 构建配置
│   ├── tsconfig.json             # TypeScript 配置
│   ├── index.html                # HTML 入口
│   ├── nginx.conf                # 生产环境 Nginx 配置
│   ├── Dockerfile                # 前端 Docker 镜像
│   ├── README.md                 # 前端文档
│   ├── GLOBAL_CONTEXT_MENU_USAGE.md  # 全局右键菜单文档
│   └── src/
│       ├── main.tsx              # React 入口
│       ├── App.tsx               # 根组件 + 路由
│       ├── components/           # 组件
│       │   ├── admin/            # 管理后台组件
│       │   ├── auth/             # 认证组件
│       │   ├── common/           # 通用组件 (右键菜单等)
│       │   ├── image/            # 图片卡片/瀑布流
│       │   └── layout/           # 布局组件
│       ├── pages/                # 页面组件
│       ├── services/             # API 调用封装
│       ├── stores/               # Zustand 状态
│       ├── hooks/                # 自定义 Hooks
│       ├── types/                # TypeScript 类型
│       ├── lib/                  # 工具库
│       └── assets/               # 静态资源
│
└── target/                       # Rust 编译产物 (gitignore)

快速开始

前置要求

依赖 最低版本 说明
Rust 1.75+ 推荐使用 rustup 安装
PostgreSQL 16 或使用 Docker 容器
Node.js 20+ 前端构建
Docker 24+ (可选) 容器化部署

方式一:Docker Compose 一键部署 (推荐)

这是最快捷的部署方式,会自动启动 PostgreSQL + 后端 + 前端三个服务。

# 1. 克隆项目
cd Memories

# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,设置 DB_PASSWORD 和 OPENAI_API_KEY

# 3. 启动所有服务
docker-compose up -d

# 4. 查看运行状态
docker-compose ps

# 5. 查看日志
docker-compose logs -f app

# 6. 停止服务
docker-compose down

启动后访问:

  • 前端页面:http://localhost
  • 后端 API:http://localhost:8080/api

方式二:本地开发运行

后端

# 1. 启动 PostgreSQL (如果未安装可使用 Docker)
docker run -d --name memories-pg \
  -e POSTGRES_DB=memories \
  -e POSTGRES_USER=memories_user \
  -e POSTGRES_PASSWORD=memories_password \
  -p 5432:5432 \
  postgres:16-alpine

# 2. 配置环境变量
export DATABASE_URL="postgresql://memories_user:memories_password@localhost:5432/memories"
export SESSION_SECRET="dev-secret-change-in-production"
export OPENAI_API_KEY="sk-your-key"      # 可选,不设置则跳过 AI 审核
export RUST_LOG="memories=debug"

# 3. 运行数据库迁移 (或直接 cargo run 自动迁移)
cargo run --bin memories-cli -- init-db

# 4. 创建学校 (交互式)
cargo run --bin memories-cli -- create-school

# 5. 启动后端服务
cargo run
# 服务器监听 http://0.0.0.0:8080

首次运行:系统会自动检测数据库状态,如果没有学校数据,会进入交互式创建向导。

前端

cd frontend

# 安装依赖
npm install

# 开发模式 (热更新)
npm run dev
# 访问 http://localhost:5173

# 生产构建
npm run build

方式三:生产环境部署

详见 配置与部署 章节。


API 端点总览

完整的 API 文档请参阅 API_DOCUMENTATION.md。以下是快速参考:

公开接口 (无需认证)

方法 路径 说明
GET /api/site/config 获取网站全局配置
GET /api/site/external-services 获取友情链接列表
GET /api/schools 获取学校列表
GET /api/schools/{id} 获取学校详情
GET /api/images 分页获取已审核图片
GET /api/images/{id} 获取图片详情+标签
GET /api/search/images 多维度搜索图片
GET /api/search/tags 获取热门标签排行

认证接口

方法 路径 说明
GET /api/auth/login?school_id={id} 发起 OAuth 登录 (302 重定向)
GET /api/auth/callback?code=&state= OAuth 回调处理
POST /api/auth/logout 登出
GET /api/auth/profile 获取当前用户信息

需要认证 (Header: X-User-ID)

方法 路径 说明
POST /api/images/upload 上传图片
PUT /api/images/{id} 修改图片信息
DELETE /api/images/{id} 删除图片

管理员接口 (role=admin)

方法 路径 说明
GET /api/admin/images/pending 获取待审核图片
PUT /api/admin/images/{id}/review?action=approve|reject 审核图片
GET /api/admin/users 用户列表 (分页)
PUT /api/admin/users/{id}/role 修改用户角色
GET /api/admin/stats/global 全局统计数据
GET /api/admin/stats/schools 各学校统计数据

数据库设计

项目包含 20 个数据库迁移脚本,按序号依次执行。以下是核心表的设计:

核心业务表

schools — 学校表 (Migration 001, 010)

字段 类型 约束 说明
id UUID PK, DEFAULT gen_random_uuid() 学校唯一标识
name VARCHAR(100) NOT NULL, UNIQUE 学校名称
logo_url TEXT 学校 Logo 图片 URL
oauth_base_url TEXT NOT NULL OAuth 服务器基础 URL
oauth_client_id VARCHAR(255) OAuth 客户端 ID (010 迁移添加)
oauth_client_secret VARCHAR(255) OAuth 客户端密钥 (010 迁移添加)
oauth_scope VARCHAR(255) DEFAULT 'profile tenant' OAuth 权限范围 (010 迁移添加)
created_at TIMESTAMP DEFAULT NOW() 创建时间

users — 用户表 (Migration 002, 014, 020)

字段 类型 约束 说明
id UUID PK, DEFAULT gen_random_uuid() 用户唯一标识
qq_number VARCHAR(20) UNIQUE, NOT NULL QQ 号 (OAuth 标识)
role VARCHAR(10) CHECK (user/admin/member) 用户角色 (014 添加 member)
nickname VARCHAR(100) 昵称 (020 迁移添加)
avatar_url TEXT 头像 URL (020 迁移添加)
created_at TIMESTAMP DEFAULT NOW() 注册时间
updated_at TIMESTAMP DEFAULT NOW() 更新时间

images — 图片表 (Migration 003)

字段 类型 约束 说明
id BIGSERIAL PK 自增主键
url TEXT NOT NULL 图片存储 URL
shot_timestamp TIMESTAMP NOT NULL 拍摄时间 (来自 EXIF 或上传时间)
upload_timestamp TIMESTAMP DEFAULT NOW() 上传时间
last_maintenance_timestamp TIMESTAMP DEFAULT NOW() 最后维护时间 (链接保活)
name VARCHAR(255) 图片名称/标题
description TEXT 图片描述/备注
file_size BIGINT 文件大小 (字节)
school_id UUID FK → schools(id) CASCADE 所属学校
uploader_id UUID FK → users(id) SET NULL 上传者
file_type VARCHAR(10) CHECK (jpg/png/webp/gif) 文件类型
is_anonymous BOOLEAN DEFAULT FALSE 是否匿名投稿
status VARCHAR(20) CHECK (approved/pending/rejected) 审核状态
created_at TIMESTAMP DEFAULT NOW() 创建时间
updated_at TIMESTAMP DEFAULT NOW() 更新时间

image_tags — 图片标签表 (Migration 004)

字段 类型 约束 说明
id BIGSERIAL PK 自增主键
image_id BIGINT FK → images(id) CASCADE 关联图片
tag VARCHAR(50) NOT NULL 标签文本

配置与统计表

site_config — 网站配置表 (Migration 005, 012, 013, 016, 017, 018, 019)

包含网站名称、Logo、公告、投稿规则、关于页面、隐私政策、服务条款、AI 配置、ICP 备案号、主题配色、品牌标语、GitHub 链接、帮助中心、图标配置、开发者信息、更新日志等 30+ 字段。

external_services — 外部服务表 (Migration 006)

友情链接/外部服务信息:名称、URL、描述、图标。

global_stats — 全局统计表 (Migration 007)

每日统计快照:总图片数、总大小、平均大小、时间跨度、用户数、通过率、匿名率、文件类型分布、学校数量等。

school_stats — 学校统计表 (Migration 008)

按学校维度的每日统计快照,字段结构与全局统计类似。

operation_logs — 操作日志表 (Migration 011)

记录管理员操作:操作类型、操作者、目标、详情、时间。

ai_providers — AI 提供商表 (Migration 015)

支持配置多个 AI 服务提供商,每个提供商有独立的 API Key、Base URL、Model。


核心功能详解

1. 多学校 (Multi-Tenant) 架构

  • 每个学校拥有独立的 OAuth 配置、Logo、品牌信息
  • 图片按 school_id 隔离,用户通过所属学校的 OAuth 登录
  • 支持通过 CLI 工具动态添加/管理学校

2. OAuth 2.0 校园认证

  • 对接校园墙 OAuth 2.0 授权码模式 (Authorization Code Grant)
  • 流程:用户点击登录 → 重定向到校园墙授权页 → 用户授权 → 回调带回 code → 后端换取 token → 获取用户信息 → 创建/更新本地用户 → 建立 Session
  • 第一个登录的用户自动设为管理员

3. AI 自动审核

  • 图片上传后自动触发异步 AI 审核
  • 使用 OpenAI 兼容 API (支持自定义 Base URL,可接入任何兼容服务)
  • 支持主备双 AI 配置 (Migration 013),主 AI 不可用时自动切换备用
  • 审核结果:approved (通过) / rejected (拒绝) + 建议标签
  • 审核失败时图片保持 pending 状态,等待管理员手动处理

4. EXIF 信息提取

  • 上传图片时自动下载到临时目录
  • 使用 kamadak-exif 解析 JPEG 拍摄时间
  • 无 EXIF 数据时使用上传时间作为拍摄时间
  • 解析完成后自动清理临时文件

5. 定时任务系统

任务 Cron 表达式 说明
全局统计更新 每天 03:00 计算全局图片数、大小、通过率、类型分布等
学校统计更新 每天 04:00 按学校维度计算各项统计指标
链接保活检查 定期执行 检查超过 60 天未维护的图片链接
内存清理 定期执行 清理过期缓存和临时数据

6. 限流保护

  • 全局 API 限流:默认 60 请求/分钟 (可通过 RATE_LIMIT_REQUESTS_PER_MINUTE 配置)
  • 上传限流:默认 10 次/小时 (可通过 UPLOAD_RATE_LIMIT_PER_HOUR 配置)
  • 超限返回 HTTP 429 状态码

7. 进程管理

  • PID 文件锁:在项目根目录创建 memories.pid,防止重复启动
  • 优雅关闭:捕获 SIGINT/SIGTERM 信号,等待当前请求完成后关闭
  • 全局停止命令memories-stop 可远程停止服务
  • 详见 PROCESS_MANAGEMENT.md

配置与部署

环境变量完整列表

变量名 默认值 说明
DATABASE_URL (必填) PostgreSQL 连接字符串
SESSION_SECRET 默认值 (请修改) Session 加密密钥
SERVER_HOST 0.0.0.0 服务器监听地址
SERVER_PORT 8080 服务器监听端口
RATE_LIMIT_REQUESTS_PER_MINUTE 60 全局 API 限流 (次/分钟)
UPLOAD_RATE_LIMIT_PER_HOUR 10 上传限流 (次/小时)
LINK_MAINTENANCE_DAYS_THRESHOLD 60 链接保活阈值 (天)
DB_ADMIN_PASSWORD admin123 数据库管理密码
AI_API_KEY / OPENAI_API_KEY (空) 主 AI API 密钥
AI_BASE_URL https://api.openai.com/v1 主 AI API 地址
AI_MODEL gpt-3.5-turbo 主 AI 模型名称
AI_BACKUP_API_KEY / BACKUP_OPENAI_API_KEY (空) 备用 AI API 密钥
AI_BACKUP_BASE_URL https://api.openai.com/v1 备用 AI API 地址
AI_BACKUP_MODEL gpt-3.5-turbo 备用 AI 模型名称
RUST_LOG memories=info 日志级别 (trace/debug/info/warn/error)

Docker Compose 部署

# 启动所有服务
docker-compose up -d

# 仅启动数据库 (用于本地开发)
docker-compose up -d postgres

# 重新构建并启动
docker-compose up -d --build

# 查看各服务状态
docker-compose ps

# 停止并清理
docker-compose down -v  # -v 同时删除数据卷

Systemd 生产部署 (推荐)

创建 /etc/systemd/system/memories.service

[Unit]
Description=Memories Backend Service
After=network.target postgresql.service

[Service]
Type=simple
User=memories
WorkingDirectory=/opt/memories
Environment="DATABASE_URL=postgresql://..."
Environment="SESSION_SECRET=your-secret"
Environment="RUST_LOG=info"
ExecStart=/opt/memories/target/release/memories
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable memories
sudo systemctl start memories
sudo systemctl status memories

进程管理

Memories 内置了完整的进程管理功能,详见 PROCESS_MANAGEMENT.md

快速参考:

# 启动服务
cargo run

# 停止服务 (三种方式)
memories-stop                     # 全局命令 (需安装)
./scripts/memories-stop.sh        # 直接脚本
Ctrl+C                            # 终端信号

# 安装全局命令
./scripts/install-commands.sh

# 清理残留 PID 文件
rm memories.pid

开发指南

项目初始化

# 1. 编译
cargo build

# 2. 运行 CLI 初始化数据库
cargo run --bin memories-cli -- init-db

# 3. 创建学校
cargo run --bin memories-cli -- create-school

# 4. 启动开发服务器
cargo run

CLI 工具命令

cargo run --bin memories-cli -- help              # 帮助信息
cargo run --bin memories-cli -- init-db           # 初始化数据库
cargo run --bin memories-cli -- create-school     # 交互式创建学校
cargo run --bin memories-cli -- delete-schools    # 删除所有学校 (危险!)

详见 CLI_USAGE.md

数据库迁移

迁移脚本位于 migrations/ 目录,按序号自动执行。添加新迁移时:

  1. 创建新 SQL 文件,命名格式 NNN_description.sql
  2. 重启应用,SQLx 会自动运行未执行的迁移

代码规范

  • Rust: 遵循标准 Rust 风格 (rustfmt)
  • TypeScript/React: 遵循 ESLint 规则
  • API 响应: 统一使用 utils::response 模块的 JSON 格式
  • 错误处理: Handler 层捕获错误并返回友好信息,Service 层使用 anyhow::Result

调试

# 设置详细日志
export RUST_LOG=memories=debug,sqlx=debug
cargo run

# 检查编译错误
cargo check

# 运行测试
cargo test

# 查看 API 文档
# 访问 http://localhost:8080/api/... 端点

相关文档

文档 说明
API_DOCUMENTATION.md 完整 API 接口文档 (请求/响应示例、错误码)
CLI_USAGE.md CLI 工具使用指南
PROCESS_MANAGEMENT.md 进程管理详解
BUILD_STATUS.md 编译状态报告
COMPILATION_FIX_PROGRESS.md 编译修复历史
COMPILATION_SUCCESS.md 编译成功报告
frontend/README.md 前端项目文档
frontend/GLOBAL_CONTEXT_MENU_USAGE.md 全局右键菜单使用指南

License

MIT


Memories — 让校园回忆永不褪色 📸

7. 安全防护

  • 所有修改操作需身份验证
  • 管理员操作需 admin 权限
  • SQL 参数化查询防注入
  • 输入验证和 sanitization

下一步开发计划

  1. 修复编译错误 - 解决当前存在的类型导出和 trait 实现问题
  2. 完善中间件 - 重新实现认证和限流中间件
  3. 添加测试 - 编写单元测试和集成测试
  4. 性能优化 - 添加缓存层(Redis)
  5. 文档完善 - 补充 API 文档和使用指南

License

MIT

About

一个基于 Rust 后端 + React 前端的全栈校园回忆图片分享平台,支持多学校独立运营、OAuth 2.0 校园认证、AI 自动审核、EXIF 信息提取、实时统计与定时任务。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors