Skip to content

key88cb/BS-hw

Repository files navigation

智能相册管理系统

面向个人照片管理的全栈应用:前端 React + MUI,后端 Go/Gin + Redis 队列,AI 服务基于 Python/Dashscope 自动描述与标签,存储 PostgreSQL/pgvector,Nginx 统一入口,全部容器化。

主要特性

  • JWT 认证、注册/登录/重置全流程
  • 单张/批量上传与异步处理,缩略图生成与 AI 自动标注
  • 文本向量搜索与标签搜索,照片详情/编辑/删除
  • 响应式界面,桌面与移动端一致体验

技术栈

分类 技术
前端 React, React Router, Axios, MUI
后端 API Go, Gin
Worker Go, Redis
AI 服务 Python, Flask, Dashscope
数据库/向量 PostgreSQL + pgvector
代理 Nginx
容器 Docker, Docker Compose
CI GitHub Actions

架构

User ──> Nginx (8080)
  ├─> Frontend (React SPA)
  ├─> Backend API (Go/Gin)
  └─> /uploads
Backend API ──> PostgreSQL (pgvector)
Backend API ──> Redis Queue ──> Worker (Go)
Worker ──> AI Service (Python/Dashscope)

测试与质量

  • 前端覆盖率:npm test -- --coverage
  • 后端覆盖率:go test ./... -cover -coverprofile=coverage.out && go tool cover -html=coverage.out -o coverage.html
  • AI 接口冒烟:bash scripts/ai_smoke.sh
  • 建议在 CI 中上传覆盖率工件并作为合并前置条件。如需在 CI 跑 AI 冒烟,设置 AI_SMOKE=true 并确保 AI 服务可访问。

本地启动

前置:Docker 与 Docker Compose,配置 DASHSCOPE_API_KEY(通过 .env 注入,不要写死在仓库里)。

git clone <repository-url>
cd BS-hw
docker-compose up --build -d
# 访问前端 http://localhost:8080
# API 通过 http://localhost:8080/api/...

Docker 运行与“只提交配置、不提交镜像导出包”的规范见:docs/docker.md

可选:如果你不想用 .env,可以用 docker-compose.override.yml 注入密钥(示例见 docker-compose.override.example.yml,该文件默认不提交)。 日志:

docker-compose logs -f          # 全部
docker-compose logs -f backend-api

停止与清理:

docker-compose down        # 停止容器
docker-compose down -v     # 停止并清理数据卷

API 概览

  • 认证:POST /api/auth/register|login|refresh|forgot-password|reset-password|change-password
  • 用户:GET/PUT /api/profile
  • 照片:POST /api/myphotos/batch-upload, GET /api/myphotos, GET/PUT/DELETE /api/myphotos/:id, POST /api/myphotos/:id/image
  • 标签:GET /api/tags, POST/DELETE /api/myphotos/:id/tags
  • 搜索:POST /api/mcp/search(文本搜图)

规划与改进

  • 补充后端/前端自动化测试与契约测试,CI 覆盖率门禁
  • 增强缓存与性能(懒加载、虚拟滚动、热点接口缓存)
  • EXIF/地理位置高级筛选、相册分组、视频支持
  • 完善错误码与用户提示、监控指标与告警、数据删除/隐私流程

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors