一、超管端设计优化 - 文档管理SOP体系建立,docs目录重组 - 统一用户管理:跨租户全局视角,合并用户管理+公众用户 - 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作) - 菜单精简:移除评委管理/评审规则/通知管理 - Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一 二、UGC绘本创作社区P0 - 数据库:10张新表(user_works/user_work_pages/work_tags等) - 子女账号独立化:Child升级为独立User,家长切换+独立登录 - 用户作品库:CRUD+发布审核,8个API - AI创作流程:提交→生成→保存到作品库,4个API - 作品广场:首页改造为推荐流,标签+搜索+排序 - 内容审核(超管端):作品审核+作品管理+标签管理 - 活动联动:WorkSelector作品选择器 - 布局改造:底部5Tab(发现/创作/活动/作品库/我的) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
124 lines
3.4 KiB
JavaScript
124 lines
3.4 KiB
JavaScript
/**
|
||
* PM2 进程管理器配置文件
|
||
*
|
||
* 环境区分说明:
|
||
* 1. 通过 --env 参数指定环境:pm2 start ecosystem.config.js --env <环境名>
|
||
* 2. 环境配置会自动合并:基础配置(env) + 环境特定配置(env_<环境名>)
|
||
* 3. 测试环境: --env test (端口 3001, 2个实例)
|
||
* 4. 生产环境: --env production (端口 3000, 最大实例数)
|
||
*/
|
||
|
||
const baseAppConfig = {
|
||
script: './dist/src/main.js',
|
||
|
||
// 日志文件路径
|
||
error_file: './logs/pm2-error.log',
|
||
out_file: './logs/pm2-out.log',
|
||
log_file: './logs/pm2-combined.log',
|
||
|
||
// 日志日期格式
|
||
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
|
||
|
||
// 合并日志(所有实例的日志合并到一个文件)
|
||
merge_logs: true,
|
||
|
||
// 自动重启配置
|
||
autorestart: true,
|
||
|
||
// 监听文件变化(生产环境建议关闭)
|
||
watch: false,
|
||
|
||
// 忽略监听的文件/目录
|
||
ignore_watch: ['node_modules', 'logs', 'dist', '.git', '*.log'],
|
||
|
||
// 最大内存限制(超过后自动重启)
|
||
max_memory_restart: '1G',
|
||
|
||
// 最小正常运行时间(秒),小于此时间重启不计入重启次数
|
||
min_uptime: '10s',
|
||
|
||
// 最大重启次数(在 min_uptime 时间内)
|
||
max_restarts: 10,
|
||
|
||
// 重启延迟(毫秒)
|
||
restart_delay: 4000,
|
||
|
||
// 等待就绪信号的时间(毫秒)
|
||
wait_ready: true,
|
||
listen_timeout: 10000,
|
||
|
||
// 优雅关闭超时时间(毫秒)
|
||
kill_timeout: 5000,
|
||
|
||
// 应用启动后的等待时间(毫秒)
|
||
shutdown_with_message: true,
|
||
|
||
// 源代码映射支持
|
||
source_map_support: true,
|
||
|
||
// 实例间负载均衡策略
|
||
instance_var: 'INSTANCE_ID',
|
||
};
|
||
|
||
module.exports = {
|
||
apps: [
|
||
{
|
||
...baseAppConfig,
|
||
|
||
// 生产环境应用
|
||
name: 'competition-api',
|
||
instances: 2,
|
||
exec_mode: 'cluster',
|
||
|
||
env_file: '.env.production',
|
||
env: {
|
||
NODE_ENV: 'production',
|
||
PORT: 3234,
|
||
},
|
||
},
|
||
{
|
||
...baseAppConfig,
|
||
|
||
// 测试环境应用
|
||
name: 'competition-api-test',
|
||
instances: 2,
|
||
exec_mode: 'cluster',
|
||
|
||
env_file: '.env.test',
|
||
env: {
|
||
NODE_ENV: 'test',
|
||
PORT: 3234,
|
||
},
|
||
},
|
||
],
|
||
|
||
// ============================================
|
||
// 部署配置(用于 PM2 自动化部署)
|
||
// 使用方式: pm2 deploy ecosystem.config.js <环境名>
|
||
// ============================================
|
||
deploy: {
|
||
// 测试环境部署配置
|
||
test: {
|
||
user: 'deploy',
|
||
host: ['119.29.229.174'],
|
||
ref: 'origin/develop',
|
||
repo: 'git@github.com:your-username/competition-management-system.git',
|
||
path: '/var/www/competition-management-test',
|
||
'post-deploy':
|
||
'cd backend && pnpm install && pnpm run build && pm2 reload ecosystem.config.js --only competition-api-test',
|
||
'pre-setup': 'apt-get update && apt-get install -y git',
|
||
},
|
||
// 生产环境部署配置
|
||
production: {
|
||
user: 'deploy',
|
||
host: ['your-prod-server-ip'],
|
||
ref: 'origin/master',
|
||
repo: 'git@github.com:your-username/competition-management-system.git',
|
||
path: '/var/www/competition-management',
|
||
'post-deploy':
|
||
'cd backend && pnpm install && pnpm run build && pm2 reload ecosystem.config.js --only competition-api',
|
||
'pre-setup': 'apt-get update && apt-get install -y git',
|
||
},
|
||
},
|
||
};
|