Site Tools


研发库房管理:冷启动文件

This is an old revision of the document!


研发库房管理 H5 — 冷启动文件

版本: 2.1 | 更新: 2026-08-30 | 用途: 研发库房样品出入库管理系统的冷启动/重建/排障手册
⚠️ 功能保全铁律(用户 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)

<code> 物料编码(A+10位数字,唯一,自动随机/手动/反查)

样品入库登记(新样品,全字段+图纸+备注,数量→生成个体编号 N1~Nn)

出库申请(选样品显示详情+选编号,默认顺序)→ 审核人批准 → 生成准出编号(ZC-YYYYMMDD-NNN)→ 扣库存

 ↓ 测试后重新入库(两种模式)

原样品:输入准出编号→确认→显示该编号样品全部信息→只改位置(默认原位置)→确认入库→自动抵消领料人台账 组合样品:全新档案(名称/型号/规格/项目/物料编码/编号N序/人员/位置/时间/照片)+多个准出编号组成件→确认→各编号自动抵消台账

 ↓ 破坏性测试报废

销毁申请 → 审核人批准 → 库存核销

领料人台账:出库挂人名下,按准出编号 settled 标记抵消(原样品/组合样品重新入库均生效) <code>

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. 部署与运维

<code> 重启: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 即回收站) 前端改完即生效(读文件);后端改完需重启 <code>

6. 界面规范(永久保留,禁止回归)

  • 人员选择 = 文本框下拉列表(2026-08-30 用户定稿):所有人员字段(操作人 iOp/bOrigOp/cOp、领料人 oRecv、审核人 oAud/dAud、申请人 dRecv)均用 combo 组件:
  • 下拉选项 = 钉钉通讯录全量(/api/store/meta 的 people,实时拉取+快照兜底)
  • 点击/输入文本框 → 弹出下拉(输入即时过滤),选择后自动收起(comboDDs)
  • 下拉用普通流布局(不绝对定位)→ 不遮挡下方内容,展开时推挤下方
  • 可自定义输入新人员(文本框)
  • 项目选择(iProj/oProj)同 combo 组件(历史项目列表)
  • combo 绑定列表维护位置:fillDatalists() 中 `['iOp','oRecv','oAud','dRecv','dAud','bOrigOp','cOp']`——新增人员字段必须同步加入此列表(曾因 bOp 改名漏绑导致原样品/组合入库人员无下拉,已修复)
  • ⚠️ fillDatalists 必须用 setDL 安全填充(元素不存在不报错)——曾因删除 hisMat datalist 导致 innerHTML null 报错、后续 combo 绑定全部中断(下拉不显示),已修复;改版删除任何 datalist 时不得恢复直接 innerHTML 写法

7. 功能清单(2026-08-30 存档,只增不减)

# 模块 功能点
—— ——–
1 📦 样品档案 列表/搜索(名称编码型号位置+样品名下拉)/筛选(状态/项目)/详情(全部字段+图纸+备注+出入库历史)/软删除/✕删按钮
2 ⬇️ 样品入库 全字段:名称(历史下拉)/物料编码(A+10位自动随机🔄/手动/反查确认显示物料信息)/型号/规格/图纸📄/供应商(名址电)/运单/数量(编号N1~Nn提示)/项目(下拉)/用途/时间/操作人(下拉)/状态/位置(下拉)/照片/备注
3 ⬆️ 出库申请 选样品→显示全部详情/数量/编号下拉(默认顺序=最小在库)/领料人(下拉)/领料时间/项目(下拉)/审核人(下拉)/说明
4 ✅ 审核中心 待审列表(出库/销毁)批准→生成准出编号+标记编号出库/驳回/已处理列表+✕删
5 💥 销毁申请 样品/数量/申请人(下拉)/审核人(下拉)/销毁原因
6 ↩️ 重新入库 原样品:准出编号→确认→显示该编号全部信息→仅位置可改(默认原位置)→确认→自动抵消台账;组合样品:全字段(名称/型号/规格/项目/物料编码/数量→编号N序/人员/位置/时间/照片/图纸/备注)+多个准出编号组成件→确认→各抵消台账
7 👤 领料人台账 按人分组:出库/归还/销毁/未抵消数(按准出编号 settled 标记抵消)
8 📜 流水 全量记录+每行✕删
9 🗑️ 回收站 已删除样品列表(软删除保留)+一键恢复
10 👥 人员选择 所有人员字段=文本框下拉列表(钉钉通讯录全量18人,输入过滤,选中自动收起,不遮挡下方)——永久规范
11 🗄️ 数据 SQLite 数据库(软删除保留历史)/附件上传(照片/图纸)/git 管理

8. 改版验证清单(改完必查,防止功能丢失)

<code> ① 7 个人员字段 combo 绑定正常(iOp/oRecv/oAud/dRecv/dAud/bOrigOp/cOp)——点输入框弹出钉钉全量下拉,选中自动收起 ② fillDatalists 无 null 报错(必须用 setDL 安全填充) ③ 主流程走通:入库→出库申请→审核(准出编号)→原样品/组合样品重新入库(台账抵消)→销毁 ④ 物料编码:自动生成格式 A+10位 / 手动查重 / 反查显示物料信息 ⑤ 样品档案:搜索/筛选/详情/软删除→回收站→恢复 ⑥ 数据不丢:SQLite 软删除 + git 提交 <code>

9. 排障速查

现象 处理
—— ——
人员列表为空 /api/store/meta;.env DINGTALK_CLIENT_ID/SECRET;ding_org.json 快照兜底
数据库只读 chown ubuntu:ubuntu ~/docs/store/store.db
样品删除找不到 回收站 tab(软删除,可恢复)
物料编码重复 自动生成去重;手动输入已有→拒绝+显示物料信息
台账未抵消 重新入库(原样品/组合)后各准出编号 settled=true
外网打不开 防火墙 13545 + systemd 状态
研发库房管理/冷启动文件.1788096005.txt.gz · Last modified: by 127.0.0.1 · Currently locked by: 216.73.217.152,172.17.0.1