cms/build.sh
yumoqing 5cfb0e867b feat: 开元云科技官网CMS系统初始版本
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条测试用例/开发日志
2026-05-27 15:44:26 +08:00

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服务"