演示

模块种子数据

向 module 表插入一行,使插件出现在本地 Quan ERP 开发数据库中。仅用于开发环境——切勿对 UAT、生产或非本地主机执行。

何时使用

  • 在 plugins/<name>/ 下为本地开发注册新插件
  • 从 ERP UI 安装前需要先有 module 行
  • 遵循 README 中的本地/开发 module INSERT 模式

前置条件

  • 本地开发环境已就绪(prepare-local-dev.sh / local core 流程)
  • 可用 psql
  • 可用 base/backend/.env 中的凭据连接 Postgres

数据库凭据

从 base/backend/.env 读取连接信息。不要在 Doc、提交或聊天记录中硬编码密码。

  • DB_HOST — 本地/开发应为 localhost / 127.0.0.1
  • DB_PORT、DB_USERNAME、DB_PASSWORD、DB_SCHEMA
  • 若 DB_HOST 不是本地,请停止——此流程仅限本地/开发
TSconnect
# From repo root — values from base/backend/.env export PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USERNAME" -d "$DB_SCHEMA"

种子 INSERT

字段从 plugins/<name>/module.metadata.json 映射。唯一约束为 (name, plugin_version)。

  • name ← metadata.name(必须与插件目录 / 元数据一致)
  • displayName ← 可读标题(缺失时询问;不要编造偏品牌的文案)
  • description ← metadata.description
  • unInstallable ← 普通插件为 true
  • module_entry_object ← metadata.moduleEntryObject(通常为 Module)
  • plugin_version ← metadata.pluginVersion(通常为 1.0.0)
  • dependencies ← metadata.pluginDependencies 的 JSON 字符串(空则为 '{}')
  • base_version ← metadata.requiredBasedVersion(通常为 1.0.0)
  • version ← 行/乐观版本 — 与 README 种子一样用 1
SQLinsert
INSERT INTO module ("name","displayName","description","unInstallable","module_entry_object","plugin_version","dependencies","base_version","version") VALUES ('<name>','<Display Name>','<description>',true,'Module','1.0.0','{}','1.0.0',1);

插入前检查

若行已存在,不要重复插入,除非明确要更新。优先用针对性 UPDATE,而不是盲目重插。

SQLselect
SELECT id, name, "displayName", plugin_version, installed FROM module WHERE name = '<name>' AND plugin_version = '<plugin_version>';

一次性示例

TSXbash
1export PGPASSWORD="$DB_PASSWORD" 2psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USERNAME" -d "$DB_SCHEMA" -v ON_ERROR_STOP=1 <<'SQL' 3INSERT INTO module 4("name","displayName","description","unInstallable","module_entry_object","plugin_version","dependencies","base_version","version") 5VALUES 6('reward-point','Reward Point','Reward point management plugin',true,'Module','1.0.0','{}','1.0.0',1); 7SQL

推荐流程

  1. 01

    确认本地数据库

    读取 base/backend/.env,确认 DB_HOST 为 localhost / 127.0.0.1。

  2. 02

    确定插件

    加载 plugins/<name>/module.metadata.json(以及需要的 displayName)。

  3. 03

    存在性检查

    插入前按 name + plugin_version 做 SELECT。

  4. 04

    插入并验证

    用 psql 执行 INSERT,再 SELECT 确认 id / name / displayName。

禁止事项

  • 不要对 UAT/生产或非本地数据库做种子写入
  • 不要提交 .env、密码或连接转储
  • 除非线上 schema 需要,不要超出 README 种子形状添加额外列
  • 不要对已知插件名跳过存在性检查