31 lines
1.6 KiB
Markdown
31 lines
1.6 KiB
Markdown
# script_engine 逻辑编程(脚本/规则引擎)模块
|
||
|
||
脚本/规则引擎:`script_engine` 脚本表 CRUD + 执行/校验接口。独立模块,无业务依赖。
|
||
|
||
## 功能
|
||
- 脚本表 CRUD:`create_script / update_script / delete_script / get_script / list_scripts`(含复数别名)
|
||
- 执行接口:`execute_script`(按 id 或 content+script_type,校验后执行)
|
||
- 校验接口:`validate_script_api`(仅校验,不落库不执行)
|
||
- 脚本类型:`0`=Python,`1`=SQL
|
||
- Python 受限执行:AST 校验(禁 import/类/λ/async/await/对象方法调用)+ builtins 白名单
|
||
- SQL 仅允许只读单语句(SELECT/SHOW/DESCRIBE/EXPLAIN),禁写语句/多语句/危险关键字
|
||
|
||
## 数据表
|
||
- `script_engine`:id(str32 PK)、script_name(str100)、script_type(str32 default '0')、content(text)、description(str255)、status(str32 default '1')、created_at、updated_at
|
||
- 索引:idx_script_name、idx_script_type
|
||
- 编码:script_type→appcodes_kv parentid='script_type'(0=Python,1=SQL);status→parentid='script_status'(0=停用,1=启用)
|
||
|
||
## 集成
|
||
```python
|
||
from script_engine.init import load_script_engine
|
||
load_script_engine() # 注册全部函数到 ServerEnv
|
||
```
|
||
- 取库名:`ServerEnv().get_module_dbname('script_engine')`(.py)/ `get_module_dbname('script_engine')`(.dspy 全局)
|
||
- REST:`wwwroot/api/script_create.dspy` 等 11 个端点
|
||
- RBAC:`scripts/load_path.py` 显式注册(无通配符)
|
||
|
||
## 构建
|
||
```bash
|
||
./build.sh # 1) 装 xls2ddl 2) models→mysql.ddl.sql 3) json→CRUD UI 4) wwwroot 软链
|
||
```
|