何时使用
- 在 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推荐流程
- 01
确认本地数据库
读取 base/backend/.env,确认 DB_HOST 为 localhost / 127.0.0.1。
- 02
确定插件
加载 plugins/<name>/module.metadata.json(以及需要的 displayName)。
- 03
存在性检查
插入前按 name + plugin_version 做 SELECT。
- 04
插入并验证
用 psql 执行 INSERT,再 SELECT 确认 id / name / displayName。
禁止事项
- 不要对 UAT/生产或非本地数据库做种子写入
- 不要提交 .env、密码或连接转储
- 除非线上 schema 需要,不要超出 README 种子形状添加额外列
- 不要对已知插件名跳过存在性检查