diff --git a/.gitignore b/.gitignore
index d077024..55067e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,8 +49,8 @@ application-prod.yml
bootstrap.yml
# 实际配置文件(敏感信息,仅模板提交)
-src/main/resources/env.properties
-src/main/resources/service.properties
+scripts/env.properties
+worklog-api/src/main/resources/service.properties
# 数据库备份
*.sql.backup
@@ -59,6 +59,8 @@ db_backup/
# ==================== Assembly 打包输出 ====================
deploy/worklog-api/
deploy/worklog-api.tar.gz
+deploy/worklog-web/
+deploy/worklog-mobile/
# ==================== 上传文件 ====================
uploads/
diff --git a/deploy/scripts/backup.sh b/scripts/backup.sh
similarity index 100%
rename from deploy/scripts/backup.sh
rename to scripts/backup.sh
diff --git a/scripts/build-all.sh b/scripts/build-all.sh
new file mode 100755
index 0000000..b2fa07d
--- /dev/null
+++ b/scripts/build-all.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+# ====================================================
+# 工作日志服务平台 - 全量打包脚本
+# ====================================================
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
+DEPLOY_DIR="${PROJECT_ROOT}/deploy"
+
+# 颜色定义
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
+
+echo -e "${BLUE}=========================================${NC}"
+echo -e "${BLUE}工作日志服务平台 - 全量打包${NC}"
+echo -e "${BLUE}=========================================${NC}"
+
+# 清理 deploy 目录下的旧构建产物
+echo -e "${YELLOW}清理旧构建产物...${NC}"
+rm -rf ${DEPLOY_DIR}/worklog-api
+rm -rf ${DEPLOY_DIR}/worklog-api.tar.gz
+rm -rf ${DEPLOY_DIR}/worklog-web
+rm -rf ${DEPLOY_DIR}/worklog-mobile
+
+# 1. 打包后端 API
+echo ""
+echo -e "${GREEN}[1/3] 打包后端 API...${NC}"
+cd "${PROJECT_ROOT}/worklog-api"
+mvn clean package -DskipTests -q
+
+# 检查后端打包结果
+if [ ! -f "${DEPLOY_DIR}/worklog-api.tar.gz" ]; then
+ echo -e "${RED}ERROR: 后端打包失败${NC}"
+ exit 1
+fi
+API_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-api.tar.gz | cut -f1)
+echo -e "${GREEN}后端打包完成: ${API_SIZE}${NC}"
+
+# 2. 打包管理后台前端
+echo ""
+echo -e "${GREEN}[2/3] 打包管理后台前端...${NC}"
+"${SCRIPT_DIR}/build-web.sh"
+
+# 部署到 deploy 目录
+mkdir -p ${DEPLOY_DIR}/worklog-web
+cp -r ${PROJECT_ROOT}/worklog-web/dist/* ${DEPLOY_DIR}/worklog-web/
+WEB_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-web | cut -f1)
+echo -e "${GREEN}管理后台打包完成: ${WEB_SIZE}${NC}"
+
+# 3. 打包移动端 H5
+echo ""
+echo -e "${GREEN}[3/3] 打包移动端H5前端...${NC}"
+"${SCRIPT_DIR}/build-mobile.sh"
+
+# 部署到 deploy 目录
+mkdir -p ${DEPLOY_DIR}/worklog-mobile
+cp -r ${PROJECT_ROOT}/worklog-mobile/dist/* ${DEPLOY_DIR}/worklog-mobile/
+MOBILE_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-mobile | cut -f1)
+echo -e "${GREEN}移动端H5打包完成: ${MOBILE_SIZE}${NC}"
+
+# 输出汇总
+echo ""
+echo -e "${GREEN}=========================================${NC}"
+echo -e "${GREEN}全量打包完成!${NC}"
+echo -e "${GREEN}=========================================${NC}"
+echo -e "输出目录: ${DEPLOY_DIR}/"
+echo ""
+echo -e "产物列表:"
+echo -e " - worklog-api.tar.gz (${API_SIZE})"
+echo -e " - worklog-web/ (${WEB_SIZE})"
+echo -e " - worklog-mobile/ (${MOBILE_SIZE})"
+echo ""
+echo -e "部署命令示例:"
+echo -e " scp ${DEPLOY_DIR}/worklog-api.tar.gz user@server:/opt/worklog/"
+echo -e " scp -r ${DEPLOY_DIR}/worklog-web user@server:/opt/worklog/"
+echo -e " scp -r ${DEPLOY_DIR}/worklog-mobile user@server:/opt/worklog/"
diff --git a/scripts/build-mobile.sh b/scripts/build-mobile.sh
new file mode 100755
index 0000000..5cc8aac
--- /dev/null
+++ b/scripts/build-mobile.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# ====================================================
+# 工作日志服务平台 - 移动端H5前端打包脚本
+# ====================================================
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
+MOBILE_DIR="${PROJECT_ROOT}/worklog-mobile"
+DEPLOY_DIR="${PROJECT_ROOT}/deploy"
+
+# 颜色定义
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+echo -e "${GREEN}=========================================${NC}"
+echo -e "${GREEN}打包移动端H5前端 (worklog-mobile)${NC}"
+echo -e "${GREEN}=========================================${NC}"
+
+# 检查项目目录
+if [ ! -d "${MOBILE_DIR}" ]; then
+ echo -e "${RED}ERROR: 找不到项目目录 ${MOBILE_DIR}${NC}"
+ exit 1
+fi
+
+cd "${MOBILE_DIR}"
+
+# 检查 node_modules
+if [ ! -d "node_modules" ]; then
+ echo -e "${YELLOW}安装依赖...${NC}"
+ npm install
+fi
+
+# 清理旧的构建产物
+echo -e "${YELLOW}清理旧的构建产物...${NC}"
+rm -rf dist
+
+# 构建
+echo -e "${YELLOW}构建生产版本...${NC}"
+npm run build
+
+# 检查构建结果
+if [ ! -d "dist" ]; then
+ echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}"
+ exit 1
+fi
+
+# 计算 dist 目录大小
+DIST_SIZE=$(du -sh dist | cut -f1)
+DIST_FILES=$(find dist -type f | wc -l)
+
+echo -e "${GREEN}=========================================${NC}"
+echo -e "${GREEN}构建完成!${NC}"
+echo -e "${GREEN}=========================================${NC}"
+echo -e "输出目录: ${MOBILE_DIR}/dist"
+echo -e "总大小: ${DIST_SIZE}"
+echo -e "文件数量: ${DIST_FILES}"
+echo ""
+echo -e "部署目录: ${DEPLOY_DIR}/worklog-mobile/"
+echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-mobile/"
diff --git a/scripts/build-web.sh b/scripts/build-web.sh
new file mode 100755
index 0000000..37ebac5
--- /dev/null
+++ b/scripts/build-web.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# ====================================================
+# 工作日志服务平台 - 管理后台前端打包脚本
+# ====================================================
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
+WEB_DIR="${PROJECT_ROOT}/worklog-web"
+DEPLOY_DIR="${PROJECT_ROOT}/deploy"
+
+# 颜色定义
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+echo -e "${GREEN}=========================================${NC}"
+echo -e "${GREEN}打包管理后台前端 (worklog-web)${NC}"
+echo -e "${GREEN}=========================================${NC}"
+
+# 检查项目目录
+if [ ! -d "${WEB_DIR}" ]; then
+ echo -e "${RED}ERROR: 找不到项目目录 ${WEB_DIR}${NC}"
+ exit 1
+fi
+
+cd "${WEB_DIR}"
+
+# 检查 node_modules
+if [ ! -d "node_modules" ]; then
+ echo -e "${YELLOW}安装依赖...${NC}"
+ npm install
+fi
+
+# 清理旧的构建产物
+echo -e "${YELLOW}清理旧的构建产物...${NC}"
+rm -rf dist
+
+# 构建
+echo -e "${YELLOW}构建生产版本...${NC}"
+npm run build
+
+# 检查构建结果
+if [ ! -d "dist" ]; then
+ echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}"
+ exit 1
+fi
+
+# 计算 dist 目录大小
+DIST_SIZE=$(du -sh dist | cut -f1)
+DIST_FILES=$(find dist -type f | wc -l)
+
+echo -e "${GREEN}=========================================${NC}"
+echo -e "${GREEN}构建完成!${NC}"
+echo -e "${GREEN}=========================================${NC}"
+echo -e "输出目录: ${WEB_DIR}/dist"
+echo -e "总大小: ${DIST_SIZE}"
+echo -e "文件数量: ${DIST_FILES}"
+echo ""
+echo -e "部署目录: ${DEPLOY_DIR}/worklog-web/"
+echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-web/"
diff --git a/worklog-api/src/main/resources/env.properties.example b/scripts/env.properties.example
similarity index 100%
rename from worklog-api/src/main/resources/env.properties.example
rename to scripts/env.properties.example
diff --git a/deploy/scripts/init_db.sh b/scripts/init_db.sh
similarity index 100%
rename from deploy/scripts/init_db.sh
rename to scripts/init_db.sh
diff --git a/deploy/scripts/restart.sh b/scripts/restart.sh
similarity index 100%
rename from deploy/scripts/restart.sh
rename to scripts/restart.sh
diff --git a/deploy/scripts/start.sh b/scripts/start.sh
similarity index 96%
rename from deploy/scripts/start.sh
rename to scripts/start.sh
index 76065c5..2ac49a6 100755
--- a/deploy/scripts/start.sh
+++ b/scripts/start.sh
@@ -8,7 +8,6 @@ APP_NAME="worklog-api"
APP_JAR="worklog-api-1.0.0.jar"
APP_HOME="/opt/worklog/${APP_NAME}"
APP_JAR_PATH="${APP_HOME}/lib/${APP_JAR}"
-MAIN_CLASS="com.wjbl.worklog.WorklogApplication"
# Classpath 配置(lib 目录下所有 JAR + conf 目录)
CLASSPATH="${APP_HOME}/lib/*:${APP_HOME}/conf"
@@ -41,6 +40,9 @@ load_properties "${APP_HOME}/conf/env.properties"
# 2. 加载服务个性化配置(覆盖同名参数)
load_properties "${APP_HOME}/conf/service.properties"
+# 主启动类(从 service.properties 读取,默认值)
+MAIN_CLASS=${MAIN_CLASS:-com.wjbl.worklog.WorklogApplication}
+
# JVM 配置(从环境变量读取,如果未设置则使用默认值)
JVM_XMS=${JVM_XMS:-512m}
JVM_XMX=${JVM_XMX:-1024m}
diff --git a/deploy/scripts/status.sh b/scripts/status.sh
similarity index 100%
rename from deploy/scripts/status.sh
rename to scripts/status.sh
diff --git a/deploy/scripts/stop.sh b/scripts/stop.sh
similarity index 100%
rename from deploy/scripts/stop.sh
rename to scripts/stop.sh
diff --git a/worklog-api/src/main/assembly/assembly.xml b/worklog-api/src/main/assembly/assembly.xml
index 85db144..1b34dfe 100644
--- a/worklog-api/src/main/assembly/assembly.xml
+++ b/worklog-api/src/main/assembly/assembly.xml
@@ -31,7 +31,7 @@
- ${project.basedir}/../deploy/scripts
+ ${project.basedir}/../scripts
bin
start.sh
@@ -43,17 +43,24 @@
unix
-
+
+
+ ${project.basedir}/../scripts
+ conf
+
+ env.properties
+
+
+
+
${project.basedir}/src/main/resources
conf
application.yml
- application.yml.example
bootstrap.yml
logback-spring.xml
- env.properties.example
- service.properties.example
+ service.properties
diff --git a/worklog-api/src/main/resources/env.properties b/worklog-api/src/main/resources/env.properties
deleted file mode 100644
index a1cee8a..0000000
--- a/worklog-api/src/main/resources/env.properties
+++ /dev/null
@@ -1,86 +0,0 @@
-# ====================================================
-# 工作日志服务平台 - 统一环境配置
-# 说明:所有服务共用的环境配置,包括数据库、缓存、注册中心等
-# ====================================================
-
-# ==================== 数据库配置 ====================
-DB_HOST=localhost
-DB_PORT=3306
-DB_NAME=worklog
-DB_USERNAME=worklog
-DB_PASSWORD=Wlog@123
-DB_URL=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
-
-# 连接池配置
-DB_POOL_MIN_IDLE=5
-DB_POOL_MAX_SIZE=20
-DB_POOL_CONNECTION_TIMEOUT=30000
-DB_POOL_IDLE_TIMEOUT=600000
-DB_POOL_MAX_LIFETIME=1800000
-
-# ==================== Redis 配置 ====================
-REDIS_HOST=localhost
-REDIS_PORT=6379
-REDIS_PASSWORD=zjf@123456
-REDIS_DATABASE=0
-REDIS_TIMEOUT=5000
-
-# Redis 连接池配置
-REDIS_POOL_MAX_ACTIVE=8
-REDIS_POOL_MAX_WAIT=-1
-REDIS_POOL_MAX_IDLE=8
-REDIS_POOL_MIN_IDLE=0
-
-# ==================== Nacos 配置 ====================
-NACOS_SERVER_ADDR=localhost:8848
-NACOS_NAMESPACE=worklog-dev
-NACOS_GROUP=DEFAULT_GROUP
-NACOS_USERNAME=nacos
-NACOS_PASSWORD=nacos
-
-# ==================== 文件上传配置 ====================
-FILE_UPLOAD_MAX_SIZE=50MB
-FILE_UPLOAD_MAX_REQUEST_SIZE=100MB
-FILE_STORAGE_PATH=./uploads
-
-# ==================== 腾讯云 COS 配置 ====================
-COS_ENABLED=false
-COS_APP_ID=1308258046
-COS_SECRET_ID=AKIDukKfkY5LK2SbU6QTM7csugCSSDjzyiDS
-COS_SECRET_KEY=0lHXYIn20jDRP7ZlhNnyub3GEwObZHjw
-COS_BUCKET_NAME=test-1308258046
-COS_BUCKET_HOST=https://test-1308258046.cos.ap-beijing.myqcloud.com
-COS_REGION=ap-beijing
-
-# ==================== 日志配置 ====================
-# 日志路径(扁平目录结构,无子目录)
-LOG_PATH=./logs
-
-# 日志级别
-LOG_LEVEL_ROOT=INFO
-LOG_LEVEL_APP=DEBUG
-
-# 日志文件配置
-LOG_FILE_MAX_SIZE=100MB
-LOG_FILE_MAX_HISTORY=30
-
-# ==================== JVM 配置 ====================
-JVM_XMS=512m
-JVM_XMX=1024m
-JVM_METASPACE_SIZE=128m
-JVM_MAX_METASPACE_SIZE=256m
-
-# GC 配置
-JVM_GC_TYPE=G1GC
-JVM_MAX_GC_PAUSE_MILLIS=200
-
-# ==================== 业务配置 ====================
-# Token 配置
-TOKEN_EXPIRE_TIME=86400
-TOKEN_PREFIX=auth:token:
-
-# 日志内容限制
-WORKLOG_MAX_CONTENT_LENGTH=2000
-
-# 允许的上传文件扩展名
-UPLOAD_ALLOWED_EXTENSIONS=jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx
diff --git a/worklog-api/src/main/resources/service.properties b/worklog-api/src/main/resources/service.properties
index a811892..3b62bcf 100644
--- a/worklog-api/src/main/resources/service.properties
+++ b/worklog-api/src/main/resources/service.properties
@@ -13,6 +13,10 @@ INSTANCE_NAME=${APP_NAME}
# 租户标识(多租户场景使用,用于路由,单租户留空)
TENANT_ID=
+# ==================== 服务启动配置 ====================
+# 主启动类(瘦JAR模式必须配置)
+MAIN_CLASS=com.wjbl.worklog.WorklogApplication
+
# ==================== 服务端口配置 ====================
# 服务端口(可覆盖 application.yml 中配置)
SERVER_PORT=8080