This is an old revision of the document!
Table of Contents
研发库房管理 H5 — 冷启动文件
版本: 2.0 | 更新: 2026-08-30 | 用途: 研发库房样品出入库管理系统的冷启动/重建/排障手册 地址: http://82.156.85.124:13545/store/ | 服务: rd-store.service(systemd,:13545) 数据库: /home/ubuntu/docs/store/store.db(SQLite,samples/requests/history 表,软删除保留历史) 附件: /home/ubuntu/docs/store/attachments/ | 前端: ~/.hermes/scripts/rd_store.html(单文件零外链)| 后端: rd_store.py
1. 核心业务流程(用户定稿 2026-08-28~30)
物料编码(A+10位数字,唯一,自动随机/手动/反查)
↓
样品入库登记(新样品,全字段+图纸+备注,数量→生成个体编号 N1~Nn)
↓
出库申请(选样品显示详情+选编号,默认顺序)→ 审核人批准 → 生成准出编号(ZC-YYYYMMDD-NNN)→ 扣库存
↓ 测试后重新入库(两种模式)
原样品:输入准出编号→确认→显示该编号样品全部信息→只改位置(默认原位置)→确认入库→自动抵消领料人台账 组合样品:全新档案(名称/型号/规格/项目/物料编码/编号N序/人员/位置/时间/照片)+多个准出编号组成件→确认→各编号自动抵消台账
↓ 破坏性测试报废
销毁申请 → 审核人批准 → 库存核销
↓
领料人台账:出库挂人名下,按准出编号 settled 标记抵消(原样品/组合样品重新入库均生效)
2. 数据模型
- samples 表(软删除):id/data(JSON)/deleted/deleted_at/created_at
- data 含:id/name/material_code(A+10位唯一)/model/spec/supplier{name,addr,phone}/waybill/qty/project/purpose/in_time/operator/photo(照片)/status(新样品|入库留样保存)/location/drawing(规格图纸)/remark(备注)/combine(组合说明)/units[](个体编号N1~Nn: no/status/pass_no/out_log)/compose_pass(组合样品的组成准出编号)/hist[](出入库历史)
- requests 表:申请记录(kind 出库|销毁 / sample_id/qty/units[](出库编号)/receiver/auditor/status/pass_no/settled(台账抵消标记)/settle_time)
- history 表:出入库流水
3. API 表
| API | 方法 | 说明 |
| —– | —— | —— |
| /api/store/meta | GET | 人员(钉钉全量)+历史下拉(样品名/供应商/项目/用途/位置/型号/物料) |
| /api/store/material?code= | GET | 按物料编码反查物料全部信息(唯一性定位) |
| /api/store/samples | GET/POST | 样品列表(qty=在库个体数)/ 入库登记(物料编码自动生成或查重) |
| /api/store/samples/<id> | POST | 修改档案(白名单字段,不碰 units/hist) |
| /api/store/samples/<id> | DELETE | 软删除(进回收站,可恢复) |
| /api/store/out | POST | 出库申请(unit_no 指定编号或默认顺序) |
| /api/store/destroy | POST | 销毁申请 |
| /api/store/requests | GET | 申请列表 |
| /api/store/requests/<id> | POST | 审核(approve→准出编号+标记编号出库 / reject) |
| /api/store/requests/<id> | DELETE | 删除申请记录 |
| /api/store/find?pass_no= | GET | 按准出编号查样品详情(原样品重新入库用) |
| /api/store/back | POST | 原样品重新入库(准出编号→恢复在库→settled 抵消台账) |
| /api/store/combine | POST | 组合样品入库(新档案+多个准出编号→各抵消台账) |
| /api/store/ledger | GET | 领料人台账(按 settled 标记统计抵消) |
| /api/store/history | GET | 流水列表 |
| /api/store/history/<idx> | DELETE | 删除流水 |
| /api/store/trash | GET | 回收站(已删除样品) |
| /api/store/trash/<id> | POST | 从回收站恢复样品 |
| /api/store/upload | POST | 附件上传(照片/图纸) |
4. 关键规则
- 物料编码:A+10位数字,样品唯一标识;自动随机生成(去重50次)或手动录入;已有编码拒绝重复建档并显示该物料全部信息
- 个体编号:数量 N → 生成 N1~Nn;出库按编号(默认顺序=最小在库编号),重新入库按编号匹配
- 准出编号:ZC-YYYYMMDD-NNN,审核批准时生成;只有贴准出编号样品可做研发测试(测试才有效)
- 台账抵消:原样品/组合样品重新入库 → 各准出编号 settled=true → 领料人未抵消数归零
- 库存只走出入库/销毁流程;删除样品=软删除(历史保留可恢复)
- 历史保护:编辑只改白名单字段;备注追加不覆盖;SQLite+软删除+git 三重保障
5. 部署与运维
重启:sudo systemctl restart rd-store.service 日志:journalctl -u rd-store.service -n 50 防火墙:腾讯云轻量 13545 TCP(lhins-1dai07vu ap-beijing) 数据库:sqlite3 ~/docs/store/store.db(samples 表 deleted=1 即回收站) 前端改完即生效(读文件);后端改完需重启
6. 排障速查
| 现象 | 处理 |
| —— | —— |
| 人员列表为空 | /api/store/meta;.env DINGTALK_CLIENT_ID/SECRET;ding_org.json 快照兜底 |
| 数据库只读 | chown ubuntu:ubuntu ~/docs/store/store.db |
| 样品删除找不到 | 回收站 tab(软删除,可恢复) |
| 物料编码重复 | 自动生成去重;手动输入已有→拒绝+显示物料信息 |
| 台账未抵消 | 重新入库(原样品/组合)后各准出编号 settled=true |
| 外网打不开 | 防火墙 13545 + systemd 状态 |
