Files
ystp/docs/prd.md

7.5 KiB
Raw Permalink Blame History

产品需求文档PRD- ImageForge

目标:做一个接近商用的图片压缩网站 + 对外 API + 计费系统(可订阅/可计量)。

本文只描述“做什么/做到什么程度”。技术实现细节在 docs/architecture.mddocs/api.mddocs/database.mddocs/deployment.mddocs/ui.md


1. 产品定位

1.1 一句话

提供高质量、稳定、可规模化的图片压缩服务:既能让普通用户在网页上批量压缩,也能让开发者通过 API Key 集成到 CI/CD 或业务系统,并按使用量/套餐计费。

1.2 核心价值

  • 效果:压缩比与画质控制可预期(可选有损/无损/近无损)。
  • 体验:网站拖拽即用、批量任务、可下载 ZIP、历史可追溯。
  • 工程化:对外 API 稳定、可观测、可限流、可计量、可计费。
  • 安全合规:默认去除隐私元数据、明确保留期限、支持删除。

1.3 非目标(明确不做/后做)

  • 图像编辑(裁剪/滤镜/水印)不作为核心能力(后续可扩展)。
  • CDN 图片处理(按 URL 在线压缩、自动适配)不作为首期必须。
  • 视频/动图GIF/APNG暂不纳入首期除非强需求

2. 用户与角色

2.1 用户类型

  • 游客Anonymous:无需注册即可试用网站压缩(强限制、短保留)。
  • 注册用户User:使用网站 + 管理 API Key + 查看用量/发票。
  • 企业/团队用户Team可选:多人协作、共享额度、角色权限(可作为 V1+)。
  • 管理员Admin:风控、配置、用户/任务/账单审核、运营数据。

2.2 典型场景

  • 设计师:批量压缩并打包下载,保留 7 天内历史。
  • 开发者CI 里调用 API在发布前批量压缩静态资源。
  • 运营:导出周期用量、查看节省带宽、按部门拆分账单(团队版)。

3. 功能范围(按模块)

3.1 网站压缩Web

  • 拖拽/选择图片(单次多文件)。
  • 压缩参数:
    • 压缩率1-100压缩后体积占原图比例数值越小压缩越强100 表示不压缩)。
    • 输出格式:保持原格式。
    • 可选:限制宽高(等比缩放)。
    • 可选:是否保留元数据(默认不保留)。
  • 结果展示:
    • 逐文件:原始大小、压缩后大小、压缩率、状态、下载。
    • 汇总:总节省、下载 ZIP、失败文件原因。
  • 历史记录:
    • 最近任务列表(可筛选:日期/格式/状态)。
    • 可再次下载(未过期)、或重新发起压缩(使用相同参数)。
  • 游客试用:
    • 自动创建匿名会话Cookie只允许较小文件/较少数量。
    • 到期自动清理,不提供“历史”永久保存。

3.2 对外 APIDeveloper API

  • API Key创建/禁用/轮换/权限范围(最小权限)。
  • 压缩接口:
    • 同步单图(可返回二进制或下载链接)。
    • 批量/大文件异步任务(任务状态、下载 ZIP
    • 可选Webhook 回调(替代轮询/WS用于服务端集成
  • 工程化能力:
    • 幂等Idempotency-Key避免重复扣费/重复任务。
    • 配额与用量头信息(本订阅周期已用/剩余/上限)。
    • 速率限制(标准 Retry-After + 速率头)。

3.3 计费与用量Billing & Metering

详见 docs/billing.mdPRD 层面要求:

  • 具备 套餐Free/Pro/Business配额(每订阅周期压缩次数、文件大小/批量上限、保留期等)。
  • 具备 订阅 生命周期:试用、激活、到期、欠费、取消、恢复。
  • 具备 发票Invoice支付记录Payment可追溯。
  • 具备 用量计量:以“成功压缩的文件数”为主计量单位(可扩展到字节、转换格式等)。
  • 具备 风控策略:异常调用/盗刷/滥用限制与告警。

3.4 管理后台Admin

  • 用户管理:冻结/解冻、限流覆盖、手动调整套餐/额度、查看登录/调用记录。
  • 任务管理:查看任务队列/失败原因、取消任务、重试。
  • 计费管理:查看订阅与发票、手动赠送额度、处理退款(首期可做“手动退款登记”)。
  • 系统配置:全局限流、文件限制、保留期、功能开关(注册开关等)。
  • 监控面板QPS、延迟、错误率、队列长度、CPU/内存、S3/DB/Redis 状态。

4. 套餐与配额(建议默认值,可调)

这些是“产品默认建议”,最终可在上线前确认并固化到配置/数据库。

Free Pro Business
每周期压缩次数(成功文件数) 500 10,000 100,000+
单文件大小上限 5 MB 20 MB 50 MB
单次批量上限 10 50 200
并发(建议) 2 8 32
结果保留期 24 小时 7 天 30 天
API 访问
Webhook
SSO/团队 可选

周期定义(用于“本周期已用/剩余/重置时间”的展示与扣减):

  • Pro/Business付费:按 Stripe 订阅周期(current_period_start ~ current_period_end),不是自然月。
  • Free未订阅按自然月重置UTC+8

匿名试用(无需登录):

  • 每日 10 次(以成功压缩文件数计,失败不计)
  • 日界自然日UTC+8次日 00:00 重置
  • 不提供 API Key
  • 结果保留 24 小时

计量单位:

  • compression_unit:每成功压缩 1 个输出文件计 1。
  • 对于批量任务:按文件粒度计量;失败文件不计量。
  • 幂等:同一个 Idempotency-Key 重试不重复计量。

5. 关键体验与质量指标NFR

5.1 性能与稳定性(建议目标)

  • 99% 的同步单图压缩在 3s 内完成(小图、常见格式)。
  • 批量任务在可预期时间内完成(提供进度/预估)。
  • 系统可水平扩展API 与 Worker 可独立扩容。

5.2 安全与合规(必须)

  • 默认移除 EXIF 等隐私元数据(可配置允许保留,但需明确提示)。
  • 上传内容按保留期自动删除,且支持用户主动删除。
  • API Key 仅创建时显示一次;支持轮换与禁用。
  • 具备基础风控IP/账号/API Key 限流、异常突增告警。

6. MVP / V1 里程碑建议

MVP可上线收费的最小闭环

  • 网站压缩(同步 + 批量异步)+ 下载/ZIP + 历史(登录用户)。
  • API Key + 同步单图(直接返回二进制)+ 异步批量(任务/下载)。
  • 用量计量 + 套餐配额Free/Pro+ 订阅(至少一种支付渠道)+ 发票列表。
  • 管理后台:用户/任务/配置/用量查看 + 手动赠送额度。

V1+(商用增强)

  • Webhook + SDKTS/Python/Go+ OpenAPI 自动生成。
  • 团队/组织、多 Key 管理、细粒度权限、IP 白名单。
  • 企业发票/税务字段、对公转账/线下支付流程。
  • 风控升级:验证码、黑名单、设备指纹、异常画像。

7. 已确认口径(开工前)

  • 支付渠道Stripe
  • 计费策略:硬配额(超额返回 QUOTA_EXCEEDED / HTTP 402
  • 配额周期:按订阅周期(非自然月)
  • 匿名试用:支持(每日 10 次),不提供 API Key
  • Free 套餐 API不开放仅 Pro/Business 可创建 API Key
  • 邮件服务:注册需邮箱验证 + 密码重置SMTP预置多服务商模板
  • 默认语言:中文

8. 待完成清单(上线前必须定稿)

  • 法务页面:隐私政策、服务条款、数据保留与删除说明。(已提供模板,建议上线前法务审核)