entcms模块: - 4个数据表(cms_content/cms_categories/cms_leads/cms_site_config) - 22个.dspy API(含公开API和data_filter) - 4个公开页面(首页/新闻/案例)+管理后台 - 完整营销站点CSS/JS(暗色主题/渐变/动画/响应式) - 云宝SVG线稿占位符 - RBAC权限配置 dingdingflow模块: - 2个数据表(dd_approvals/dd_approval_configs) - 10个.dspy API(含钉钉回调endpoint) - 钉钉API客户端(环境变量配置,开发模式mock) - 管理UI 文档: 架构设计/53条测试用例/开发日志
88 lines
2.6 KiB
Bash
Executable File
88 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# CMS项目构建脚本
|
|
# 构建 entcms + dingdingflow 模块并集成到Sage系统
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
echo "=== CMS项目构建 ==="
|
|
echo "Script dir: $SCRIPT_DIR"
|
|
|
|
# 查找Sage根目录
|
|
SAGE_ROOT=""
|
|
for candidate in "$SCRIPT_DIR/../.." "$HOME/repos/sage" "$HOME/sage"; do
|
|
if [ -d "$candidate/wwwroot" ] && [ -d "$candidate/py3/bin" ]; then
|
|
SAGE_ROOT="$(cd "$candidate" && pwd)"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ -z "$SAGE_ROOT" ]; then
|
|
echo "ERROR: 找不到Sage根目录"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Sage root: $SAGE_ROOT"
|
|
PY="$SAGE_ROOT/py3/bin/python"
|
|
PIP="$SAGE_ROOT/py3/bin/pip"
|
|
|
|
# 安装模块
|
|
for mod in entcms dingdingflow; do
|
|
echo ""
|
|
echo "=== 安装 $mod ==="
|
|
cd "$SCRIPT_DIR/$mod"
|
|
$PIP install -e .
|
|
|
|
# 生成DDL
|
|
if [ -d "models" ] && [ "$(ls models/*.json 2>/dev/null)" ]; then
|
|
echo "生成DDL..."
|
|
cd models
|
|
$PY -c "from sqlor.ddl_template_mysql import DDLTemplate; print(DDLTemplate().generate('.'))" > ../mysql.ddl.sql 2>/dev/null || json2ddl mysql . > ../mysql.ddl.sql 2>/dev/null || echo "DDL generation skipped (json2ddl not available)"
|
|
cd ..
|
|
fi
|
|
|
|
# 生成CRUD UI
|
|
if [ -d "json" ] && [ "$(ls json/*.json 2>/dev/null)" ]; then
|
|
echo "生成CRUD UI..."
|
|
cd json
|
|
xls2ui -m ../models -o ../wwwroot $mod *.json 2>/dev/null || echo "CRUD UI generation skipped (xls2ui not available)"
|
|
cd ..
|
|
fi
|
|
|
|
# 链接wwwroot到Sage
|
|
MODULE_WWWROOT="$SAGE_ROOT/wwwroot/$mod"
|
|
mkdir -p "$MODULE_WWWROOT/api"
|
|
|
|
# 链接UI/CSS/JS文件
|
|
for f in "$SCRIPT_DIR/$mod/wwwroot"/*.ui "$SCRIPT_DIR/$mod/wwwroot"/*.css "$SCRIPT_DIR/$mod/wwwroot"/*.js; do
|
|
[ -f "$f" ] || continue
|
|
fname=$(basename "$f")
|
|
ln -sf "$f" "$MODULE_WWWROOT/$fname"
|
|
done
|
|
|
|
# 链接api目录下的.dspy文件
|
|
for f in "$SCRIPT_DIR/$mod/wwwroot/api"/*.dspy; do
|
|
[ -f "$f" ] || continue
|
|
fname=$(basename "$f")
|
|
ln -sf "$f" "$MODULE_WWWROOT/api/$fname"
|
|
done
|
|
|
|
# 链接生成的CRUD目录
|
|
for d in "$SCRIPT_DIR/$mod/wwwroot"/*/; do
|
|
[ -d "$d" ] || continue
|
|
dname=$(basename "$d")
|
|
case "$dname" in api|styles|scripts) continue ;; esac
|
|
ln -sf "$d" "$MODULE_WWWROOT/$dname"
|
|
done
|
|
|
|
echo "$mod 安装完成"
|
|
done
|
|
|
|
echo ""
|
|
echo "=== 构建完成 ==="
|
|
echo "请执行以下步骤完成集成:"
|
|
echo "1. 编辑 $SAGE_ROOT/app/sage.py 添加模块导入"
|
|
echo "2. 编辑 $SAGE_ROOT/build.sh 添加模块到安装循环"
|
|
echo "3. 执行 RBAC 权限配置"
|
|
echo "4. 重启Sage服务"
|