# module_hub **Repository Path**: alexjunqi/module_hub ## Basic Information - **Project Name**: module_hub - **Description**: 工程师模型网站 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-30 - **Last Updated**: 2026-09-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Module Hub(工程师之家 · 模组库) 非标自动化模组库与标准件商城平台,基于 Frappe Framework v16 / ERPNext v16。 产品线结构参照怡合达(FA 工厂自动化零部件平台)品类体系:直线运动模组 / 旋转运动模组 / 末端执行模组 + FA 标准件商城。 ## 核心功能 - **模组目录与参数化选型**:多级分类树(NestedSet)、参数范围多维筛选、向导式选型规则引擎(白名单条件求值,杜绝 eval 注入) - **模型文件分发**:工程师实名认证审批 → 网盘/直链分发 + 下载频控限流 + 只读审计流水 - **BOM 询价与交易闭环**:模组 + 标准件混合询价单,自动目录价命中(客户价格表 → 默认销售价格表回退)→ 运营工作台人工改价(Comment 审计留痕)→ Quotation → 草稿 Sales Order → 对公水单核销 - **全链路权限防护**:Role + DocPerm + Permission Query Conditions + has_permission 四层隔离(厂商仅见自家型号、客户仅见本人单据) - **LMS 风格 SPA 前端**:frappe-ui 设计 token 体系(`surface-*`/`ink-*`),桌面端左侧栏布局、移动端底部 Tab Bar,骨架屏/空状态/toast 全套交互 ## 前端(frontend/) Vue 3 + Vite 5 + Tailwind 3(`frappe-ui/tailwind` preset)+ Pinia,设计语言完全对齐 Frappe LMS: ``` 桌面端:左侧栏导航(AppSidebar) 移动端:底部 Tab Bar(MobileLayout) 页面骨架:PageHeader(48px) → 筛选区 → 内容栅格(grid-cols-1/md:2/lg:3) ``` 页面:模组目录 / 型号详情 / 向导式选型 / 标准件商城 / 我的下载 / 询价单(新建+详情+水单上传)/ 个人中心(认证+API Key+通知)/ 运营工作台(报价+改价+到账核销)。 ### 构建与部署(LMS 模式) ```bash cd apps/module_hub/frontend npm install npm run build # 产物输出到 module_hub/public/frontend/ # 并生成宿主页 module_hub/www/_modules.html(jinjaBootData 注入 csrf_token) ``` 路由挂载(hooks.py): ```python website_route_rules = [ {"from_route": "/modules/", "to_route": "_modules"}, {"from_route": "/modules", "to_route": "_modules"}, ] ``` 访问入口:`https://{site}/modules`(Desk 桌面图标 "Module Hub" 亦指向此)。 > 注意:`website_route_rules` 有 redis 缓存,修改 hooks 后需 `bench clear-cache` 并重启 web。 ## 后端 API(module_hub/api/) | 模块 | 方法 | 说明 | |---|---|---| | catalog | `get_series_tree` / `list_models` / `get_model` | 目录树 / 参数筛选列表 / 详情(allow_guest,价格按客户价格表脱敏) | | selection | `generate_model_code` | 向导式选型(登录用户),规则引擎求值 | | rfq | `submit_rfq` / `list_my_rfqs` / `get_rfq` / `quote_rfq` / `adjust_line_price` | 询价全流程(request_id 幂等防重、改价审计留痕) | | order | `accept_quotation` / `list_my_orders` | 接受报价转销售订单 | | download | `request_download` | 认证工程师下载,频控 + 审计 | | certification | `submit` / `get_status` | 工程师实名认证 | | vendor | `submit_model` | 厂商上传型号(待审核) | ## 测试数据与测试 ```bash # 注入演示数据(幂等,可重复执行): # 8 系列 / 16 模组型号 / 10 条选型规则 / 9 条定价费率 / 13 个标准件 / 2 家厂商 / # 测试用户(ops@modulehub.test、vendor1/2、engineer、customer @modulehub.test)/ 演示询价单 bench --site {site} execute "frappe.get_attr('module_hub.seed.run')()" # 单元测试 bench --site {site} set-config allow_tests true bench --site {site} run-tests --app module_hub # E2E 冒烟测试(32 项,多角色全覆盖,写操作自动回滚) MH_TEST_SITE={site} env/bin/python apps/module_hub/module_hub/tests/e2e_smoke.py ``` ## 安装 ```bash bench get-app {repo_url} bench --site {site} install-app module_hub bench --site {site} execute "frappe.get_attr('module_hub.seed.run')()" # 可选:演示数据 ``` 安装钩子自动创建:Desk 桌面图标(Module Hub)、Workspace Sidebar(模组库/需求与供应商/运营/快速入口四组)。 ## License MIT