# 电子元件库存管理系统 v1.0 一个基于 `Flask + SQLite` 的轻量库存系统,适合先本地开发,后续部署到宝塔服务器。 当前支持三类容器: - `28格小盒大盒`:常见 4 连排小盒(竖向 7 排)。 - `14格中盒大盒`:中等盒子,无固定摆放图。 - `袋装清单`:防静电袋列表模式(每行一个袋位,支持批量新增)。 v1.1 新增能力: - 支持盒子改名和删除。 - 新增盒子时可设置 `前缀 + 起始序号`,内部编号自动递增。 - 首页可直接看到每个盒子的编号范围(如 `A1-A28`)。 - 首页新增概览按钮:快速查看已启用的编号与名称。 - 编辑页支持 `启用/停用`。 ## 1. 项目结构 ```text inventory/ ├── app.py ├── requirements.txt ├── init_db.py ├── data/ │ └── inventory.db # 首次初始化后生成 ├── templates/ │ ├── index.html │ ├── box.html │ ├── edit.html │ └── scan.html └── static/ ├── css/ │ └── style.css └── js/ └── scanner.js ``` ## 2. 本地运行 ### 2.1 安装依赖 ```bash pip install -r requirements.txt ``` ### 2.2 初始化数据库 ```bash python init_db.py ``` 初始化后会生成:`data/inventory.db` ### 2.3 启动服务 ```bash python app.py ``` 默认访问:`http://127.0.0.1:5000` ## 3. 页面说明 ### 3.1 首页 `/` - 按容器类型显示 3 个列表。 - 每个列表都可新增盒子。 - 每个盒子可在首页直接改名、修改前缀和起始序号、删除。 - 每个盒子有概览按钮,快速查看已启用条目。 ### 3.2 盒子详情 `/box/` - `28格/14格`:格子视图,点格子进入编辑。 - `袋装清单`:表格视图,支持单条新增和批量新增。 - 页面显示自动编号范围(由前缀+起始序号生成)。 ### 3.3 编辑页 `/edit//` - 编辑料号、名称、规格、数量、位置备注、备注。 - 支持勾选启用,或通过按钮启用/停用。 - 可删除当前格子记录。 ### 3.4 扫码/搜索 `/scan` - 可按料号或名称搜索。 - 支持扫码枪输入后回车触发搜索。 ## 4. 袋装批量新增格式 在袋装清单页面的批量输入框里,每行一条,可用英文逗号或 Tab 分隔: ```text 料号, 名称, 数量, 规格, 位置备注, 备注 ``` 示例: ```text 10K-0603, 贴片电阻10K, 500, 0603, A袋, 常用 100nF-0603, 电容100nF, 300, 0603, B袋, X7R ``` 说明: - `料号`、`名称` 必填。 - `数量` 需为大于等于 0 的整数(留空按 0)。 - 无效行会跳过并提示。 ## 5. 自动编号规则(新增) 新增盒子时只需填写: - `前缀`:如 `A`、`B`、`C`、`BAG` - `起始序号`:如 `1` 系统自动生成内部编号: - 第 1 位:`前缀 + 起始序号` - 第 N 位:`前缀 + (起始序号 + N - 1)` 示例: - 前缀 `A`、起始 `1`、容量 28 -> `A1-A28` - 前缀 `B`、起始 `100`、容量 14 -> `B100-B113` ## 6. 元器件命名建议(简洁版) 为避免命名过长又保证可检索,建议: - `料号(part_no)`:优先写厂家/采购料号,保持唯一。 - `名称(name)`:`品类 + 关键值 + 封装`,如 `电阻10K 0603`、`电容100nF 0603`。 - `规格(specification)`:补充精度/耐压/温漂等必要信息,如 `1%`、`50V X7R`。 推荐格式: ```text 名称: 电阻10K 0603 规格: 1% ``` ```text 名称: 电容100nF 0603 规格: 50V X7R ``` ## 7. 数据库说明 - 使用 SQLite,文件路径:`data/inventory.db` - 首次发布执行一次 `python init_db.py` - 后续通常不需要重复初始化 ## 8. 服务器部署(宝塔) 建议流程: 1. 上传代码或 `git clone` 到服务器。 2. 创建并启用虚拟环境。 3. `pip install -r requirements.txt` 4. `python init_db.py` 5. 用 Gunicorn 启动:`app:app` 6. 宝塔/Nginx 反向代理到 Gunicorn 端口 7. 域名解析 + SSL 建议 Gunicorn 仅监听内网:`127.0.0.1:5000` ## 9. 日常发布流程 本地开发后: ```bash git add . git commit -m "feat: xxx" git push origin main ``` 服务器更新: ```bash cd /www/wwwroot/inventory git pull origin main source venv/bin/activate pip install -r requirements.txt ``` 最后在宝塔里重启 Python 项目。 ## 10. 备份建议 重点备份:`data/inventory.db` 可按天备份,例如: ```bash cp /www/wwwroot/inventory/data/inventory.db /www/backup/inventory_$(date +%F).db ``` ## 11. 常见问题 ### Q1: VS Code 提示无法解析 `flask` 导入 通常是编辑器没选到正确虚拟环境,不代表代码不能运行。切换解释器到项目 venv 即可。 ### Q2: 为什么线上不能用 `python app.py` 长期跑 `python app.py` 是开发模式。生产请使用 Gunicorn(或其他 WSGI)并由宝塔托管。 ### Q3: 本地和服务器数据库要实时同步吗 不建议 SQLite 双向实时同步。建议以服务器库为主,本地用于测试。