reallife_asset/build.sh
yumoqing 0e5696f5da feat: 真人人像素材管理模块初始版本
- 支持火山方舟(Volcengine Ark)真人人像素材API
- AK/SK HMAC-SHA256签名(纯stdlib实现)
- 素材组合(Asset Group)管理: 创建认证、查询、删除
- 素材资产(Asset)管理: 上传、状态同步、删除
- 多供应商可扩展架构
- 完整CRUD + 前端UI + uapi SQL配置
- 12个API端点 + 6个前端页面
- 数据库表: rl_asset_group, rl_asset
2026-05-28 08:55:09 +08:00

64 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# Find Sage root
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: Cannot find Sage root directory"
exit 1
fi
echo "Sage root: $SAGE_ROOT"
MODULE_NAME="reallife_asset"
MODULE_WWWROOT="$SAGE_ROOT/wwwroot/$MODULE_NAME"
# Install module
cd "$SCRIPT_DIR"
"$SAGE_ROOT/py3/bin/pip" install .
# Create wwwroot directory if not exists
mkdir -p "$MODULE_WWWROOT/api"
# Link UI files
for f in "$SCRIPT_DIR/wwwroot"/*.ui; do
[ -f "$f" ] || continue
ln -sf "$f" "$MODULE_WWWROOT/"
done
# Link API dspy files
for f in "$SCRIPT_DIR/wwwroot/api"/*.dspy; do
[ -f "$f" ] || continue
ln -sf "$f" "$MODULE_WWWROOT/api/"
done
# Generate DDL
if [ -d "$SCRIPT_DIR/models" ]; then
cd "$SCRIPT_DIR/models"
"$SAGE_ROOT/py3/bin/json2ddl" mysql . > "$SCRIPT_DIR/mysql.ddl.sql" 2>/dev/null || true
echo "DDL generated: $SCRIPT_DIR/mysql.ddl.sql"
fi
# Generate CRUD UI (if json/ has files)
if [ -d "$SCRIPT_DIR/json" ] && ls "$SCRIPT_DIR/json"/*.json >/dev/null 2>&1; then
cd "$SCRIPT_DIR/json"
"$SAGE_ROOT/py3/bin/xls2ui" -m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" "$MODULE_NAME" *.json 2>/dev/null || true
# Link generated CRUD directories
for d in "$SCRIPT_DIR/wwwroot"/*/; do
[ -d "$d" ] || continue
dname=$(basename "$d")
case "$dname" in api|styles|scripts) continue ;; esac
ln -sf "$d" "$MODULE_WWWROOT/$dname"
done
fi
echo "Build complete: $MODULE_NAME"