vault backup: 2026-05-26 00:13:05
This commit is contained in:
153
prop-acc/scenarios/meter/register-single-meter.md
Normal file
153
prop-acc/scenarios/meter/register-single-meter.md
Normal file
@@ -0,0 +1,153 @@
|
||||
---
|
||||
title: prop-acc · meter · 场景 - 单独新增一张表
|
||||
aliases:
|
||||
- 新增计量表
|
||||
- 单录建表
|
||||
- register-single-meter
|
||||
- 场景-新增计量表
|
||||
tags:
|
||||
- 场景
|
||||
- prop-acc
|
||||
- 计量表
|
||||
- 表管理
|
||||
audience:
|
||||
- 业务人员
|
||||
status: 已发布
|
||||
sub_feature: meter
|
||||
last_review: 2026-05-26
|
||||
code_version: 2026-05-22
|
||||
---
|
||||
|
||||
# 场景:单独新增一张表
|
||||
|
||||
社区**已经初始化完成**(走过 [[init-new-community-batch]] 或老社区已有数据),后续个别新装一张表(新业户入住装表 / 旧业户加装电表分户 / 商铺新进驻装表),走**后台单录**而非批量。
|
||||
|
||||
## 典型情境
|
||||
|
||||
> [!example] 真实情境
|
||||
> 嘉禾花园 12-3-501 业户陈先生最近**装修后想加装一个独立电表**(主表外的厨房专用电表,方便核算厨房电费)。物业财务王主管要在系统建这张新表。
|
||||
|
||||
## 业务人员视角
|
||||
|
||||
### 第 1 步:确认装表信息
|
||||
|
||||
向陈先生 / 抄表员李师傅核实:
|
||||
|
||||
- 房号 / 资产编号:12-3-501(对应 asset)
|
||||
- 费用类型:电费(对应 FeeType)
|
||||
- 物理表编号:E-501-K(物业自编,K 表示厨房)
|
||||
- 倍率:1(普通家用单相表)
|
||||
- 安装日期:今天(2026-05-26)
|
||||
- **初始读数**:抄表员现场看物理表读数,假设 0(全新表)
|
||||
|
||||
### 第 2 步:打开后台
|
||||
|
||||
后台 → 计量表 → 列表 → 右上角 **"新建"** 按钮 → 进 `CreateMeter` 页面。
|
||||
|
||||
### 第 3 步:填表单(`MeterForm`)
|
||||
|
||||
| 字段 | 填什么 |
|
||||
|---|---|
|
||||
| **社区(community_id)** | 嘉禾花园 |
|
||||
| **绑定房屋(asset_id)** | 12-3-501(下拉选)|
|
||||
| **费用类型(fee_type_id)** | 电费(下拉选)|
|
||||
| **表编号(code)** | `E-501-K` |
|
||||
| **倍率(multiplier)** | 1.0 |
|
||||
| **初始读数(initial_reading)** | 0.0 |
|
||||
| **安装日期(installed_at)** | 2026-05-26 |
|
||||
| **是否在役(is_active)** | ✅ 是(默认)|
|
||||
| **替换上一代(replaced_meter_id)** | 留空(全新表,不是换表)|
|
||||
| 备注 | "陈先生厨房分户表" |
|
||||
|
||||
### 第 4 步:提交
|
||||
|
||||
系统:
|
||||
|
||||
1. 校验 asset / fee_type 存在
|
||||
2. 校验 code 在该社区不重复(若有 unique 约束)
|
||||
3. 建 Meter 记录(`is_active=true`, `replaced_meter_id=null`)
|
||||
4. **可选**:是否同时建一条 `initial_reading` 的 MeterReading?看 `CreateMeter` 实现 —— 若 form 有"初始读数"字段(目前应该有),`installed_at` 当天会建一条 `MeterReading(current_reading=0)` 作为起点,这样下次抄表算用量有 previous 可对照
|
||||
|
||||
### 第 5 步:启用 + 抄表
|
||||
|
||||
新表建好后,下次抄表周期就纳入正常流程(`MetersNeedingReadingListWidget` 会显示)。
|
||||
|
||||
## 系统流程
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 王主管
|
||||
participant Filament
|
||||
participant CreateMeter
|
||||
participant 数据库
|
||||
|
||||
王主管->>Filament: ListMeters → 新建按钮
|
||||
Filament->>CreateMeter: 渲染 form
|
||||
王主管->>CreateMeter: 填字段 + 提交
|
||||
CreateMeter->>数据库: 校验 asset / fee_type / code
|
||||
CreateMeter->>数据库: 建 Meter(is_active=true)
|
||||
alt form 含 initial_reading
|
||||
CreateMeter->>数据库: 建 MeterReading(current=initial, source=manual, operated_by=王主管)
|
||||
end
|
||||
CreateMeter-->>Filament: 跳转 ViewMeter
|
||||
Filament-->>王主管: 显示新表详情
|
||||
```
|
||||
|
||||
## 与批量导入的对比
|
||||
|
||||
| 维度 | [[init-new-community-batch|批量导入]] | **单录(本场景)** |
|
||||
|---|---|---|
|
||||
| 触发场景 | 新社区接管 / 一次性大批量 | 个别新装 / 后续补建 |
|
||||
| 数量级 | 100+ | 1 |
|
||||
| UI | Excel 导入 | Filament `CreateMeter` 表单 |
|
||||
| 时长 | 几分钟 / 小时 | 1-2 分钟 |
|
||||
| 出错容忍 | 单行失败 / 部分行可独立处理 | 单条提交,错就改了再交 |
|
||||
| 业务人员熟练度 | 需熟悉 Excel 模板 | 任何人填表都行 |
|
||||
|
||||
## 常见问题
|
||||
|
||||
> [!question] 业主已经有主电表,加装分表合规吗?
|
||||
> **业务问题**,看物业政策 / 法律法规:
|
||||
>
|
||||
> - 国家电网通常**禁止**业主自己装"二次表"用于电费分摊
|
||||
> - 但**物业内部**核算可以(例如商铺租户共用一个主表,物业按业主装的分表算各自费用)
|
||||
>
|
||||
> 系统层面**只管记录**,不判断合规性。
|
||||
|
||||
> [!question] 同一房屋有主表也有分表怎么办?
|
||||
> 系统允许同一 `asset_id` + 同一 `fee_type_id` 下有多张表(不像 prepaid 的"一户一账"约束)。每张表独立抄表 + 独立账单。
|
||||
>
|
||||
> 但**业务上要清楚谁付谁的钱**:
|
||||
> - 主表账单给业主
|
||||
> - 分表账单给租户 / 厨房承包人(看场景)
|
||||
>
|
||||
> 这要业务方明确**账单收方**,系统按 `community_asset_users` 关系找业户。
|
||||
|
||||
> [!question] 单录时填错 code 怎么办?
|
||||
> 表创建后可走 `EditMeter`(`is_active=true` 时允许)修改。但若**已抄过表 / 生成 Bill**,改 code 会让"历史照片上的表号"与"系统 code"对不上 → 强烈不推荐改。详见 [[decommission-and-locking]]"为什么退役表不能改"段。
|
||||
|
||||
> [!question] 单录后没抄表就发现错了能删吗?
|
||||
> 看 `MeterPolicy::delete()`:**仅允许"已退役 + 无任何读数"**的表被删。
|
||||
>
|
||||
> 处理流程:
|
||||
> 1. 先退役表(`is_active=false`, `decommission_reason=Removed`)
|
||||
> 2. 走删除(若 Policy 允许 + 没读数)
|
||||
> 3. 重新建正确的表
|
||||
>
|
||||
> 详见 [[decommission-and-locking]]。
|
||||
|
||||
> [!question] 单录的表如何同步给抄表员?
|
||||
> `MetersNeedingReadingListWidget` 会自动显示新表(下个抄表周期)。无需手工通知。
|
||||
|
||||
## 异常分支
|
||||
|
||||
- 大批量 → [[init-new-community-batch]]
|
||||
- 换表(旧表退役 + 新表建)→ [[replace-broken-meter]]
|
||||
- 错了删表 → [[decommission-without-replacement]]
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [[meter-vs-meter-reading]]
|
||||
- [[init-new-community-batch]]
|
||||
- [[replace-broken-meter]]
|
||||
- [[decommission-and-locking]]
|
||||
Reference in New Issue
Block a user