Files
H3ConuMS-v2/库存管理功能设计方案.md
T
v6ole f1f8518985 ```
feat(auth): 添加用户权限获取接口并完善JWT令牌角色信息

- 在JWT令牌中添加用户角色信息
- 新增get_my_permissions接口用于获取当前用户权限码列表
- 重构认证回调逻辑,增加错误日志记录
- 更新用户信息获取接口使用Authorization头验证
```
2026-04-06 00:40:08 +08:00

19 KiB
Raw Blame History

H3C ONU设备管理系统 - 库存管理功能设计方案

项目背景

基于与项目负责人的详细讨论,为H3C ONU设备管理系统增加库存管理功能,用于管理项目中现有的实体设备(ONU、OLT、交换机、防火墙、上网行为管理等)的出入库台账。

设计讨论记录

讨论时间: 2026年4月5日
参与人员: 阿森、小柚(AI助手)

一、需求分析

1.1 核心需求

  1. 设备全生命周期管理:从采购入库 → 领用出库 → 安装使用 → 退库归还 → 报废处理
  2. 物料分类管理:支持ONU设备、OLT设备、交换机、防火墙、上网行为管理等
  3. 库存台账管理:记录基本信息、唯一标识、库存数量、位置信息、状态信息
  4. 业务流程管理:批量入库、领用出库、退库归还、报废/报修处理、盘点调整
  5. 系统集成需求:与现有设备监控系统深度集成,设备安装时更新位置信息,报废时从监控系统移除

1.2 用户场景

  1. 仓库管理员:管理物料入库、出库、盘点
  2. 运维人员:领用设备进行现场安装
  3. 采购人员:新设备采购入库
  4. 管理人员:查看库存报表,进行决策

1.3 功能范围

  • 物料分类管理
  • 库存台账管理
  • 出入库流程管理
  • 盘点管理
  • 报表统计
  • 与现有系统集成

二、整体架构设计

2.1 架构方案:集成扩展方案

选择理由

  1. 无缝集成:与现有设备监控系统深度集成
  2. 数据一致:共享用户、权限、设备基础数据
  3. 流程连贯:设备完整生命周期管理
  4. 技术复用:复用现有的Excel导入、权限控制、UI组件

2.2 系统关系图

┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│   库存管理系统   │◄────►│ 设备监控系统    │◄────►│   权限管理系统   │
│                 │      │                 │      │   (Casdoor)     │
├─────────────────┤      ├─────────────────┤      └─────────────────┘
│ • 物料管理       │      │ • ONU状态监控   │
│ • 出入库台账     │      │ • OLT管理       │
│ • 库存统计       │      │ • 实时告警      │
│ • 领用审批       │      │ • 历史记录      │
└─────────────────┘      └─────────────────┘
         │                         │
         └─────────────────────────┘
             设备生命周期流转

2.3 技术架构

  • 后端:在现有FastAPI基础上扩展库存管理模块
  • 前端:在现有Vue 3基础上增加库存管理页面
  • 数据库:在现有PostgreSQL中新增库存相关表
  • 权限:集成现有权限系统,新增库存管理权限
  • 导入导出:复用现有Excel导入组件

三、详细功能设计

3.1 物料分类管理

支持的设备类型:

  1. ONU设备(与现有系统深度集成)
  2. OLT设备(与现有OLT管理集成)
  3. 交换机
  4. 防火墙
  5. 上网行为管理
  6. 光模块等配件

物料属性:

  • 基本信息:名称、型号、规格、品牌、单位
  • 唯一标识
    • ONU设备:MAC地址(与现有系统一致)
    • OLT设备:IP地址 + 序列号
    • 交换机:MAC地址 + 序列号
    • 防火墙:序列号 + 资产编号
    • 上网行为管理:序列号
  • 库存信息:当前数量、安全库存
  • 位置信息:仓库位置(项目专用仓库,无货架管理)
  • 状态信息:全新、已使用、待维修、报废
  • 供应商信息:供应商、采购日期、采购价格

3.2 库存管理方式

采用混合管理模式

  • 高价值设备:序列号管理(每个设备单独跟踪)
  • 低价值配件:批次管理(按采购批次跟踪)
  • 简单数量管理:只记录总数(适用于消耗品)

3.3 出入库流程设计

A. 采购入库流程

Excel模板导入 → 批量入库 → 生成采购单 → 审核入库 → 更新库存
  • 支持现有Excel导入方式
  • 自动生成采购单编号
  • 支持分批入库

B. 领用出库流程

选择物料 → 填写领用信息 → 登记安装信息 → 确认出库 → 同步到监控系统
  • 管理员直接操作,无需审批流程
  • 领用时预填安装信息(学校、楼宇、房间等)
  • 自动创建监控设备记录

C. 退库归还流程

选择退库设备 → 选择退库类型 → 更新状态 → 退回库存

支持四种退库类型:

  1. 简单退库:状态变回库存,保留历史记录
  2. 维修退库:标记为待维修,进入维修流程
  3. 报废退库:进入报废流程,从监控系统移除
  4. 带历史退库:保留完整的安装和使用历史

3.4 库存管理功能

A. 库存总览

  • 按设备类型统计数量
  • 库存价值统计
  • 库存状态分布(全新/已使用/待维修)
  • 低库存预警

B. 定期盘点

  • 每月/每季度全盘
  • 盘点差异记录
  • 盘点报告生成
  • 库存数量调整

C. 报表统计

  1. 库存总览报表:各类物料数量和价值统计
  2. 领用统计报表:按人员、项目、时间统计
  3. 库存预警报表:低于安全库存的物料提醒
  4. 设备生命周期报告:设备从入库到报废的全过程

3.5 状态流转设计

库存中 (in_stock)
    ↓ 领用
已分配 (allocated)
    ↓ 安装
已安装 (installed)
    ↓ 投入使用
使用中 (in_use)
    ├─→ 简单退库 → 库存中
    ├─→ 维修退库 → 维修中 (repairing) → 维修完成 → 库存中
    └─→ 报废退库 → 已报废 (scrapped)

四、数据库设计

4.1 核心数据表

-- 物料分类表
CREATE TABLE material_categories (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,        -- 分类名称:ONU、OLT、交换机等
    code VARCHAR(50) UNIQUE NOT NULL,  -- 分类代码
    description TEXT,
    created_at TIMESTAMP DEFAULT NOW()
);

-- 物料主数据表
CREATE TABLE materials (
    id BIGSERIAL PRIMARY KEY,
    category_id BIGINT REFERENCES material_categories(id),
    name VARCHAR(200) NOT NULL,        -- 物料名称
    model VARCHAR(100),                -- 型号
    specification TEXT,                -- 规格
    brand VARCHAR(100),                -- 品牌
    unit VARCHAR(20) DEFAULT '个',     -- 单位
    safe_quantity INTEGER DEFAULT 0,   -- 安全库存
    notes TEXT,                        -- 备注
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

-- 库存批次表(批次管理)
CREATE TABLE inventory_batches (
    id BIGSERIAL PRIMARY KEY,
    material_id BIGINT REFERENCES materials(id),
    batch_no VARCHAR(50) NOT NULL,     -- 批次号
    quantity INTEGER NOT NULL,         -- 批次数量
    supplier VARCHAR(200),             -- 供应商
    purchase_date DATE,                -- 采购日期
    purchase_price DECIMAL(10,2),      -- 采购单价
    expiry_date DATE,                  -- 有效期(如有)
    location VARCHAR(100),             -- 仓库位置
    status VARCHAR(20) DEFAULT 'in_stock', -- 状态:in_stock, reserved, out_of_stock
    created_at TIMESTAMP DEFAULT NOW()
);

-- 序列号设备表(高价值设备单独跟踪)
CREATE TABLE serial_devices (
    id BIGSERIAL PRIMARY KEY,
    material_id BIGINT REFERENCES materials(id),
    batch_id BIGINT REFERENCES inventory_batches(id),
    serial_no VARCHAR(100) NOT NULL UNIQUE, -- 序列号
    mac_address VARCHAR(17),            -- MAC地址(ONU设备)
    asset_no VARCHAR(50),               -- 资产编号
    status VARCHAR(20) DEFAULT 'in_stock', -- 状态:in_stock, allocated, installed, in_use, returned, repairing, scrapped
    current_location VARCHAR(200),      -- 当前位置
    installed_info JSONB,               -- 安装信息:学校、楼宇、房间等
    onu_device_id BIGINT REFERENCES onu_devices(id), -- 关联监控设备
    notes TEXT,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

-- 出入库记录表
CREATE TABLE inventory_transactions (
    id BIGSERIAL PRIMARY KEY,
    transaction_no VARCHAR(50) UNIQUE NOT NULL, -- 单据编号
    transaction_type VARCHAR(20) NOT NULL, -- 类型:purchase_in, allocate_out, return_in, scrap_out, adjust
    material_id BIGINT REFERENCES materials(id),
    batch_id BIGINT REFERENCES inventory_batches(id),
    serial_device_id BIGINT REFERENCES serial_devices(id),
    quantity INTEGER NOT NULL,
    from_status VARCHAR(20),            -- 操作前状态
    to_status VARCHAR(20),              -- 操作后状态
    operator_id BIGINT REFERENCES users(id), -- 操作人
    project_name VARCHAR(200),          -- 项目名称
    installation_info JSONB,            -- 安装信息
    notes TEXT,
    created_at TIMESTAMP DEFAULT NOW()
);

-- 盘点记录表
CREATE TABLE inventory_checks (
    id BIGSERIAL PRIMARY KEY,
    check_no VARCHAR(50) UNIQUE NOT NULL, -- 盘点单号
    check_date DATE NOT NULL,           -- 盘点日期
    checker_id BIGINT REFERENCES users(id), -- 盘点人
    material_id BIGINT REFERENCES materials(id),
    batch_id BIGINT REFERENCES inventory_batches(id),
    book_quantity INTEGER,              -- 账面数量
    actual_quantity INTEGER,            -- 实际数量
    difference INTEGER,                 -- 差异数量
    reason TEXT,                        -- 差异原因
    adjusted BOOLEAN DEFAULT FALSE,     -- 是否已调整
    created_at TIMESTAMP DEFAULT NOW()
);

4.2 数据关系图

material_categories
    ↑
materials ─┬─ inventory_batches
           │
           └─ serial_devices ───── onu_devices (现有表)
                    ↑
      inventory_transactions
           ↑
    inventory_checks

五、与现有系统集成设计

5.1 设备流转集成

# 领用出库时自动创建监控设备
def allocate_device(serial_device_id, installation_info):
    # 1. 更新库存设备状态为 allocated
    # 2. 如果设备类型是ONU,自动创建onu_devices记录
    # 3. 关联serial_devices.onu_device_id
    # 4. 初始化设备状态检查任务

# 安装完成时同步到监控系统  
def install_device(serial_device_id, onu_device_id):
    # 1. 更新库存设备状态为 installed
    # 2. 更新onu_devices的安装位置信息
    # 3. 开始定期状态监控

# 退库时处理监控设备
def return_device(serial_device_id, return_type):
    if return_type == 'scrap':
        # 报废:从监控系统移除,保留历史记录
        deactivate_monitoring(serial_device_id)
    else:
        # 其他退库:暂停监控,设备状态标记为退库
        pause_monitoring(serial_device_id)

5.2 权限集成

  • 复用现有Casdoor用户体系
  • 新增库存管理相关权限:
    • inventory:view - 查看库存
    • inventory:manage - 管理物料
    • inventory:transaction - 出入库操作
    • inventory:check - 盘点操作
    • inventory:report - 查看报表

5.3 数据导入集成

  • 复用现有的Excel导入组件
  • 新增库存导入模板
  • 支持批量设备入库

六、用户界面设计

6.1 桌面端界面布局

┌─────────────────────────────────────┐
│ 库存管理                            │
├─────────────────────────────────────┤
│ [物料管理] [入库管理] [出库管理]    │
│ [退库管理] [盘点管理] [报表统计]    │
├─────────────────────────────────────┤
│             主工作区                 │
│  • 库存总览仪表板                   │
│  • 物料列表(表格/卡片)            │
│  • 出入库流水                       │
└─────────────────────────────────────┘

6.2 移动端适配

  • 复用移动端设计思路中的底部导航
  • 增加"库存"标签页
  • 移动端聚焦功能:库存查询、扫码盘点、快速领用

6.3 关键页面设计

  1. 库存总览页面:卡片式数据可视化,关键指标一目了然
  2. 物料管理页面:支持表格和卡片视图,可按分类筛选
  3. 领用出库页面:向导式操作流程,简化用户操作
  4. 盘点管理页面:支持移动端扫码,提高盘点效率

七、API接口设计

7.1 物料管理接口

GET    /api/inventory/materials          # 获取物料列表
POST   /api/inventory/materials          # 创建物料
GET    /api/inventory/materials/{id}     # 获取物料详情
PUT    /api/inventory/materials/{id}     # 更新物料
DELETE /api/inventory/materials/{id}     # 删除物料
POST   /api/inventory/materials/import   # Excel导入物料
GET    /api/inventory/materials/export   # 导出物料列表

7.2 出入库接口

POST   /api/inventory/transactions/purchase   # 采购入库
POST   /api/inventory/transactions/allocate   # 领用出库
POST   /api/inventory/transactions/return     # 退库归还
POST   /api/inventory/transactions/scrap      # 报废处理
GET    /api/inventory/transactions            # 查询出入库记录
GET    /api/inventory/transactions/{id}       # 获取单据详情

7.3 库存查询接口

GET    /api/inventory/summary                # 库存总览
GET    /api/inventory/status                 # 库存状态统计
GET    /api/inventory/warning                # 库存预警列表
GET    /api/inventory/history/{device_id}    # 设备流转历史

7.4 盘点管理接口

POST   /api/inventory/checks                 # 创建盘点单
PUT    /api/inventory/checks/{id}            # 更新盘点结果
POST   /api/inventory/checks/{id}/adjust     # 执行库存调整
GET    /api/inventory/checks                 # 查询盘点记录
GET    /api/inventory/checks/{id}/report     # 生成盘点报告

八、实施计划

第一阶段:基础框架(1-2周)

  1. 数据库表结构创建和迁移脚本
  2. 后端API基础框架搭建
  3. 权限系统扩展(新增库存管理权限)
  4. 基础物料管理功能实现

交付物

  • 数据库迁移文件
  • 后端基础API
  • 权限配置更新

第二阶段:核心功能(2-3周)

  1. 出入库流程完整实现
  2. Excel导入导出功能
  3. 库存统计报表
  4. 与监控系统集成开发

交付物

  • 完整的出入库功能
  • Excel导入模板
  • 库存报表功能
  • 设备流转集成

第三阶段:高级功能(1-2周)

  1. 移动端盘点功能
  2. 库存预警系统
  3. 设备生命周期报告
  4. 性能优化和测试

交付物

  • 移动端盘点支持
  • 预警系统
  • 完整测试报告

九、技术实现要点

9.1 后端实现

  • 新增inventory模块,目录结构:
    backend/app/
    ├── api/
    │   └── inventory/          # 库存管理API
    ├── models/
    │   └── inventory.py        # 库存数据模型
    ├── schemas/
    │   └── inventory.py        # 库存Pydantic模式
    ├── services/
    │   └── inventory_service.py # 库存业务逻辑
    └── tasks/
        └── inventory_tasks.py   # 库存相关异步任务
    

9.2 前端实现

  • 新增库存管理路由和页面
  • 复用现有的Element Plus组件
  • 开发专用的库存管理组件

9.3 数据一致性保证

  • 使用数据库事务保证库存操作的原子性
  • 定期数据一致性检查任务
  • 完整的操作日志记录

十、测试策略

10.1 功能测试

  1. 单元测试:每个API接口的独立测试
  2. 集成测试:库存流程与监控系统集成测试
  3. 业务流程测试:完整的出入库流程测试
  4. 数据一致性测试:库存数量与交易记录一致性验证

10.2 性能测试

  1. 并发测试:多用户同时操作库存
  2. 大数据量测试:导入大量设备数据
  3. 响应时间测试:关键操作响应时间

10.3 兼容性测试

  1. 浏览器兼容:主流浏览器测试
  2. 移动端兼容:手机浏览器测试
  3. Excel兼容:不同版本Excel导入测试

十一、风险与应对

11.1 技术风险

  1. 数据一致性风险:采用数据库事务和定期检查
  2. 性能风险:大数据量时使用分页和缓存
  3. 集成风险:分阶段集成,先读后写

11.2 业务风险

  1. 流程变更风险:设计灵活的流程配置
  2. 用户接受度风险:提供培训和使用文档
  3. 数据迁移风险:制定详细的数据迁移计划

十二、维护与支持

12.1 监控指标

  1. 库存操作成功率:出入库操作成功比例
  2. 数据一致性指标:库存数量与实际数量差异
  3. 用户使用指标:各功能使用频率

12.2 运维支持

  1. 日志记录:详细的操作日志
  2. 数据备份:定期库存数据备份
  3. 故障恢复:数据不一致时的恢复流程

十三、预期效益

13.1 业务效益

  1. 流程规范化:设备从采购到报废的全生命周期管理
  2. 库存可视化:实时掌握库存状态,避免缺料和积压
  3. 成本控制:精确的设备资产管理和成本核算
  4. 效率提升:减少人工盘点时间,提高领用效率

13.2 管理效益

  1. 决策支持:基于数据的采购和库存优化决策
  2. 责任追溯:完整的设备流转历史记录
  3. 合规管理:符合资产管理规范要求

十四、后续扩展考虑

14.1 功能扩展

  1. 供应商管理:完整的供应商信息管理
  2. 采购管理:采购申请、比价、合同管理
  3. 维修管理:设备维修流程管理
  4. 租赁管理:设备租赁和归还管理

14.2 技术扩展

  1. 条码/RFID支持:自动化库存管理
  2. 移动APP:独立的库存管理APP
  3. API开放:对外提供库存查询API
  4. 数据分析:基于AI的库存预测

十五、总结

本设计方案为H3C ONU设备管理系统增加了完整的库存管理功能,实现了设备从采购入库到报废退库的全生命周期管理。方案具有以下特点:

  1. 深度集成:与现有设备监控系统无缝集成
  2. 流程完整:覆盖采购、领用、安装、退库、报废全流程
  3. 灵活配置:支持不同设备类型的差异化管理
  4. 用户友好:简洁的界面和操作流程
  5. 可扩展性强:为后续功能扩展预留接口

该方案的实施将显著提升项目的设备管理水平和运营效率,为项目的长期发展奠定坚实基础。


文档信息

  • 创建时间:2026年4月5日
  • 文档版本:v1.0
  • 适用对象:开发团队、测试团队、运维团队
  • 保密级别:内部使用

备注

  1. 本方案基于与项目负责人的详细讨论结果整理
  2. 实施过程中可根据实际情况进行调整
  3. 建议分阶段实施,降低风险
  4. 重要变更需更新本文档并通知相关人员