fix(identity-service): 更换 npm 镜像为华为云解决超时问题

- npmmirror CDN 超时 (EIDLETIMEOUT)
- 改用 mirrors.huaweicloud.com/repository/npm/
- 添加 disturl 配置加速 node 二进制下载

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Developer 2025-12-03 18:45:18 -08:00
parent eba8953e3a
commit db8350b2f5
7 changed files with 167 additions and 7 deletions

View File

@ -14,7 +14,13 @@
"Bash(flutter test:*)",
"Bash(flutter analyze:*)",
"Bash(findstr:*)",
"Bash(flutter pub get:*)"
"Bash(flutter pub get:*)",
"Bash(cat:*)",
"Bash(git add:*)",
"Bash(git commit -m \"$(cat <<''EOF''\nrefactor(infra): 统一微服务基础设施为共享模式\n\n- 将 presence-service 添加到主 docker-compose.yml端口 3011Redis DB 10\n- 更新 init-databases.sh 添加 rwa_admin 和 rwa_presence 数据库\n- 重构 admin-service/deploy.sh 使用共享基础设施\n- 重构 presence-service/deploy.sh 使用共享基础设施\n- 添加 authorization-service 开发指南文档\n\n解决多个微服务独立启动重复基础设施PostgreSQL/Redis/Kafka的问题\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git push)",
"Bash(git commit -m \"$(cat <<''EOF''\nfeat(admin-service): 增强移动端版本上传功能\n\n- 添加 APK/IPA 文件解析器自动提取版本信息\n- 支持从安装包自动读取 versionName 和 versionCode\n- 添加 adbkit-apkreader 依赖解析 APK 文件\n- 添加 plist 依赖解析 IPA 文件\n- 优化上传接口支持自动填充版本信息\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git commit:*)"
],
"deny": [],
"ask": []

View File

@ -0,0 +1,25 @@
{
"permissions": {
"allow": [
"Bash(tree:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git push)",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/backend/services/admin-service && npm run build 2>&1\")",
"Bash(npm run build:*)",
"Bash(npx tsc:*)",
"Bash(node node_modules/.bin/tsc:*)",
"Bash(docker build:*)",
"Bash(cat:*)",
"Bash(timeout:*)",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/backend/services/admin-service && npm install @nestjs/serve-static @types/multer --save 2>&1\")",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/backend/services/admin-service && npm install @nestjs/serve-static@^4.0.0 @types/multer --save 2>&1\")",
"Bash(ssh ceshi@rwa-colocation-1-lan:*)",
"Bash(node:*)",
"Bash(dir:*)",
"Bash(npm install:*)"
],
"deny": [],
"ask": []
}
}

View File

@ -8,8 +8,10 @@ FROM node:20-alpine AS builder
# Use Aliyun mirror for Alpine packages (China acceleration)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# Use taobao npm registry (China acceleration)
RUN npm config set registry https://registry.npmmirror.com
# Use China mirrors for npm (try Huawei mirror as fallback)
# Options: npmmirror.com, mirrors.huaweicloud.com, registry.npm.taobao.org
RUN npm config set registry https://mirrors.huaweicloud.com/repository/npm/ && \
npm config set disturl https://mirrors.huaweicloud.com/nodejs/
WORKDIR /app
@ -51,8 +53,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# Use taobao npm registry (China acceleration)
RUN npm config set registry https://registry.npmmirror.com
# Use Huawei npm mirror (more stable than npmmirror)
RUN npm config set registry https://mirrors.huaweicloud.com/repository/npm/
# Install production dependencies only
COPY package*.json ./

View File

@ -13,7 +13,31 @@
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" diff --stat)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" log --oneline -5)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add .)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add \"../admin-service/test/\")"
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add \"../admin-service/test/\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" status --short)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" commit -m \"$(cat <<''EOF''\nfeat(presence-service): 添加完整的测试套件和生产部署设施\n\n- 添加 165 个测试用例 (123 单元测试, 22 集成测试, 20 E2E测试)\n- 添加 Docker 多阶段构建和 docker-compose 生产部署配置\n- 添加完整的文档体系 (架构、API、开发、测试、部署)\n- 添加环境配置 (.env.development/production/test)\n- 添加部署脚本 (health-check, start-all, stop-service)\n- 修复 TypeScript 类型错误\n- 经 WSL2 验证所有生产部署命令测试通过\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" push)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add deploy.sh scripts/quick-test.sh scripts/rebuild-kafka.sh scripts/README.md)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" commit -m \"$(cat <<''EOF''\nfeat(presence-service): 添加完整的部署脚本\n\n- 添加 deploy.sh 主部署脚本 (build/start/stop/logs/migrate/test)\n- 添加 scripts/quick-test.sh API 快速测试脚本\n- 添加 scripts/rebuild-kafka.sh Kafka 重建脚本\n- 更新 scripts/README.md 文档\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" diff deploy.sh)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add deploy.sh)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" commit -m \"refactor(presence-service): 优化 deploy.sh 与主基础设施集成\n\n- 更新容器名和镜像名与项目规范一致\n- 添加 load_env 函数支持共享环境配置\n- 添加 up/logs-all/clean-all 命令\n- 使用动态 HEALTH_ENDPOINT\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" log --oneline -3)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" commit -m \"fix(presence-service): 修复 deploy.sh 自调用权限问题\n\n使用 bash \"\"$SCRIPT_DIR/deploy.sh\"\" 替代 $0 避免路径变化导致的权限问题\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" add .env.development .env.example .env.production Dockerfile docker-compose.yml scripts/README.md scripts/health-check.sh scripts/quick-test.sh scripts/rebuild-kafka.sh scripts/start-all.sh scripts/stop-service.sh src/main.ts)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services/presence-service\" commit -m \"$(cat <<''EOF''\nfix(presence-service): 统一端口配置为 3011\n\n修复端口配置不一致问题 (子项目使用3001主项目使用3011)\n- 更新 docker-compose.yml 端口映射和健康检查URL\n- 更新 Dockerfile EXPOSE 和 HEALTHCHECK 端口\n- 更新 .env.* 文件中的 APP_PORT\n- 更新 src/main.ts 默认端口\n- 更新所有脚本中的端口引用\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git push:*)",
"Bash(dir:*)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" status --short)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" add deploy.sh)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" commit -m \"$(cat <<''EOF''\nfix(deploy): 修复 health 命令使用正确的健康检查端点\n\n- 为每个微服务配置实际的健康检查端点路径\n- 大多数服务使用 /api/v1/health\n- backup-service 和 reward-service 使用 /health\n- leaderboard-service 使用 /api/health\n- 新增 presence-service (端口 3011)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" add presence-service/deploy.sh)",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" commit -m \"$(cat <<''EOF''\nfeat(presence-service): 添加 init-db 命令创建数据库\n\n- 添加 init-db 命令自动创建 rwa_presence 数据库\n- 创建数据库后自动运行 prisma db push 创建表结构\n- 更新帮助文档\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" commit -m \"$(cat <<''EOF''\nfeat(deploy): 添加 presence-service 到主部署脚本\n\n- 在 init-databases.sh 中添加 rwa_presence 数据库\n- 在 migrate 函数中添加 presence-service\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" commit -m \"$(cat <<''EOF''\nfix(deploy): 添加 admin-service 数据库 rwa_admin\n\n- 在 init-databases.sh 中添加 rwa_admin 数据库\n- 在 migrate 函数中添加 admin-service\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git -C \"c:/Users/dong/Desktop/rwadurian/backend/services\" push)"
],
"deny": [],
"ask": []

View File

@ -0,0 +1,39 @@
# 应用配置
NODE_ENV=development
PORT=3008
APP_NAME=reporting-service
# 数据库
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/rwadurian_reporting?schema=public"
# JWT (与 identity-service 共享密钥)
JWT_SECRET=your-super-secret-jwt-key-change-in-production
JWT_ACCESS_EXPIRES_IN=2h
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# Kafka
KAFKA_BROKERS=localhost:9092
KAFKA_GROUP_ID=reporting-service-group
KAFKA_CLIENT_ID=reporting-service
# 外部服务
IDENTITY_SERVICE_URL=http://localhost:3001
PLANTING_SERVICE_URL=http://localhost:3003
REFERRAL_SERVICE_URL=http://localhost:3004
REWARD_SERVICE_URL=http://localhost:3005
LEADERBOARD_SERVICE_URL=http://localhost:3007
WALLET_SERVICE_URL=http://localhost:3002
# 文件存储
FILE_STORAGE_PATH=./storage/reports
FILE_STORAGE_URL_PREFIX=http://localhost:3008/files
# 报表缓存过期时间(秒)
REPORT_CACHE_TTL=3600
# 报表快照保留天数
SNAPSHOT_RETENTION_DAYS=90

View File

@ -33,7 +33,33 @@
"Bash(node -e:*)",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/backend/services/identity-service && docker compose config --quiet && echo ''Docker Compose config is valid''\")",
"Bash(ls:*)",
"Bash(find:*)"
"Bash(find:*)",
"Bash(wsl --list --verbose)",
"Bash(wsl -d Ubuntu -- bash -c \"echo ''WSL Ubuntu is running'' && cat /etc/os-release | head -3\")",
"Bash(wsl:*)",
"Bash(git push)",
"Bash(cat:*)",
"Bash(done)",
"Bash(timeout:*)",
"Bash(npm run build:*)",
"Bash(test:*)",
"Bash(npx prisma migrate dev:*)",
"Bash(DATABASE_URL=\"postgresql://user:pass@localhost:5432/db\" npx prisma migrate:*)",
"Bash(npm install:*)",
"Bash(npm run prisma:generate:*)",
"Bash(echo:*)",
"Bash(git checkout:*)",
"Bash(git reset:*)",
"Bash(docker exec:*)",
"Bash(docker build:*)",
"Bash(if [ -f nul ])",
"Bash(then rm nul)",
"Bash(else echo \"nul file not found\")",
"Bash(fi)",
"Bash(docker-compose:*)",
"Bash(c:/Android/platform-tools/adb.exe shell ping:*)",
"Bash(curl:*)",
"Bash(DATABASE_URL=\"postgresql://postgres:password@localhost:5432/rwa_identity?schema=public\" npx prisma migrate:*)"
],
"deny": [],
"ask": []

View File

@ -0,0 +1,38 @@
{
"permissions": {
"allow": [
"Bash(cat:*)",
"Bash(tree:*)",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/frontend/mobile-upgrade && docker --version && docker compose version\")",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/frontend/mobile-upgrade && docker compose build --no-cache 2>&1\")",
"Bash(wsl -e bash -c \"cd /mnt/c/Users/dong/Desktop/rwadurian/frontend/mobile-upgrade && docker compose up -d 2>&1\")",
"Bash(wsl -e bash -c \"docker ps --filter ''name=rwadurian-mobile-upgrade'' && sleep 3 && curl -s http://localhost:3020/api/health 2>&1\")",
"Bash(wsl -e bash -c \"curl -s -o /dev/null -w ''%{http_code}'' http://localhost:3020/ && echo '' - Main page OK''\")",
"Bash(wsl -e bash -c:*)",
"Bash(git add:*)",
"Bash(git commit -m \"$(cat <<''EOF''\nfeat(mobile-upgrade): 添加 Docker 和 Nginx 自动化部署配置\n\n- 添加 Dockerfile 多阶段构建配置\n- 添加 docker-compose.yml 容器编排\n- 添加 nginx 配置(域名: update.szaiai.com\n- 添加 scripts 运维脚本deploy/build/start/stop/restart/logs/status/clean/health\n- 添加健康检查 API 端点 /api/health\n- 添加 .env.production 生产环境配置\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git push:*)",
"Bash(git commit -m \"$(cat <<''EOF''\nfix(mobile-upgrade): 修复 API URL 路径重复问题\n\n移除 NEXT_PUBLIC_API_URL 末尾的 /api避免请求路径变成 /api/api/v1/...\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(nslookup:*)",
"Bash(curl:*)",
"Bash(git commit:*)",
"Bash(find:*)",
"Bash(dir:*)",
"Bash(backend/services/admin-service/docker-compose.yml )",
"Bash(backend/services/admin-service/src/api/controllers/version.controller.ts )",
"Bash(backend/services/admin-service/src/api/controllers/download.controller.ts )",
"Bash(backend/services/admin-service/src/app.module.ts )",
"Bash(backend/services/admin-service/src/infrastructure/storage/file-storage.service.ts )",
"Bash(frontend/mobile-app/lib/core/updater/download_manager.dart )",
"Bash(frontend/mobile-app/scripts/ )",
"Bash(frontend/mobile-upgrade/src/domain/entities/version.ts )",
"Bash(frontend/mobile-upgrade/src/domain/repositories/version-repository.ts )",
"Bash(frontend/mobile-upgrade/src/infrastructure/repositories/version-repository-impl.ts )",
"Bash(frontend/mobile-upgrade/src/presentation/components/upload-modal.tsx)",
"Bash(findstr:*)",
"Bash(git pull:*)"
],
"deny": [],
"ask": []
}
}