跳转到正文

字段参考

本页根据当前 lab_inventory.db 的实际 schema 整理字段职责,同时保留业务语义说明。实体关系详见 数据模型

users

字段含义说明
id主键用户唯一标识
username登录名唯一,受格式限制
password_hash密码哈希不对外返回
full_name显示姓名前端常用展示名
role角色admin / user / public
is_active启用状态禁用后不可正常使用
avatar_url头像地址指向 /static/ 上传资源,不存二进制
username_version用户名版本号用于使旧 token 失效
full_name_pinyin姓名拼音排序和搜索辅助
full_name_pinyin_initials姓名首字母搜索辅助
created_at / updated_at创建和更新时间审计字段

user_sessions

字段含义说明
id主键会话记录 id
user_id归属用户关联 users.id
device_id设备唯一标识前端 / 浏览器生成
device_name设备名称便于设备管理页面展示
ip_address初始登录 IP登录时记录
last_ip_address最近活动 IP运行中更新
user_agent浏览器 / 设备 UA设备识别辅助
token_hashtoken 哈希会话检索关键字段
created_at首次登录时间审计字段
last_active_at最后活跃时间会话活跃刷新依据
expires_at绝对过期时间清理会话依据

reagent_order

标识与基础信息

字段含义
id订单 id
cas_numberCAS 号,试剂最关键业务标识
name中文名
english_name英文名
alias别名
category分类
brand品牌

规格与采购信息

字段含义
initial_quantity单瓶初始量
unit规格单位
quantity申购瓶数
price价格
order_reason申购原因
purity纯度
is_hazardous是否危险品
notes备注

流程与追溯

字段含义
applicant_id申请人
status订单状态
created_at / updated_at创建与更新时间
name_pinyin / category_pinyin / brand_pinyin搜索与排序辅助字段
*_initials拼音首字母搜索辅助

reagent_brand

字段含义说明
id主键品牌记录 id
name品牌名称表单展示值
name_normalized标准化品牌名称唯一键,用于去重
name_pinyin品牌拼音搜索和排序辅助
name_pinyin_initials拼音首字母搜索辅助
is_active是否启用停用后不再作为当前品牌选项展示
created_at / updated_at审计时间操作日志和排序使用

chemical_name_map

字段含义说明
id主键CAS 主数据记录 id
cas_numberCAS 号唯一索引,进入搜索
name中文名必填,前端展示和映射使用
english_name英文名可选
alias_1 / alias_2 / alias_3别名支持多个常见别名
category分类化学品分类
name_pinyin / name_initials中文名拼音与首字母排序和搜索辅助
alias_*_pinyin / alias_*_initials别名拼音与首字母别名搜索辅助
created_at / updated_at审计时间数据维护时间

consumable_order

字段含义说明
id订单 id主键
name名称耗材中文名
english_name英文名可选
product_number货号外部采购平台对接常用
specification规格型号直接保留原始字符串
unit单位可选
quantity数量必填
price价格可选
communication沟通信息补充采购沟通内容
notes备注自由文本
applicant_id申请人关联用户
status状态pending/approved/rejected/completed
name_pinyin / name_pinyin_initials搜索辅助拼音和首字母
created_at / updated_at审计时间列表排序常用

inventory

基础识别

字段含义说明
id主键库存记录 id
internal_code内部编号每瓶库存唯一编号
cas_numberCAS 号试剂识别关键字段
name中文名搜索和展示常用
english_name英文名可选
alias别名可选
category分类搜索和筛选辅助
brand品牌搜索和筛选辅助

位置与数量

字段含义说明
storage_location存放位置位置搜索、货架管理
initial_quantity初始数量单瓶或单条库存原始量
remaining_quantity剩余数量当前可用量
remaining_percent剩余比例为排序和筛选预计算
unit单位规格单位
purity纯度试剂纯度

状态与归属

字段含义说明
status库存状态in_stockborrowed
borrower_id当前借用人借出时使用
last_borrower_id上一次借用人用于追溯
temporary_keeper_id临时保管人常用货架或交接场景
created_by_id创建人手动入库 / 导入时记录
source_order_id来源试剂订单订单复制入库的追溯链路

展示与搜索辅助

字段含义
is_hazardous是否危险品
notes备注
name_pinyin / category_pinyin / brand_pinyin / storage_location_pinyin拼音排序和搜索辅助
*_initials首字母搜索辅助
created_at / updated_at审计时间

borrowlog

字段含义说明
id主键借还日志 id
inventory_id对应库存关联 inventory.id
borrower_id借用人关联 users.id
borrow_time借出时间默认创建时记录
return_time归还时间未归还时为空
quantity_borrowed借出数量可为 0,用于规格或剩余量未知的历史记录
quantity_returned归还数量部分归还时有意义
notes备注借还说明
created_at记录创建时间审计字段

common_shelf

字段含义说明
id主键常用货架瓶级记录 id
internal_code内部编号每瓶常用货架库存唯一编号
cas_numberCAS 号分组和查询关键字段
name_snapshot名称快照分组显示名称
brand / brand_normalized品牌与归一化品牌分组、合并和显示
specification_text / specification_normalized规格文本与归一化规格分组和合并
spec_quantity / spec_unit规格数量与单位由规格解析得到
purity纯度常用货架纯度
notes备注瓶级备注
storage_location / storage_location_normalized位置与归一化位置位置统计和筛选
storage_location_pinyin / storage_location_pinyin_initials位置拼音与首字母位置搜索辅助
source_order_id来源试剂订单从试剂订单入常用货架时保留来源
created_by_id创建人手工添加或入库操作人

common_shelf_group

字段含义说明
id主键分组记录 id
cas_numberCAS 号分组身份的一部分
name_snapshot名称快照分组显示名称
brand品牌展示值
brand_normalized归一化品牌分组身份的一部分
purity纯度分组纯度
specification_text规格文本展示值
spec_quantity / spec_unit规格数量与单位规格解析结果
specification_normalized归一化规格分组身份的一部分
notes备注分组备注
created_by_id创建人关联 users.id
is_deleted是否删除删除后释放活动分组唯一约束
created_at / updated_at审计时间分组排序和维护时间
deleted_at删除时间软删除审计字段

announcements

字段含义说明
id主键公告 id
title标题首页和列表展示
content正文支持较长文本
images图片 URL 列表JSON 数组,不存图片本体
is_pinned是否置顶决定排序优先级
is_visible是否可见控制前台展示
created_by创建人关联管理员
created_at / updated_at审计时间展示和排序使用

compound_structure_cache

字段含义说明
cas_number主键标准化 CAS
smiles_canonical / smiles_isomericSMILES结构检索和展示
molblockMolBlock人工结构和结构编辑器交换格式
inchikeyInChIKey结构身份辅助
english_name / chinese_name外部名称缓存用于结构检索结果展示
source / source_id结构来源PubChem、人工或其他来源
status解析状态pending/resolved/ambiguous/not_found/...
candidate_count / candidates_json候选信息CAS 对应多个候选时使用
manually_verified人工确认标记防止自动解析覆盖人工结构

log_timeline

字段含义说明
id主键日志读模型 id
occurred_at发生时间时间线排序字段
is_cli是否来自 CLI区分脚本入口和浏览器入口
actor_user_id操作人关联用户
subject_user_id受影响用户用户日志筛选字段
source_table / source_log_id源日志定位指向库存、订单、常用货架、用户或借还日志
search_text / search_text_pinyin主搜索文本物料名、CAS 和拼音
detail_search_text详情搜索文本操作说明、数量、状态等可搜索内容

操作日志表

inventory_operation_log

字段含义说明
id主键日志 id
inventory_id库存 id对应库存记录
operator_id操作人关联 users.id,删除用户时级联
action操作类型库存新增、更新、借用、归还等
item_name / cas_number物料快照便于日志检索和展示
snapshot_json数据快照操作当时的库存快照
notes备注操作说明
created_at操作时间日志排序字段

reagent_order_operation_log

字段含义说明
id主键日志 id
order_id试剂订单 id对应订单记录
actor_user_id操作人关联 users.id
applicant_id申请人关联 users.id
action操作类型申请、审批、驳回、到货、入库等
order_name / cas_number订单快照便于日志检索
snapshot_json数据快照操作当时的订单快照
notes备注操作说明
created_at操作时间日志排序字段

consumable_order_operation_log

字段含义说明
id主键日志 id
order_id耗材订单 id对应订单记录
actor_user_id操作人关联 users.id
applicant_id申请人关联 users.id
action操作类型申请、审批、驳回、完成等
order_name / specification订单快照便于日志检索
snapshot_json数据快照操作当时的订单快照
notes备注操作说明
created_at操作时间日志排序字段

common_shelf_operation_log

字段含义说明
id主键日志 id
common_shelf_id常用货架记录 id对应瓶级记录
operator_id操作人关联 users.id,删除用户时级联
action操作类型添加、更新、移除等
item_name / cas_number物料快照便于日志检索
snapshot_json数据快照操作当时的常用货架快照
notes备注操作说明
created_at操作时间日志排序字段

user_operation_log

字段含义说明
id主键日志 id
actor_user_id操作人关联 users.id
target_user_id目标用户被影响用户
action操作类型登录、创建用户、修改角色等
outcome操作结果成功或失败状态
client_ip客户端 IP请求来源
request_id请求标识跨日志定位
detail详情人类可读说明
snapshot_json数据快照操作上下文
created_at操作时间日志排序字段

外部服务用量、运行状态与序列

llm_usage_log

字段含义说明
id主键用量记录 id
user_id调用用户关联 users.id,用户删除后置空
feature功能标识实验步骤查库存使用 procedure_inventory_search
provider服务类型OpenAI 兼容接口记录为 openai_compatible
model模型名称保存调用时配置的模型
attempt尝试序号解析重试按服务响应分别记录
input_tokens输入 token服务商未返回时为空
output_tokens输出 token服务商未返回时为空
total_tokens总 token服务商未返回时为空
created_at调用时间用量统计和审计字段

runtime_state

字段含义说明
key主键运行状态键
value状态值字符串形式保存
updated_at更新时间状态刷新时间

internal_code_sequences

字段含义说明
prefix主键内部编号前缀
current_seq当前序列值下一个编号生成依据
updated_at更新时间序列更新记录

FTS 虚表字段

虚表字段
inventory_ftscas_number, name, name_pinyin, name_pinyin_initials, alias, category, category_pinyin, category_pinyin_initials, brand, brand_pinyin, brand_pinyin_initials, storage_location, storage_location_pinyin, storage_location_pinyin_initials
reagent_order_ftscas_number, name, name_pinyin, name_pinyin_initials, category, category_pinyin, category_pinyin_initials, brand, brand_pinyin, brand_pinyin_initials
consumable_order_ftsname, name_pinyin, name_pinyin_initials, specification, communication
users_ftsfull_name, full_name_pinyin, full_name_pinyin_initials
chemical_name_map_ftscas_number, name, english_name, alias_1, alias_2, alias_3, name_pinyin, name_initials, alias_1_pinyin, alias_1_initials, alias_2_pinyin, alias_2_initials, alias_3_pinyin, alias_3_initials
log_timeline_ftssearch_text, search_text_pinyin, detail_search_text

FTS 的影子表由 SQLite 自动维护,不作为业务模型直接读写。

DTO 与表字段

除了数据库表字段外,项目里还有很多 CreateUpdateResponse 模型。它们通常有三类差异:

  • Create 模型更贴近前端输入。
  • Update 模型通常是可选字段集合。
  • Response 模型会补充计算字段和显示名。

例如:

  • InventoryResponse 会带 specification 和多种 *_name
  • ReagentOrderCreate 接收 specification,后端再拆成 initial_quantity + unit

参考代码

开源项目 · Apache-2.0 license