软件设计描述

第三组证件照数据库文件
https://159.54.172.14:8888/down/MQ6IF6ZW7JLp.sql

一、数据库设计步骤详解

1. 数据库需求分析

基于项目文档,需满足以下核心数据需求:

  • 用户数据:存储微信一键登录的用户ID(openid)、昵称、头像URL及账号状态(正常/禁止登录),需保证用户信息安全。
  • 照片数据:记录用户上传的原始照片路径(o_img)、处理后的照片路径(n_img)、文件大小及生成时间,支持按规格模板自动裁剪与美化。
  • 规格模板数据:预设200+种证件规格参数(如身份证35mm×45mm),包含像素尺寸(width_px / height_px)、物理尺寸(width_mm / height_mm)、分辨率(dpi)等属性,并支持用户自定义尺寸(custom表)。
  • 操作日志数据:追踪用户行为记录(生成证件照、换背景、下载等),用于分析用户偏好与系统优化。

需满足高并发读写、快速检索规格模板、数据加密存储等性能与安全需求。

2. 概念结构设计(E-R模型)

根据文档中的E-R图框架,定义核心实体及关系:

  • 用户(User):属性包括用户ID(主键)、openid、昵称、头像URL、创建时间。
  • 证件照(Photo):属性包括照片ID(主键)、用户ID(外键)、规格名称、原图路径、处理后路径、生成时间。
  • 规格模板(Item):属性包括模板ID(主键)、名称(如“护照35mm×45mm”)、宽高比、分辨率、所属分类(常用寸照/签证/证件)。
  • 用户自定义尺寸(Custom):记录用户自定义的宽高参数,关联用户ID与模板ID(多对多关系)。
  • 操作日志(PhotoRecord):记录用户行为类型(生成/下载/编辑)、操作时间及关联用户ID。

实体间通过外键约束(如User.Photo.user_id)确保数据一致性。

3. 逻辑结构设计(关系模型)

将E-R模型转化为表结构:

表名 字段名 说明
users id (PK) 用户ID
openid 微信openid
nickname 昵称
avatar_url 头像URL
status 账号状态(正常/禁止登录)
create_time 创建时间
photos id (PK) 照片ID
user_id (FK) 关联用户ID
name 规格名称
o_img 原图路径
n_img 处理后路径
size 文件大小
create_time 生成时间
items id (PK) 模板ID
name 模板名称
width_px 宽度(像素)
height_px 高度(像素)
width_mm 宽度(毫米)
height_mm 高度(毫米)
dpi 分辨率
category 所属分类
custom id (PK) 自定义尺寸ID
user_id (FK) 关联用户ID
width_px 宽度(像素)
height_px 高度(像素)
width_mm 宽度(毫米)
height_mm 高度(毫米)
create_time 创建时间
photo_records id (PK) 日志ID
user_id (FK) 关联用户ID
type 操作类型(生成/下载/编辑)
name 操作名称
create_time 操作时间

通过索引优化高频查询(如photos.user_iditems.category),采用范式化设计减少冗余字段。

4. 物理结构设计

结合性能与安全需求:

  • 存储优化:照片文件采用对象存储(如腾讯云COS),数据库仅保存文件路径(o_img / n_img)。
  • 索引策略:对photos.user_id建立B+树索引,加速用户照片检索;对items.name建立哈希索引,提升规格搜索效率。
  • 安全机制:用户敏感字段(如openid)使用AES加密存储,定期备份至异地灾备中心。
  • 扩展性设计:通过水平分表策略(按user_id哈希)支持千万级数据量,预留模板参数动态更新接口。
  • 参数配置表:使用web_glow表存储美颜参数(亮度、对比度等),支持后台灵活调整算法强度。

二、用户界面设计策略

1. 用户特性与功能任务分析

针对目用户差异化需求:

  • 求职者/学生:高频次制作标准化证件照,需突出“一键合规”功能,提供官方尺寸自动校验提醒(如护照尺寸不符合时弹窗提示)。
  • 企业用户:批量处理需求突出,设计“批量上传+模板同步应用”功能,支持一次操作生成百张同规格证件照。
  • 普通用户:操作容忍度低,采用极简流程(拍摄→AI引导→自动裁剪),隐藏复杂参数(如dpi设置默认值300)。

核心任务包括拍摄引导、规格选择、美颜调整、结果分,需适配微信“即用即走”特性。

2. 界面类型与交互设计

采用 渐进式单页应用(SPA) 架构:

  • 拍摄界面:全屏摄像头预览叠加AR引导框(人脸位置提示),底部悬浮“拍摄按钮+切换前后置摄像头”控件,长按触发拍摄教程视频。
  • 编辑界面:左侧Canvas实时渲染,右侧垂直布局工具面板(美颜/背景替换/调参),采用拖拽式参数滑块(亮度、对比度)。
  • 模板选择界面:分类导航栏(常用寸照/各类签证/证件)+搜索框,每项模板配预览图与官方说明标签(如“护照35mm×45mm”)。
  • 社交裂变组件:在结果页嵌入“分享给好友领模板”按钮,触发微信原生分享面板,好友通过链接领取专属模板。

工具原型通过Figma设计,使用WePY框架实现组件化开发。

3. 界面设计原则落实

  • 合适性:针对移动端优化按钮尺寸(≥1cm²),禁用灰色不可点击状态;为视力障碍用户提供语音引导拍摄功能(TalkBack兼容)。
  • 简便易操作:关键操作不超过3步(拍摄→裁剪→保存),提供“撤销/重做”快捷按钮;弱网环境下显示“压缩中...”状态提示,断网时缓存草稿至LocalStorage。
  • 交互控制:手势支持双指缩放预览图,长按历史版本弹出对比浮层;关键操作(如删除照片)弹出二次确认模态框。
  • 媒体组合恰当
    • 色彩:主色调采用微信绿色(#07C160),错误提示用红色(#FF4949)。
    • 图标:使用Ant Design Weapp图标库(相机图标用于拍摄入口)。
    • 动效:加载状态显示微信风格菊花进度条,裁剪完成时播放0.3秒缩放动画。

4. 容错与无障碍设计

  • 为视力障碍用户提供语音引导拍摄功能,支持TalkBack屏幕朗读。
  • 在弱网环境下显示“压缩中...”状态提示,断网时缓存草稿至LocalStorage。
  • 关键操作(如删除照片)弹出二次确认模态框,确保用户控制权。
posted @ 2025-05-16 10:13  呆呆邓  阅读(42)  评论(0)    收藏  举报