# 大屏 — 首页统计 — 功能需求

## 1. 文档说明

| 项 | 说明 |
| --- | --- |
| 模块名称 | 大屏首页统计 |
| 使用场景 | 领导参观、指挥调度、对外展示等**大屏端**只读看板（首页/总览页） |
| 目标 | 按**统计年份**集中展示养殖产业、流通交易、线下服务预约、惠农补贴、养殖标准、农技与实战培训等核心指标，形成县域牧业综合态势一屏总览 |
| 数据来源 | **养殖产业数据**相关台账（牦牛资产、牧场、草场、疾病预警等）、**交易市场平台**（供应商、承销商、交易市场）、**牧业疫病诊疗服务**（服务预约）、**产业政策**（补贴发放记录）、**养殖标准体系**（各子类标准）、**牧业养殖科技服务**（视频课程）、**科技平台与服务**（实战业务培训）；大屏**不录入、不修改、不删除**业务数据 |
| 修订依据 | 同目录 `大屏首页功能需求-草稿.md`、`Snipaste_2026-05-25_20-14-49.jpg`、`Snipaste_2026-05-25_20-15-28.jpg`；指标口径与《养殖产业数据功能需求》《补贴发放记录功能需求》《实战业务培训功能需求》《畜牧医疗资源管理功能需求》《畜牧科技资源管理功能需求》《养殖标准管理功能需求》及关联子标准模块对齐 |
| 关联维护 | 台账补录、发布、下架、预约、补贴登记、标准维护须在对应业务后台完成；大屏刷新后展示最新结果 |

本文档仅描述**功能需求、业务规则与展示逻辑**，不涉及数据库结构、接口路径、请求体字段及技术实现选型。

---

## 2. 术语与口径

### 2.1 统计年份

- 大屏顶部（或全局筛选区）提供**统计年份**选择，格式为自然年 **YYYY**（如 `2026`）。
- 进入大屏时默认选中**当前自然年**。
- 变更统计年份后，本页**全部统计区块**须**同步**按新年份重新计算与展示，不得出现区块之间年份不一致。

### 2.2 统计日与历史年末时点

记用户打开或刷新大屏时的系统日期为**统计日**。

| 场景 | 时点约定 |
| --- | --- |
| 统计年份 **Y = 当前自然年** | 「时点类」指标以**统计日**为基准（与《养殖产业数据功能需求》**§2.2** 一致） |
| 统计年份 **Y 为历史年** | 「时点类」指标以 **Y 年 12 月 31 日** 为还原时点（月末存栏还原规则见 **§2.5**） |

### 2.3 统计月份（按月图表）

大屏存在两类按月图表，横轴刻度规则**不同**：

| 类型 | 适用区块 | 横轴规则 |
| --- | --- | --- |
| **统计年 Y 内 12 月** | 线下服务预约堆叠柱、实战培训报名趋势等 | 固定 **1 月～12 月** 共 12 个刻度，数据范围限定在 **Y 年** |
| **滚动最近 12 个月** | **牦牛存栏变动**、**牦牛出栏统计**、**线下服务预约**（堆叠柱）、**实战培训报名** | 以服务器当前年月为锚点，取**含当月在内向前连续 12 个自然月**；**不**随页面「统计年份 **Y**」切换 |

**统计年 Y 内 12 月（预约、培训等）**

- **缺月规则：** 该月在 **Y 年** 内无任何纳入统计的业务记录时，当月指标按 **0** 展示；**不**省略刻度、**不**断线留空、**不**插值。
- **当前年未到来月份：** 当 **Y** 为当前年时，**晚于统计日** 的月份按 **0** 展示。

**滚动最近 12 个月（存栏变动、出栏统计）**

- 接口每条记录含 **`statYear`（自然年）**、**`month`（1～12）**；按时间升序固定返回 **12** 条。
- 某自然月在填报表中无全县合计数据时，该月 **`bullCount`/`cowCount`/`outboundCount` 为 0**。
- **前端横轴**仅展示月份（如 `8月`）；**鼠标悬停**展示完整年月（如 `2025年8月`）及数值。
- 切换统计年份 **Y** 时，上述两区块**仍展示同一滚动窗口**（与 **Y** 无关）。

### 2.4 指标类型与年份关系（总览）

| 指标类型 | 代表指标 | 与统计年份 **Y** 的关系 |
| --- | --- | --- |
| **年内累计** | 牦牛年出栏量、补贴发放金额、预约人次（年度卡片合计） | 仅汇总 **Y 年** 内满足纳入条件的记录 |
| **时点/还原** | 牦牛存栏总量、公母牛数、年龄结构、牧场/草场数量与面积 | 按 **§2.2** 时点或月末还原 |
| **主数据实时快照** | 供应商数量、承销商数量、交易市场数量 | **不随 Y 切换**；始终为当前有效主数据条数（见 **§2.6**） |

> 草稿写「产业总览统计当前年份」；对**主数据条数**三类，正式口径收束为**实时快照**；牦牛存栏/出栏/农牧户取填报表**最近年月**；存栏变动/出栏统计为**滚动 12 月**（与 **Y** 无关）；预约、补贴、培训等仍按 **Y** 与 **§2.2** 计算。

### 2.5 牦牛产业口径（大屏首页）

大屏首页牦牛相关指标取自**乡镇填报表**（`biz_yak_herd_inventory`、`biz_yak_outbound_report`），全县乡镇合计；**不**直接按牦牛资产档案月末还原（档案口径仍用于「养殖产业数据」专看板）。

| 主题 | 规则摘要 |
| --- | --- |
| **产业总览·存栏** | 所选年 **Y** 内 `stat_year=Y` 的**最大 `stat_month`**，全县村级 `yak_total` 合计；接口字段 **`inventoryTotal`**；该年无填报为 **0** |
| **产业总览·出栏** | 所选年 **Y** 内出栏表最大填报月全县村级 `yak_outbound_count` 合计；接口字段 **`annualOutbound`** |
| **产业总览·农牧户** | 所选年 **Y** 内 `biz_farmer_household` 最大填报月全县村级 `household_count` 合计；接口字段 **`pastureCount`** |
| **产业总览·合作社** | 所选年 **Y** 内 `biz_cooperative_development` 最大填报月记录条数；接口字段 **`cooperativeCount`** |
| **产业总览·家庭牧场** | 所选年 **Y** 内 `biz_family_ranch` 最大填报月记录条数；接口字段 **`familyRanchCount`** |
| **产业总览·养殖大户** | 所选年 **Y** 内 `biz_large_livestock_farmer` 最大填报月记录条数；接口字段 **`largeLivestockFarmerCount`** |
| **产业总览·有畜户数** | 所选年 **Y** 内 `biz_livestock_ownership_household` 最大填报月全县村级 `with_livestock_household_count` 合计；接口字段 **`withLivestockHouseholdCount`** |
| **产业总览·草场面积** | 所选年 **Y** 内 `biz_farmer_household` 最大填报月全县村级 `pasture_contract_area` 合计；接口字段 **`grasslandAreaMu`** |
| **存栏变动·当前公母** | 存栏表**最近填报年月**全县 `bull_total`、`cow_total`；`unknownGenderCount = yak_total − bull − cow`（不足为 0） |
| **存栏变动·趋势** | 所选年 **Y** 填报数据中**最大月份为 N** 则输出 1～N 月；各月全县村级 `bull_total`、`cow_total` 合计；区间内缺月补 0；无填报则空数组；接口字段 **`inventoryChange.monthlyTrend`** |
| **年龄结构** | **本期首页不展示**；接口 `ageStructure` 返回空列表 |
| **畜群存栏结构** | 所选年 **Y** 内存栏表最大填报月全县 `yak_total`、`dairy_total`、`sheep_total`；饼图展示占比与头数（单位：头）；接口字段 **`herdInventoryStructure`** |
| **牦牛存栏结构** | 所选年 **Y** 内存栏表最大填报月全县种公牛/公牛阉畜/幼畜/成畜/保险；双层饼图（内环公牛·母牛·保险牛，外环细分）；单位：头；接口字段 **`yakInventoryStructure`** |
| **牲畜出栏统计** | 所选年 **Y** 内出栏表最大填报月全县六畜出栏；矩形树图展示占比与数量；马骡单位**匹**，绵羊/山羊单位**只**，其余**头**；接口字段 **`livestockOutboundStructure`** |
| **自食情况统计** | 所选年 **Y** 内出栏表最大填报月全县自食牛/绵羊/山羊；柱状图；单位均为**头**；接口回传 `statYear`/`statMonth`；字段 **`selfConsumption`** |
| **企业年度收入与补助-家庭牧场** | 所选年 **Y** 内 `biz_family_ranch` 最大填报月全县 `income`/`expense`/`profit`/`subsidy_amount` 合计；柱状图；单位**万元**；字段 **`familyRanchFinance`** |
| **企业年度收入与补助-养殖大户** | 所选年 **Y** 内 `biz_large_livestock_farmer` 最大填报月全县同上四项合计；柱状图；单位**万元**；字段 **`largeLivestockFarmerFinance`** |
| **合作社经营模式分类** | 所选年 **Y** 内 `biz_cooperative_development` 最大填报月按 `business_model` 计数（整村/股份/联合/多种经营/公司型/其他）；饼图；单位**个**；字段 **`cooperativeBusinessModel`** |
| ~~**农牧户分类**~~ | ~~所选年 **Y** 内 `biz_farmer_household` 最大填报月各分类标记为「是」的村级记录数；本期首页不展示~~ |
| **补助奖励资金（按乡镇列表）** | 所选年 **Y** 内 `biz_farmer_household` **最大填报月**，按乡镇汇总各村 `subsidy_total`（补助合计金额 = 补助奖励总资金 + 封顶保底后享受补助奖励总资金 + 村级草原监督员补助）；首页标题「补助奖励资金」，列表展示乡镇名与金额；字段 **`townSubsidyTotals`**（`townDeptId` / `townName` / `subsidyTotal`） |
| **人均收入** | `biz_disposable_income` 以库中**最大所属年**为终点向前共 5 年双折线：农村居民人均可支配收入、脱贫人口人均纯收入；缺年补 0；无数据则空；单位**元**；**不随所选年 Y 切换**；字段 **`perCapitaIncomeTrend`** |
| **人均收入明细** | 独立接口分页查询 `biz_disposable_income`；条件：所属年份（可选，**未传不过滤**）；按**所属年份倒序**；返回年份、农村居民人均可支配收入、增幅、增速、脱贫人口人均纯收入 |
| **农牧户数据明细** | 独立接口分页查询 `biz_farmer_household`；条件：年（可选，**未传不过滤**）、月（可选，**未传不过滤**）、乡镇、村；按**年、月倒序**；返回全部业务列表字段 |
| **草场面积数据明细** | **复用**农牧户数据明细接口（同表同条件；面积字段含 `pasture_contract_area` 等）；**不另开**独立接口 |
| **合作社数据明细** | 独立接口分页查询 `biz_cooperative_development`；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **家庭牧场数据明细** | 独立接口分页查询 `biz_family_ranch`；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **养殖大户数据明细** | 独立接口分页查询 `biz_large_livestock_farmer`；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **牦牛出栏数据明细** | 独立接口分页查询 `biz_yak_outbound_report`（牲畜出栏/自食情况明细）；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **牦牛存栏数据明细** | 独立接口分页查询 `biz_yak_herd_inventory`（畜群存栏/牦牛存栏结构明细）；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **有无畜户数据明细** | 独立接口分页查询 `biz_livestock_ownership_household`；条件同农牧户明细；按**年、月倒序**；返回全部业务列表字段 |
| **牦牛存出栏情况明细** | 独立接口分页；按 `(stat_year, stat_month, village_dept_id)` 关联 `biz_yak_herd_inventory` 与 `biz_yak_outbound_report`；年/月/乡镇/村均可选（**未传年月不过滤，支持跨多年全量翻页**）；按**年、月倒序**；返回年、月、乡镇、村、牦牛总存栏数、牦牛总出栏数 |
| **养殖主体数量明细** | 独立接口分页；村×年月键集 = `biz_farmer_household` ∪ `biz_cooperative_development` ∪ `biz_family_ranch` ∪ `biz_large_livestock_farmer`（农牧户不同组织形式）；**任一形式有数据即可出列，其余为 0**；年/月/乡镇/村均可选（**未传年月不过滤，支持跨多年全量翻页**；界面筛选项**默认当前年月**）；按**年、月倒序**；返回年、月、乡镇、村、农牧户数、合作社数、家庭牧场数、养殖大户数 |
| **乡镇列表** | 独立接口返回全县填报乡镇（`parent_id=100` 且 `order_num>12`）；**不按**登录人数据权限收窄 |
| **村树结构** | 独立接口返回县 → 乡镇 → 村树（`TreeSelect`）；全县口径 |
| **草畜失衡预警明细** | 独立接口分页查询 `biz_grass_livestock_imbalance_warning`；条件：年/月/乡镇/村；按**预警时间倒序**；返回年、月、乡镇、村、主体名称、主体类型、核定载畜量、年底存栏、是否草畜平衡 |
| **出栏统计** | 所选年 **Y** 填报数据中**最大月份为 N** 则输出 1～N 月；各月全县村级 `yak_outbound_count` 合计；区间内缺月补 0；无填报则空数组；纯柱状图无趋势线；接口字段 **`outboundMonthly`** |
| **地图标注** | 所选年 **Y** 内存栏/出栏表各自**最大填报月**，按乡镇汇总各村 `yak_total` / `yak_outbound_count`；**随 Y 切换** |
| **牧场 / 草场** | 同《养殖产业数据》**§2.7** 等（档案/台账口径） |

**数据权限：** 填报表按全县乡镇汇总；草场等仍按授权范围统计。

### 2.6 交易市场主数据（供应商 / 承销商 / 交易市场）

| 指标 | 规则 |
| --- | --- |
| 供应商数量 | 「供应商管理」中**未逻辑删除**的供应商条数 |
| 承销商数量 | 「承销商管理」中**未逻辑删除**的承销商条数 |
| 交易市场数量 | 「交易市场管理」中**未逻辑删除**且**运营状态**为**正常**的市场条数 |

三项为**主数据实时快照**，切换统计年份 **Y** 时数值不变（除非后台主数据变更后刷新大屏）。

### 2.7 线下服务预约口径

预约数据来源于**服务预约**业务（移动端提交、后台可查）；资源类型与《预约服务》/《畜牧医疗资源管理》一致：

| 展示名称 | 资源类型编码 | 含义 |
| --- | --- | --- |
| 兽医人员 | `004001` | 兽医人员预约 |
| 专家人员 | `004005` | 专家（科技资源专家库）预约 |
| 诊疗机构 | `004003` | 诊疗机构预约 |

| 项 | 规则 |
| --- | --- |
| 统计对象 | **Y 年**内**预约日期**（或服务发生日期，与后台预约主档「预约日期」字段一致）落在 **Y 年的预约记录条数 |
| 去重 | 一条预约记录计 **1** 人次（不按预约人去重，除非产品另定） |
| 无效记录 | 已逻辑删除的预约不参与 |
| 左侧年度卡片 | 分别为上述三类在 **Y 年**内的预约条数**合计** |
| 按月堆叠柱图 | 横轴 1～12 月；系列为兽医预约、专家预约、机构预约；当月无记录则为 0 |

> 草稿「专家人员」对应预约资源 **专家**（`004005`），非专家团队编码 `004002`。

### 2.8 惠农补贴发放口径

对齐《补贴发放记录功能需求》：

| 项 | 规则 |
| --- | --- |
| 统计周期 | **发放日期**落在统计年份 **Y** 年内（`Y-01-01`～`Y-12-31`，含起止日） |
| 统计对象 | 未逻辑删除的补贴发放记录 |
| 分组维度 | **补贴类型**：`1` 农业生产、`2` 住房基建、`3` 民生保障 |
| 指标 | 各类型 **补贴金额合计**；展示单位建议 **万元**（保留 2 位小数或与全局金额展示一致） |
| 图表 | 三类并列柱状图（或条形图），无记录的类型金额为 **0** |

### 2.9 养殖标准列表口径

大屏「养殖标准」区以**分类 Tab** 切换（与原型一致），Tab 与标准体系对应关系如下：

| Tab 展示名 | 标准体系范围（示例） | 列表数据来源 |
| --- | --- | --- |
| 养殖管理 | 繁育作业等养殖管理类标准 | 对应「养殖标准体系」下各子模块中**标准类型**归属该类的记录 |
| 牦牛饲喂 | 饲喂类标准 | 饲喂标准管理 |
| 设备实施 | 设备实施作业类标准 | 设备实施作业标准管理 |
| 疾病诊疗 | 疫病诊疗类标准 | 疫病诊疗标准管理 |
| 生长出栏 | 生长与出栏类标准 | 生长与出栏标准管理 |

**纳入列表的记录须同时满足：**

1. **创建时间**的日期部分落在统计年份 **Y** 年内（与草稿「当前年份创建」一致）；
2. 未逻辑删除；
3. 上架状态为**已发布**（对外有效的标准方可在展示场景出现；未发布、仅草稿不展示）。

**展示与交互：**

- **分页列表**；默认按创建时间倒序（或按标准名称，与产品定稿一致）；
- 行内至少展示：**标准名称**及查阅所需摘要字段（如类型、创建日期等，以原型为准）；
- 行内「详情」为**展开或浮层**展示正文/附件说明，**不设**大屏独立详情页、**不**跳转后台维护菜单（与《大屏共同富裕统计》列表约定一致）。

### 2.10 农技课堂口径

| 指标 | 规则 |
| --- | --- |
| 课程视频 | **Y 年**内**已发布**的「视频课程」资源（`resource_type = 004008`）条数；未发布、已逻辑删除不计入 |
| 实战培训 | **Y 年**内**已发布**的实战业务培训**场次**（主档条数）；未发布、已逻辑删除不计入 |
| 培训内容合计 | **课程视频数 + 实战培训场次数**（中心「培训内容」数字） |
| 发布时间界定 | 以各模块**发布成功时间**落在 **Y 年**为准；若仅有创建时间无发布时间，以产品与技术方案约定字段为准 |

### 2.11 实战培训报名趋势口径

对齐《实战业务培训功能需求》：

| 维度 | 规则 |
| --- | --- |
| 活动数（个/月） | **Y 年**各月内，**培训时间**落在该月的、**已发布**且未删除的实战培训**条数** |
| 报名人数（人/月） | 对上述落在该月的培训，将其**实际报名人数**（`enroll_status=已报名` 的统计值，与主档 `actual_enrolled_count` 一致）**求和** |
| 图表形式 | 双系列曲线/面积图（活动数、报名人数）；横轴 12 月；缺月为 **0** |
| 无已发布培训 | 当年无培训时走 **§7.1** 空态，**不**用 0 冒充有培训业务 |

### 2.12 比率与单位

| 项 | 约定 |
| --- | --- |
| 头数 | 牦牛存栏、出栏、年龄结构 |
| 个数 | 牧场、草场、供应商、承销商、交易市场、培训场次 |
| 亩 | 草场面积 |
| 人 | 预约人次、报名人数 |
| 万元 | 补贴金额（若界面用元须全文统一） |
| 占比 | 年龄结构、草场退化占比，建议 **%** 保留 1 位小数或整数 **%** |

---

## 3. 功能范围与边界

### 3.1 范围内

- 统计年份筛选与整页刷新；
- **产业总览**八项指标卡片；
- **牦牛存栏变动**（当前公/母牛数量 + 按月存栏趋势）；
- **牦牛年龄结构**（三档月龄占比）；
- **牦牛出栏统计**（按月柱状图）；
- **草场类型占比**（可用/使用中 + 退化等级数量与占比）；
- **线下服务预约**（三类年度合计 + 按月堆叠柱图）；
- **惠农补贴发放**（三类金额柱状图）；
- **养殖标准**（分类 Tab + 分页列表，行内查阅）；
- **农技课堂**（课程视频、实战培训、培训内容合计）；
- **实战培训报名**（按月活动数与报名人数双曲线）；
- **地图标注**（全县乡镇牦牛存栏/出栏头数，供首页地图展示）；
- 无数据、加载中、加载失败等状态展示。

### 3.2 范围外

- 各业务模块台账的增删改、发布下架、预约受理、补贴登记、标准维护；
- 导出、打印；地图下钻后台菜单（若后续增加外链须单独评审）；
- 按牧场、区域、自定义日期段筛选（见 **§8**）；
- 气象、疫病风险专页、共同富裕专页等**其他大屏子页**（各自独立需求）；
- 大屏端权限与网关策略（由部署约定，本文档不展开）。

---

## 4. 业务流程概览

```mermaid
flowchart TD
    A[打开大屏首页] --> B[默认当前统计年份 Y]
    B --> C[加载各区块统计数据]
    C --> D[渲染总览/图表/列表]
    J[用户切换统计年份] --> C
    K[后台维护业务数据后] --> L[刷新或重新进入大屏]
    L --> C
```

**典型使用顺序：**

1. 用户进入大屏首页，系统按**当前年**加载并展示各区块。  
2. 用户切换统计年份 → 全页统一 Loading → 各区块按 **Y** 重算（主数据三类快照除外）。  
3. 运营人员在后台维护牦牛档案、草场、预约、补贴、标准、培训等数据后，大屏通过**重新进入、手动刷新或约定自动轮播周期**更新（**不要求**秒级实时同步）。

### 4.1 数据汇聚关系

```mermaid
flowchart TB
    subgraph industry [产业与草场]
        Y[牦牛资产/牧场/草场]
    end
    subgraph trade [流通交易]
        S[供应商/承销商/交易市场]
    end
    subgraph service [服务与政策]
        A1[服务预约]
        P[补贴发放]
    end
    subgraph knowledge [标准与培训]
        ST[养殖标准体系]
        C[视频课程]
        T[实战业务培训]
    end
    subgraph screen [大屏首页]
        H[首页各区块]
    end
    Y --> H
    S --> H
    A1 --> H
    P --> H
    ST --> H
    C --> H
    T --> H
```

---

## 5. 页面结构与区块需求

布局以原型 `Snipaste_2026-05-25_20-14-49.jpg`、`Snipaste_2026-05-25_20-15-28.jpg` 为准。

### 5.1 全局：统计年份

| 项 | 规则 |
| --- | --- |
| 统计年份 | 见 **§2.1**；变更后**整页**重载 |
| 标题 | 各区块标题与原型一致 |
| 只读 | 大屏无维护类按钮；可有**刷新** |

---

### 5.2 区块一：产业总览

以**指标卡片**横向排列（与原型一致，共 **8** 项）：

| 序号 | 指标名称 | 单位 | 统计口径 |
| --- | --- | --- | --- |
| 1 | 牦牛存栏总量 | 头 | `biz_yak_herd_inventory.yak_total` 全县村级合计；取所选年 **Y** 内最大填报月；接口字段 **`inventoryTotal`** |
| 2 | 牦牛年出栏量 | 头 | `biz_yak_outbound_report.yak_outbound_count` 全县村级合计；取所选年 **Y** 内最大填报月；接口字段 **`annualOutbound`** |
| 3 | 农牧户 | 户 | `biz_farmer_household.household_count` 全县村级合计；取所选年 **Y** 内最大填报月；接口字段 **`pastureCount`** |
| 4 | 有畜户数 | 户 | `biz_livestock_ownership_household.with_livestock_household_count` 全县村级合计；取所选年 **Y** 内最大填报月；接口字段 **`withLivestockHouseholdCount`** |
| 5 | 草场面积 | 亩 | `biz_farmer_household.pasture_contract_area` 全县村级合计；取所选年 **Y** 内最大填报月；接口字段 **`grasslandAreaMu`** |
| 6 | 合作社 | 个 | `biz_cooperative_development` 记录条数；取所选年 **Y** 内最大填报月；接口字段 **`cooperativeCount`** |
| 7 | 家庭牧场 | 个 | `biz_family_ranch` 记录条数；取所选年 **Y** 内最大填报月；接口字段 **`familyRanchCount`** |
| 8 | 养殖大户 | 个 | `biz_large_livestock_farmer` 记录条数；取所选年 **Y** 内最大填报月；接口字段 **`largeLivestockFarmerCount`** |

> 草场台账块数仍写入 `grasslandCount` 供草场类型区块使用；供应商 / 承销商 / 交易市场数量仍由接口返回（主数据快照）。

**无数据：** 某项无可汇总数据时展示 **0** 或 **—**（时点类建议 **0**；若全县无草场台账可展示 **0**）。

---

### 5.3 区块二：牦牛存栏变动

| 项 | 规则 |
| --- | --- |
| 图表类型 | **折线图**（或面积图，以原型为准） |
| 数据系列 | **公牛数量**、**母牛数量**（头） |
| 数据范围 | **§2.3 滚动最近 12 个月**（存栏填报表全县按月合计） |
| 横轴 | 12 个刻度，**仅显示月份**（如 `8月`）；跨年窗口内可出现重复月份标签 |
| 辅助展示 | 标题旁展示存栏表**最近填报年月**的公、母牛当前数量 |
| 交互 | 悬停展示 **「YYYY年M月 + 公牛数 + 母牛数」** |

---

### 5.4 区块三：牦牛年龄结构

| 项 | 规则 |
| --- | --- |
| 图表类型 | 饼图/环形图（以原型为准） |
| 分档 | **0～1.5岁幼畜**、**1.5岁以上成畜**（母牛分龄，取自存栏填报） |
| 展示内容 | 各档**头数**及**占比（%）** |
| 时点 | 存栏表**最近填报年月** |
| 无存栏 | 两档均为 0 时走 **§7.1** 空态 |

---

### 5.5 区块四：牦牛出栏统计

| 项 | 规则 |
| --- | --- |
| 图表类型 | **柱状图**（无趋势折线） |
| 数据范围 | **§2.3 滚动最近 12 个月**（出栏填报表全县按月合计） |
| 横轴 | 12 个刻度，**仅显示月份** |
| 交互 | 悬停展示 **「YYYY年M月 + 出栏头数」** |

---

### 5.6 区块五：草场类型占比

| 项 | 规则 |
| --- | --- |
| 上部卡片 | **可用草场数**、**使用中草场数**（**§2.5**） |
| 下部图表 | 退化等级（未退化、轻度、中度、重度、极重度）的**条数**与**占比**；表格或环形图（以原型为准） |
| 说明 | 「可用」「使用中」含义不同，**不宜**简单相加为总量；文案须区分 |

---

### 5.7 区块六：线下服务预约

| 项 | 规则 |
| --- | --- |
| 左侧 | 三类**年度预约合计**卡片：兽医人员、专家人员、诊疗机构（**§2.7**） |
| 右侧 | **堆叠柱状图**：**§2.3 滚动最近 12 月**；系列为兽医/专家/机构预约人次 |
| 横轴 / 悬停 | 横轴**仅月份**；悬停显示 **YYYY年M月** 及三类人次 |
| 图例 | 与三类名称一致，颜色区分 |

---

### 5.8 区块七：惠农补贴发放

| 项 | 规则 |
| --- | --- |
| 图表类型 | 柱状图（以原型为准） |
| 横轴 | 农业生产、住房基建、民生保障 |
| 纵轴 | 补贴金额合计（**万元**） |
| 口径 | **§2.8** |

---

### 5.9 区块八：养殖标准

| 项 | 规则 |
| --- | --- |
| 布局 | 左侧 **5** 个分类 Tab（**§2.9**）；右侧分页列表 |
| 列表字段 | 至少含标准名称；行内「详情」展开查阅，**不跳转**后台 |
| 分页 | 支持翻页；切换 Tab 时从第 1 页重新加载 |
| 无数据 | 该分类在 **Y** 年无已发布标准时列表空态 |

---

### 5.10 区块九：农技课堂

| 项 | 规则 |
| --- | --- |
| 展示项 | **课程视频**数量、**实战培训**场次、中心 **培训内容**合计（**§2.10**） |
| 展示形式 | 环形或指标盘（以原型为准） |
| 无数据 | 两项均为 0 时走空态或展示 0（与 **§7.1** 协调） |

---

### 5.11 区块十：实战培训报名

| 项 | 规则 |
| --- | --- |
| 图表类型 | 双系列**曲线/面积图**（以原型为准） |
| 系列 | **活动数**（个）、**报名人数**（人） |
| 横轴 | **§2.3 滚动最近 12 月** |
| 横轴 / 悬停 | 横轴**仅月份**；悬停显示 **YYYY年M月** 及活动数、报名人数 |
| 口径 | **§2.11**（窗口内 `training_time`） |

---

### 5.12 区块十一：地图标注

| 项 | 规则 |
| --- | --- |
| 展示位置 | 首页地图各乡镇标注（以原型为准） |
| 乡镇范围 | `sys_dept` 中 `parent_id=100` 且 `order_num>12` 的有效乡镇 |
| 标注字段 | **所属乡镇** `dept_id`、**乡镇名称**、**牦牛存栏数**（头）、**牦牛出栏数**（头） |
| 存栏口径 | `biz_yak_herd_inventory.yak_total`；取所选年 **Y** 内该表**最大填报月**，按乡镇汇总其下各村合计 |
| 出栏口径 | `biz_yak_outbound_report.yak_outbound_count`；取所选年 **Y** 内该表**最大填报月**，按乡镇汇总其下各村合计 |
| 无填报 | 对应乡镇该年月未填报时展示 **0**；所选年无任一侧填报时该侧全县为 **0** |
| 与看板年份 | **随**页面「统计年份 **Y**」切换 |

---

## 6. 图表与列表通用规则

| 项 | 规则 |
| --- | --- |
| 单位 | 界面须标注单位（头、个、亩、人、万元、% 等） |
| 跨年 | 仅使用 **§2** 约定的 **Y** 纳入规则 |
| 列表与统计一致 | 养殖标准列表仅展示 **§2.9** 纳入记录 |
| 只读 | 无编辑、删除、发布、预约、登记类操作 |

---

## 7. 异常、空态与刷新

### 7.1 业务数据空态

| 场景 | 展示要求 |
| --- | --- |
| **Y** 年无出栏记录 | 预约/补贴等随 **Y** 变；**出栏滚动 12 月图**与 **Y** 无关，按填报缺月补 0 |
| **Y** 年时点无存栏 | 年龄结构、存栏趋势空态或补 0；产业总览存栏取最近填报，无填报为 **0** |
| **Y** 年无预约 | 预约区空态；三类年度卡片为 **0** |
| **Y** 年无补贴发放 | 补贴图空态或三类型均为 **0** |
| 某标准分类无已发布标准 | 该 Tab 列表空态 |
| **Y** 年无视频课程且无实战培训 | 农技课堂空态 |
| **Y** 年无已发布实战培训 | 实战培训报名趋势空态 |
| 某乡镇无存栏/出栏填报 | 地图标注该乡镇对应头数为 **0** |

### 7.2 加载与失败

| 场景 | 展示要求 |
| --- | --- |
| 切换年份加载中 | 整页或分区块 Loading，避免显示上一年残留数据 |
| 业务数据加载失败 | 明确失败提示，支持**重试** |
| 部分区块失败 | 失败区块单独提示；已成功区块可保留（若产品要求整页失败则统一提示） |

### 7.3 数据刷新

- 大屏为**只读**；后台维护后，须通过**重新进入、手动刷新或轮播周期自动刷新**更新（周期建议 **1～5 分钟**，由实施配置）。
- **不要求**与后台变更秒级同步。

---

## 8. 验收要点（功能）

| 编号 | 场景 | 通过标准 |
| --- | --- | --- |
| SY-01 | 默认年份 | 进入首页默认当前年，各区块口径一致 |
| SY-02 | 切换年份 | 切换 **Y** 后各区块同步更新，无旧年残留 |
| SY-03 | 产业总览 | 八项指标与手工按 **§2.5、§2.6** 核算一致（主数据三项不随 **Y** 变） |
| SY-04 | 存栏趋势 | 滚动 12 月；含 `statYear`+`month`；公/母两系列；缺月补 0；横轴仅月、悬停显年月 |
| SY-05 | 年龄结构 | 母牛两档占比之和为 100%（有数据时） |
| SY-06 | 出栏按月 | 滚动 12 月出栏合计与填报表手工核算一致；纯柱状图 |
| SY-07 | 草场占比 | 可用/使用中及五档退化与《养殖产业数据》一致 |
| SY-08 | 预约统计 | 三类年度合计与按月堆叠与 **§2.7** 一致 |
| SY-09 | 补贴金额 | 三类金额为 **Y** 年发放日记录金额合计 |
| SY-10 | 养殖标准 | 仅 **Y** 年创建且已发布；分页；行内详情无跳转 |
| SY-11 | 农技课堂 | 视频数、培训场次与 **§2.10** 一致 |
| SY-12 | 培训报名趋势 | 活动数、报名人数按月与 **§2.11** 一致 |
| SY-13 | 后台补录后刷新 | 补录后刷新大屏可见新数据 |
| SY-14 | 只读 | 页面无业务维护按钮 |

---

## 9. 修订记录

| 版本 | 日期 | 说明 |
| --- | --- | --- |
| 1.23 | 2026-08-18 | 首页屏蔽农牧户分类展示；新增 `townSubsidyTotals`（所选年最大月按乡镇汇总补助合计金额 `subsidy_total`） |
| 1.22 | 2026-08-18 | 大屏明细分页：年份未传一律不过滤（跨年全量翻页）；含人均收入/农牧户/合作社/家庭牧场/养殖大户/出栏/存栏/有无畜户 |
| 1.21 | 2026-08-18 | 大屏明细分页：月份未传一律不过滤（该年全年）；年份未传仍默认当前年。含合作社/家庭牧场/养殖大户/出栏/存栏/有无畜户 |
| 1.19 | 2026-07-24 | 人均收入趋势改为以库中最大所属年为终点的最近 5 年 |
| 1.18 | 2026-07-24 | 牦牛月度出栏趋势改为按填报最大月 N 输出 1～N 月（区间缺月补 0） |
| 1.17 | 2026-07-23 | 公母牛月度存栏趋势改为按填报最大月 N 输出 1～N 月（区间缺月补 0） |
| 1.16 | 2026-07-23 | 新增大屏乡镇列表、村树接口（全县口径） |
| 1.15 | 2026-07-23 | 新增养殖主体数量明细分页接口（农牧户主表左关联合作社/家庭牧场/养殖大户） |
| 1.14 | 2026-07-23 | 牦牛存出栏明细：年月未传不过滤（跨年全量翻页）；SQL 改为存栏主表+UNION ALL 补仅出栏 |
| 1.13 | 2026-07-23 | 新增牦牛存出栏情况明细分页接口（关联存栏/出栏填报表） |
| 1.12 | 2026-07-23 | 明确草场面积数据明细复用农牧户明细接口，不另开接口 |
| 1.11 | 2026-07-23 | 新增牦牛出栏/存栏、有无畜户明细分页接口 |
| 1.10 | 2026-07-23 | 新增合作社/家庭牧场/养殖大户明细分页接口 |
| 1.9 | 2026-07-23 | 新增农牧户数据明细分页接口 `GET /farmerHouseholds` |
| 1.8 | 2026-07-23 | 新增人均收入情况明细分页接口 `GET /perCapitaIncomes` |
| 1.7 | 2026-07-23 | 地图标注改为所选年最大填报月、按乡镇汇总各村存栏/出栏；接口增 `statYear` |
| 1.6 | 2026-07-23 | 有畜户数、草场面积改为填报表所选年最大月合计 |
| 1.5 | 2026-07-23 | 产业总览增合作社/家庭牧场/养殖大户（所选年最大填报月记录数） |
| 1.4 | 2026-07-23 | 产业总览农牧户改 `biz_farmer_household` 所选年最大填报月村级合计 |
| 1.3 | 2026-07-23 | 产业总览存栏/出栏改为所选年最大填报月全县村级合计 |
| 1.2 | 2026-07-17 | 年龄结构改为母牛两档（0～1.5 / 1.5+），对齐存栏填报新模板 |
| 1.1 | 2026-07-04 | 存栏变动/出栏统计改为填报表滚动 12 月；接口增 `statYear`；前端横轴仅月、悬停显年月；年龄结构改为母牛四档；地图/总览取最近填报年月 |
| 1.0 | 2026-05-25 | 由草稿优化：补全流程、边界、十区块需求；对齐养殖产业/预约/补贴/标准/培训口径；不涉及库表与接口；保留草稿不修改 |

---

## 10. 相对草稿的优化说明

| 草稿问题 | 处理方式 |
| --- | --- |
| 仅条目罗列 | 增加 **§3、§4、§7、§8** 与 mermaid 流程 |
| 「当前年份」对主数据含糊 | **§2.4、§2.6** 区分年内累计、时点还原、实时快照 |
| 未写出栏按月、缺月规则 | **§2.3、§2.5、§5.5** |
| 养殖标准仅一句 | **§2.9、§5.9** 补 Tab、纳入条件、行内详情 |
| 专家人员未对应编码 | **§2.7** 明确 `004005` |
| 技术栈、统一响应格式 | 属技术方案，**不写入**本文档 |
| 草稿未列预警牦牛 | 首页总览按草稿八项；预警留在养殖产业专看板 |
