# 共同富裕项目 — 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 共同富裕项目 |
| 目标 | 对共富类项目进行录入、查询、维护与发布管理，支撑面向使用方的项目展示与查阅 |
| 关联系统 | 业务后台；移动端「养殖资讯」等渠道可按产品约定展示已发布项目（见 **§8**） |
| 修订依据 | 同目录 `共同富裕项目-草稿.md` |

本文档仅描述**功能需求与业务规则**，不涉及库表结构、接口路径、请求体字段命名及技术栈选型。

---

## 2. 术语与状态

### 2.1 项目类型（枚举，单选）

- **合作共赢**
- **农文旅融合**
- **认养农业**

### 2.2 发布状态（互斥，单值）

| 取值 | 含义概要 |
| --- | --- |
| **未发布** | 新建草稿或已下架回流；对外不可见（与产品「前台 / App 展示」定义一致）；在满足矩阵规则下可编辑、可删除、可发布 |
| **已发布** | 对外可见或可检索（与产品定义一致）；**不允许修改**；**不允许直接删除**，须先执行 **下架** |

**下架回流：** 对已发布项目执行「下架」后，发布状态回到 **未发布**，允许再次编辑并在校验通过后 **再次发布**，**无须新建**一条记录。

### 2.3 实施周期说明

「实施日期」由 **开始日期**、**结束日期** 两个自然日字段组成，表示项目计划实施的时间区间；校验规则见 **§5.1**。

---

## 3. 功能范围

- 共富项目的新增、修改、删除、分页列表查询、详情查看
- 运营图片（多张）、运营视频、封面等附件的上传、替换、展示及删除时的存储联动清理
- 发布、下架及发布状态约束下的操作权限控制
- 按项目名称、项目类型、发布状态等条件的组合查询
- 面向使用方的业务错误与校验提示（见第 **7** 章）

---

## 4. 业务流程概览

下列顺序描述**典型闭环**；具体操作禁忌以 **第 6 节矩阵** 为准。

1. **新建**：录入必填项，上传运营图片及可选的视频、封面 → 初始为 **未发布**。
2. **维护**：在 **未发布** 下可反复修改字段与附件，直至内容定稿。
3. **发布**：在 **未发布** 且满足发布前置校验时执行「发布」→ **已发布**。
4. **对外展示**：**已发布** 项目按产品约定在后台列表、移动端「共富项目」等渠道展示；后台详情为只读维护视角。
5. **下架**：在 **已发布** 下执行「下架」→ 回到 **未发布**，结束对外展示。
6. **再编辑 / 再发布**：下架后可修改并再次发布（重复步骤 2～3）。
7. **删除**：仅在 **未发布** 下允许删除整条记录及关联附件；**已发布** 须先下架。

```mermaid
stateDiagram-v2
    [*] --> 未发布: 新建
    未发布 --> 已发布: 发布
    已发布 --> 未发布: 下架
    未发布 --> [*]: 删除
```

---

## 5. 详细功能需求

### 5.1 新增共富项目

| 字段 | 规则 |
| --- | --- |
| 项目名称 | **必填**；长度 **1～20** 个字符（字符计数规则与项目全局一致） |
| 项目类型 | **必填**；单选，取值限定为第 **2.1** 节 |
| 项目简介 | **必填**；长度 **1～50** 个字符 |
| 项目内容 | **必填**；长度 **1～500** 个字符 |
| 实施开始日期 | **必填**；格式 **YYYY-MM-DD** |
| 实施结束日期 | **必填**；格式 **YYYY-MM-DD**；须 **≥ 实施开始日期** |
| 运营图片 | **必填**；**1～3 张**图片；每张通过独立上传；允许后缀：`jpg`、`jpeg`、`png`（若产品要求支持 `webp` 等可追加）；单张 ≤ **10 MB** |
| 运营视频 | **选填**；**单个**视频上传；允许后缀：`mp4`（若产品要求支持 `mov`、`webm` 等可追加）；单文件大小上限与项目视频上传规范一致（未单独约定时建议 ≤ **100 MB**，须在实现前与产品确认） |
| 封面 | **选填**；**单个**图片上传；允许后缀：`jpg`、`jpeg`、`png`；单文件 ≤ **10 MB** |

**必填字段汇总：** 项目名称、项目类型、项目简介、项目内容、实施开始日期、实施结束日期、运营图片（至少 1 张、最多 3 张）。

**校验：**

- 实施结束日期早于开始日期时，须拒绝保存并提示（如「结束日期不能早于开始日期」）。
- 运营图片数量少于 1 张或多于 3 张时，须拒绝保存并提示。
- 须校验附件类型（后缀与白名单 / 项目安全规范一致）与大小；超限或格式不符时给出**可区分**的错误提示。
- 若业务要求项目名称在适用范围（如租户 / 组织）内唯一，应在评审时单独约定并写入本节。

**初始状态：** 新建成功后，发布状态为 **未发布**。

---

### 5.2 查询共富项目列表

- **项目名称：** 对「项目名称」进行**模糊**匹配；名称为空时不按名称过滤。
- **项目类型：** **精确**匹配筛选；未选择时不按类型过滤。
- **发布状态（建议）：** 列表宜支持按 **未发布 / 已发布** 筛选，便于运营人员区分待发布与已上线内容。
- **分页：** 支持分页；默认 **每页 20 条**，默认首页为第一页；单页条数上限与项目列表通用规范一致（若有）。
- **排序：** 默认按 **创建时间倒序**（最新在前）；次要排序键与项目列表规范一致（若有）。

**列表宜展示：** 项目名称、项目类型、项目简介（可截断）、实施开始/结束日期、发布状态、封面缩略图（若有）、运营图片数量提示，以及当前状态下可执行的操作入口。

---

### 5.3 修改共富项目

- **状态约束：** **仅未发布**（含新建后未发布、**已从已发布下架回流**）允许修改。**已发布**状态下**不允许修改**（列表 / 详情不提供可提交的编辑入口，或仅为只读；任何保存类修改须被拒绝并给出明确业务原因，如「已发布项目请先下架后再编辑」）。
- **可修改项：** 项目名称、项目类型、项目简介、项目内容、实施开始日期、实施结束日期、运营图片、运营视频、封面。
- **保存约束：** **§5.1** 中全部必填规则在修改时仍须满足；运营图片仍须保持 **1～3 张**；日期区间、附件格式与大小规则与新增一致。
- **附件替换：**
  - 替换、增删运营图片或更换封面、运营视频时，保存成功后须清理被移除的旧文件，避免存储残留。
  - 若用户将运营图片删至 0 张再提交，须按校验拒绝。

---

### 5.4 删除共富项目

- **允许删除：** 发布状态为 **未发布** 的记录。
- **不允许删除：** 发布状态为 **已发布** 的记录；须先执行「下架」（见 **5.6**）回到 **未发布** 后再删除。
- **删除后果：** 删除本条业务记录时，须**同步删除**关联存储中的全部运营图片、运营视频（若有）、封面（若有），避免存储残留。
- **确认：** 删除前宜弹出确认提示，避免误删。

---

### 5.5 查看共富项目详情

- **展示内容：** 项目名称、项目类型、项目简介、项目内容、实施开始日期、实施结束日期、运营图片（可预览）、运营视频（若有，可播放或下载入口）、封面（若有）、当前 **发布状态**；宜展示创建人、创建时间、发布时间、下架时间、最后修改人、最后修改时间（若系统有审计字段）。
- **权限与交互：**
  - **未发布：** 具备权限的用户可进入编辑流程（见 **5.3**）；可提供「发布」入口。
  - **已发布：** 详情为 **只读**（无保存类编辑）；可提供「下架」操作入口。
- **在线预览：** 运营图片、封面、运营视频的在线预览能力按项目通用附件组件约定；若 App 端仅展示已发布数据，须与后台发布状态联动。

---

### 5.6 发布与下架

#### 发布

- **前置条件：**
  - 当前发布状态为 **未发布**；
  - 必填字段均已满足 **5.1** 规则（含项目名称、项目类型、项目简介、项目内容、实施日期区间、至少 1 张且至多 3 张运营图片）。
- **操作结果：** 发布状态变为 **已发布**；记录发布时间；内容按产品约定对外可见（如移动端「共富项目」栏目可展示）。
- **失败处理：** 校验不通过时须给出明确原因（如必填项缺失、图片数量不符、日期非法等），不变更发布状态。

#### 下架

- **前置条件：** 当前发布状态为 **已发布**。
- **操作结果：**
  - 发布状态变为 **未发布**；
  - 对外展示 / 检索可见性结束（与产品「前台 / App 是否展示」定义一致）；
  - 记录下架时间（若系统支持）；
  - 允许用户再次修改（**5.3**）并在满足条件后 **再次发布**，**无须新建**记录。
- **说明：** 下架**不删除**业务记录与已上传附件，仅变更发布状态与对外可见性。

---

## 6. 状态与操作矩阵（汇总）

便于评审与测试用例编写。

| 当前发布状态 | 查看 | 修改 | 发布 | 下架 | 删除 |
| --- | --- | --- | --- | --- | --- |
| 未发布 | ✓ | ✓ | ✓ | — | ✓ |
| 已发布 | ✓ | ✗ | — | ✓ | ✗ |

**补充：** 从「已发布」下架后，记录回到 **未发布**，操作权限按上表第一行执行。

---

## 7. 错误与提示约定

- 业务与校验错误宜采用项目统一的 **`code`、`msg`、`data`** 结构呈现，便于前端统一处理（不涉及具体协议与路径设计）。
- 常见提示宜可区分，例如：
  - 必填项缺失、字段超长、实施日期区间不合法；
  - 运营图片数量不足或超出上限；
  - 图片 / 视频 / 封面格式不支持、文件大小超限、上传失败；
  - 已发布不可编辑、已发布不可删除须先下架；
  - 发布 / 下架操作失败原因。

---

## 8. 非功能需求（建议）

| 类别 | 建议 |
| --- | --- |
| 权限 | 菜单与按钮级权限：新增、编辑、删除、发布、下架、查看等是否分角色 |
| 审计 | 关键操作记操作日志（新增、修改、发布、下架、删除） |
| 安全 | 上传文件类型校验、存储路径不可预测；视频与图片下载 / 预览鉴权 |
| 性能 | 列表查询响应时间满足后台通用体验；多图与视频若后续需直传或分片再扩展 |
| 多端展示 | 与 `ruoyi-ui-app` 等端「共富项目」栏目联动时，仅拉取 **已发布** 数据；下架后前台不再展示 |
| 双语 | 若前台面向藏汉双语用户，展示文案与后台字段标签须与项目 i18n 规范一致（具体范围在 UI 设计阶段确认） |

---

## 9. 修订说明（相对草稿）

| 草稿问题 | 优化处理 |
| --- | --- |
| 第 6 条「已发布的**补贴**」 | 更正为 **已发布的共富项目** |
| 发布 / 下架与改删规则分散 | 增补 **§4 流程概览**、**§5.6 发布与下架**、**§6 操作矩阵**；明确已发布不可改、不可删 |
| 「修改：所有均可修改」与发布状态矛盾 | 明确 **仅未发布可改**；已发布须先下架 |
| 运营视频、封面是否必填未写清 | **运营图片必填（1～3 张）**；**运营视频、封面选填** |
| 项目名称仅写「不超过 20 字」 | 明确为 **1～20** 字符；简介、内容为 **1～50 / 1～500** |
| 实施日期未写先后关系 | 补充结束日期 **≥** 开始日期 |
| 查询条件较简略 | 补充发布状态筛选、默认排序、列表展示建议 |
| 删除 / 替换附件未写清理策略 | 在 **§5.3、§5.4** 明确须联动清理存储文件 |
| 第 7、8 条接口与技术栈 | 错误结构仅保留 **§7** 呈现约定；技术栈移至技术方案文档 |
