950890a7340a041adb7d94275009bce1fedaeb82
Deploy olons-server production / deploy (push) Failing after 35s
Olons Server
移动端任务与账户平台后端。项目是独立应用,业务数据以 MySQL olons_admin 库中的 hg_* 表为唯一事实源。
项目现在采用前后端一体目录结构:web/ 是 Vue 3 + Vite 移动端,Go 服务在生产环境通过网站根路径 / 提供构建后的静态资源,/v1/ 继续提供业务 API。
当前接口
POST /v1/auth/registerPOST /v1/auth/loginPOST /v1/auth/logoutGET /v1/mePATCH /v1/me/avatarPUT /v1/me/passwordPUT /v1/me/trade-passwordGET /v1/homeGET /v1/bannersGET /v1/contents/{content_key}GET /v1/member-levelsGET /v1/task-hallsGET /v1/tasks/eligibilityGET /v1/tasks/statsPOST /v1/task-orders/claimGET /v1/task-ordersGET /v1/task-orders/{order_id}POST /v1/task-orders/{order_id}/submissionsGET /v1/manual-productsGET /v1/manual-products/{product_id}GET /v1/payment-accountsPOST /v1/payment-accountsPUT /v1/payment-accountsGET /v1/payment-accounts/detailsPOST /v1/withdrawal-orders/quotePOST /v1/withdrawal-ordersGET /v1/withdrawal-ordersGET /v1/withdrawal-orders/{order_id}GET /healthzGET /metrics
注册使用 hg_app_member 作为账户主档,并在同一事务中创建 hg_app_member_profile 和 hg_wallet_account 记录。登录按完整 mobile 查找会员,校验 bcrypt 密码后在 Redis 中创建独立会话。
启动配置
核心环境变量:
OLONS_SERVER_CONFIG=configs/olons_server.local.json
OLONS_SERVER_MYSQL_DSN='user:password@tcp(host:3306)/olons_admin?parseTime=true&charset=utf8mb4&loc=Local'
OLONS_SERVER_REDIS_ADDR='127.0.0.1:6379'
OLONS_SERVER_FINANCE_MASTER_KEY='<至少 32 个字符的固定资金安全密钥>'
OLONS_SERVER_API_KEYS='<API Key,多个以逗号分隔>'
finance_master_key 已在 JSON 配置中提供固定值,也可由 OLONS_SERVER_FINANCE_MASTER_KEY 覆盖。服务会从这个主密钥派生数据加密键和检索键,用于保护收款账户姓名、账号、银行卡预留手机号及取出快照等支付敏感信息。密钥必须与已有数据保持一致;会员登录手机号直接保存在 hg_app_member.mobile。
前端静态目录可通过 OLONS_SERVER_FRONTEND_DIR 覆盖,默认值为 web/dist。本地开发可分别启动前后端:
make web-install
make web-build
make run
生产镜像使用 Docker 多阶段构建自动安装前端依赖、构建 web/,并将 C 端产物部署到网站根路径 /。
请求头
X-API-Key: <api key>
X-Request-ID: <request id>
X-Device-ID: <optional device id>
服务采用单租户模式,登录仅按手机号查找账号,不读取或接受租户环境变量。现有数据库中的 tenant_id 字段仅作为兼容字段保留,新注册数据固定写入 0。
验证
make test
make build
前后端完整对接契约见 docs/移动端任务与账户平台前后端对接文档.md,已实现的注册登录简版契约见 docs/注册登录对接文档.md。