library-picturebook-activity/backend/ecosystem.config.js
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理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>
2026-03-27 22:20:25 +08:00

124 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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',
},
},
};