PLATFORM OPERATOR MANUAL

Aiteone 3.11.1
平台管理员手册

覆盖平台运营、用户与活动治理、俱乐部、发现内容、媒体、安全、完整备份、恢复计划、1Panel 部署与应急处理。

Build 20260906.312Schema 481Panel / Docker Compose

01 · 管理员快速上手

登录地址

生产环境通常为 https://app.81on.com/admin。管理员邮箱和初始密码来自服务器 .env 的 ADMIN_EMAIL 与 ADMIN_PASSWORD。真实密码不得写入项目、文档或压缩包。

第一次登录

  1. 确认版本为 3.11.1、构建号 20260906.312。
  2. 确认数据库、worker、存储均正常。
  3. 检查总管理员、岗位权限和最近登录 IP。
  4. 创建并验证一份完整备份,再下载到服务器之外。
  5. 检查隐私条款、页面文案、运动类型、活动类型、专项标准。
  6. 检查微信 AppID/Secret、订阅消息和小程序码。
绝对禁止

生产服务器不要执行 docker compose down -v,不要删除 PostgreSQL、普通媒体、活动相册或系统备份 volume。

02 · 角色与权限边界

角色主要职责权限边界
平台总管理员系统、数据、安全与岗位治理备份恢复、权限、系统配置和高风险处置
平台运营用户、活动、俱乐部与内容运营只使用被授予的后台模块,不能恢复数据库或管理超级管理员
活动组织者自己相关的活动发布、名单、分组、签到、通知、相册和复盘
俱乐部管理员本俱乐部成员与活动审批、标签、公告、邀请、模板、固定计划和本俱乐部数据
参与者报名与参加查看名单和已发布分组;不能管理他人报名

采用最小权限。权限、封禁、删除、备份恢复和批量修改必须填写原因并进入审计。

03 · 运营总览

总览的目标是回答“今天先做什么”,不是只展示累计数字。

优先处理

  • 数据库、worker、存储或备份异常
  • 失败任务与重复失败提醒
  • 举报、异常登录和高风险修改
  • 报名审批、取消申请和临近活动
  • 俱乐部审批与过期群二维码

持续观察

  • 新增、活跃与资料完成率
  • 活动数、报名数、满员率、到场率
  • 分享访问、独立访客、报名转化
  • 发现曝光、详情、收藏和入会
  • 媒体容量、零引用和备份健康

非零数值应进入对应用户、活动、俱乐部、任务或媒体列表。运营判断至少结合 7 天和 30 天趋势。

04 · 用户中心与 360° 档案

筛选和排序

按昵称、邮箱、微信关联、角色、状态、城市、最后登录、资料完整度和 IP 查找;支持登录时间、位置、角色排序及分页。

档案内容

身份与资料

头像、昵称、性别、年龄段、城市、坐标、运动偏好和水平。

业务关系

发布、报名、到场、关注、粉丝、俱乐部、点评、收藏和媒体。

安全轨迹

真实 IP、最后登录位置、会话、登录事件、设备线索与审计。

编辑与处置规则

  • 保存修改前后值、操作者、时间和理由。
  • 角色、封禁、强制下线和 IP 屏蔽属于高风险操作。
  • 删除空用户前确认没有报名、活动、俱乐部、媒体、消息和审计关联。
  • 存在历史关系的用户优先停用或匿名化,不做级联硬删除。
  • 看到 172.x Docker 地址时检查可信代理链和请求头。

05 · 活动中心

筛选维度

关键词、运动、活动类型、地区、场地、日期、报名状态、活动状态、可见范围、俱乐部、推荐状态和容量。排序支持活动时间、发布时间、报名进度、访问、收藏和分享转化。

总管理员辅助修改

可纠正日期、场地、坐标、分类、图片、报名规则与可见范围。保存必须记录原因,并在重要修改时通知组织者。

  • 推荐位设置起止时间、优先级和原因。
  • 查看访问、收藏、分享来源和报名转化。
  • 生成或检查 H5 二维码、小程序码与朋友圈追踪入口。
  • 检查重复活动、长期未处理审批和即将开始但信息不完整的活动。
  • 复制活动只生成可编辑草稿,不直接发布。
对象级权限

活动管理员只能管理自己有关的活动;平台运营的辅助修改来自后台岗位授权,并必须审计。

06 · 俱乐部中心

俱乐部 360° 包含品牌、所有者、管理员、会员状态、邀请、公告、活动、模板、固定计划、相册、复盘、发现曝光与入会转化。

重点核对

  • 公开页清楚说明主要运动、地区、常见时间、会员权益和加入方式。
  • 加入政策只有一个业务来源:自由、审批、仅邀请或暂停。
  • 微信群二维码有效,管理员微信可用。
  • 俱乐部专属活动不会越权公开。
  • 临时成员不计入正式用户,也不自动获得内部权限。
  • 固定计划生成草稿;相同计划和日期不得产生多份草稿。

违规时优先暂停招募、隐藏发现曝光、冻结二维码或停用俱乐部,同时保留证据、原因和申诉空间,不直接删除历史。

07 · 发现内容运营中心

统一管理活动、俱乐部、场馆和本地生活内容。栏目、文案、地图图层和优先显示方式都可后台配置。

新增地点

  1. 选择类型和主要运动。
  2. 在地图选点确认坐标,不猜测经纬度。
  3. 填写名称、地区、地址、电话、网站和预约链接。
  4. 上传图片或使用可信 HTTPS URL;富文本只允许安全标签。
  5. 保存来源、采集时间、验证状态和复核日期。

批量导入与质量治理

  • 先用少量 CSV 试导;失败行返回行号和明确原因。
  • 逐行隔离处理,不因一行错误回滚全部。
  • 合并重复地点前核对坐标、地址、来源和关联。
  • 关闭、搬迁或存疑地点进入复核队列。
  • 推荐提升必须有时间范围和运营理由。

08 · 页面内容、功能开关与业务字典

页面文案

首页 Logo、Hero、标题、按钮、空状态、俱乐部说明和隐私提示均可后台维护。发布前同时预览 H5 和小程序。

功能开关

包括 H5 微信登录、Google 登录、发现栏目、地图图层、签到、活动相册、俱乐部装修、公告日历和赞助内容。关闭功能时 API 也必须拒绝操作,不能只隐藏按钮。

运动和水平

  • 停用运动后,个人偏好与水平选择不再出现。
  • 运动 Emoji、颜色和排序两端一致。
  • 运动父项与活动子项组成完整类型。
  • 统一等级为初学、初级、初中级、中级、中高级、高级、竞技。
  • NTRP、开球网、DUPR 等专项标准可增删改和启停。
  • 活动填写专项要求时,详情优先显示专项标准。

节假日与广告

节假日可批量录入名称、日期和详情;没有节假日时可投放符合日期、地区、运动和页面位置的赞助内容。广告必须有标识、起止时间和曝光点击统计。

09 · 消息、订阅提醒和后台任务

站内消息按活动、报名、组织者、俱乐部和平台分类,支持分页、回复、清空与撤销。操作反馈应使用服务器最终状态,避免超时后显示失败但实际已完成。

Worker 管理

worker 负责活动提醒、邮件、微信订阅、媒体处理和备份校验。后台显示等待、执行、成功、失败、重试次数和错误摘要。

  1. 先判断配置、网络、第三方或数据错误。
  2. 修复根因后重试。
  3. 确认无需重试时保留记录并结案。
  4. 同类持续失败触发运营告警。

10 · 数据、安全与媒体

后台分为普通媒体、活动相册、备份恢复三个区域。普通媒体按用途、上传者、时间、大小、引用数和状态筛选;活动相册查看上传者、处理、授权、精选、收藏、举报和删除申请。

零引用清理

  1. 先创建并验证完整备份。
  2. 筛选引用为 0,排除刚上传尚未绑定的文件。
  3. 抽查缩略图、文件名、上传者和时间。
  4. 优先回收队列,不直接物理删除。
  5. 清理后抽查头像、活动、俱乐部、富文本和相册。

11 · 隐私、安全、IP 与审计

隐私说明

后台维护版本、摘要、正文、启用和生效时间。内容说明头像、昵称、邮箱、位置、备注、相册与日志用途。版本变化时可要求重新确认。

真实 IP

1Panel/OpenResty → Caddy → API 必须传递 X-Real-IP、X-Forwarded-For 和 X-Forwarded-Proto。API 只信任可信代理。

审计

用自然语言展示谁、何时、从何 IP、对哪个对象、做了什么、修改前后和原因。备份恢复、权限、封禁、删除、批量修改和密钥迁移必须记录。

联系方式密钥

CONTACT_ENCRYPTION_KEY 至少 32 位并长期保存。升级沿用;轮换时配置旧密钥,完成迁移验证后再清空。

12 · 完整备份、校验与恢复

完整备份包含

  • PostgreSQL 数据库 dump
  • 普通上传媒体
  • 活动相册独立媒体
  • 版本、schema、校验和及元数据

标准流程

  1. 创建备份并填写用途。
  2. 等待任务完成并校验。
  3. 关键版本做临时数据库恢复验证。
  4. 下载一份到服务器之外。
  5. 恢复前生成计划,检查版本、schema、容量和校验。
  6. 先自动备份当前数据,再恢复、验证和切换。
./scripts/backup-db.sh
RESTORE_CONFIRM=AITEONE_RESTORE ./scripts/restore-backup.sh backups/备份目录
./scripts/smoke-test.sh http://127.0.0.1:8100
禁止直接覆盖生产库

跨版本恢复必须使用项目脚本。直接对已有新版表执行 pg_restore --clean,可能被外键依赖阻断并留下半恢复状态。

建议保留 7 份每日、4 份每周、6 份每月备份;升级、批量导入和媒体清理前额外长期保留。

13 · 微信、邮箱和第三方登录

微信服务器配置

WECHAT_MINI_APP_ID=你的AppID
WECHAT_MINI_APP_SECRET=你的Secret
WECHAT_REMINDER_ACTIVITY_KEY=thing1
WECHAT_REMINDER_TIME_KEY=time2
WECHAT_REMINDER_VENUE_KEY=thing3
WECHAT_REMINDER_NOTE_KEY=thing4

AppID 与开发者工具工程一致,Secret 只在服务器保存。订阅模板在微信公众平台“小程序 → 功能 → 订阅消息”选择,字段与 worker 配置一致。

头像昵称与位置

使用微信当前开放的头像选择与昵称输入组件,不能静默读取。首次主动提示,报名时强制完善。位置由用户主动选择,失败时默认东京;签到仅在点击后定位。

Google 与 H5 微信登录

Google 回调登记为 https://app.81on.com/api/v1/auth/oauth/google/callback。H5 微信 AppID/Secret 未取得时在后台关闭入口,API 同时阻止发起流程。

14 · 1Panel 首次部署

mkdir -p /opt/aiteone
cd /opt/aiteone
unzip Aiteone-3.11.1-build-20260906.312-1Panel.zip
cd Aiteone
cp .env.1panel.example .env
nano .env
chmod +x scripts/*.sh
./scripts/preflight.sh
docker compose up -d --build --wait
./scripts/smoke-test.sh http://127.0.0.1:8100

在 1Panel 创建 HTTPS 网站,反向代理到 http://127.0.0.1:8100。需要传递 Host、真实 IP、Forwarded-For 和协议。

client_max_body_size 1100m;
proxy_request_buffering off;
proxy_connect_timeout 60s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;

备份导入的 1100MB 限制要同时配置 Aiteone 网关和 1Panel 外层代理。/uploads/ 使用 add_header Cross-Origin-Resource-Policy "cross-origin" always;。

15 · 升级、回滚与双实例

原地升级

  1. 创建、校验并下载完整备份。
  2. 保留服务器原 .env。
  3. 替换代码,不覆盖环境文件和 volume。
  4. 更新 APP_VERSION=3.11.1 与 BUILD_ID=20260906.312。
  5. 执行预检、重新构建和 smoke test。
  6. 核对 schema 48。

同机双实例

项目生产测试示例
目录/opt/aiteone/Aiteone/opt/aiteone311-test/Aiteone
项目名aiteoneaiteone311test
端口81008300
域名app.81on.comtest-app.81on.com

项目名决定容器、网络和 volume 前缀。两套系统的项目名、端口、数据库、媒体、域名和密钥全部隔离。

16 · 常见故障与应急

数据库健康异常

docker compose ps
docker compose logs --tail=200 postgres
docker compose logs --tail=200 api
docker compose exec -T postgres sh -c 'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Atc "SELECT COALESCE(MAX(version),0) FROM schema_migrations;"'

3.11.1 正常 schema 为 48。不能手工修改迁移版本号掩盖失败。

备份导入 413

同时检查 Caddy、1Panel OpenResty/Nginx 与 MAX_BACKUP_UPLOAD_BYTES。

图片外网打不开

核对 volume、/uploads/* 路由、HTTPS、响应状态和 CORP 头。Docker volume 内部路径不是外网 URL。

openid 错误

核对工程 AppID 与服务器 AppID/Secret,清除开发者工具缓存。公共首页应降级打开,不因静默登录失败阻断。

服务不可用

  1. 暂停高风险写入和批量任务。
  2. 保存日志、版本、时间与用户现象。
  3. 确认数据库和 volume 仍存在。
  4. 重启单个异常服务,不删除 Compose 数据。
  5. 必要时按已验证备份执行恢复计划。

17 · 管理员检查清单

每日

  • 数据库、worker、存储和失败任务正常
  • 查看举报、异常登录与高风险审计
  • 处理内容复核和运营待办
  • 抽查临近活动的信息完整性

每周

  • 验证至少一份完整备份
  • 检查媒体增长、零引用和转码失败
  • 分析分享、报名、到场、收藏与发现转化
  • 检查过期广告、群二维码和推荐位
  • 复核后台岗位与长期会话

每月与上线前

  • 保存异地备份并做恢复演练
  • 复核隐私、密钥、证书和第三方回调
  • 核对版本 3.11.1、build 20260906.312、schema 48
  • 验收 H5、小程序、俱乐部三种视角和后台
  • 确认备份可创建、校验和下载