3.1 KiB
3.1 KiB
Web 端部署与持久化(app/server/data)
存储口径
| 形态 | 数据位置 | 说明 |
|---|---|---|
| 桌面端 | %USERPROFILE%\.aps(Linux/macOS ~/.aps) |
不变,仍读写本机文件 |
| Web 端 | 容器内 /app/server/data(PVC 持久卷) |
项目/会话/消息(SQLite master.db)、世界状态、知识库、导出等全部落此目录 |
路径解析优先级:APS_HOME >(desktop→~/.aps;web→APS_DATA_DIR 或仓库 server/data)。
镜像已内置 APS_MODE=web、APS_DATA_DIR=/app/server/data(见 Dockerfile)。
常见故障:创建项目失败(写入 500)
根因:K8s 挂载的 PVC 目录默认属 root:root,而容器以非 root 用户 aps(uid/gid 10001)运行,数据目录不可写,所有写入(创建项目、排产、导入)都会失败。
修复:Deployment 必须配置 securityContext(完整清单见 packaging/k8s/deployment.yaml):
spec:
template:
spec:
securityContext:
runAsUser: 10001
runAsGroup: 10001
fsGroup: 10001
fsGroupChangePolicy: OnRootMismatch
自查:GET /api/health 返回 storage 字段(dataDir / writable / remedy);
writable=false 时服务启动日志会输出 [APS][FATAL] 数据目录不可写 …。
Web 端演示数据
镜像内置 APS_WEB_DEMO_SEED=1:某租户首次打开工作区且没有任何项目时,
自动播种一套完整演示项目「演示项目 · 智能控制器装配排产」:
- 固定产线层:2 车间 / 3 产线 / 13 工位 / 5 工序,3 款产品 BOM + 工艺路线 + 换型矩阵
- 柔性能力池:4 类共线产品、7 个能力池、可调配压接机与模具
- 业务单据:7 张销售订单(含 VIP 急单)、10 张柔性订单、3 张预测订单、30 天班次日历
- 一段引导式演示对话 + 2 条示例文件记录
特性:
- 按租户隔离:世界数据在
server/data/tenants/<租户>/projects/<项目>/world.json - 幂等:播种后落
demo-seeded.ok标记;用户删光演示项目也不会回填 - 可关闭:环境变量
APS_WEB_DEMO_SEED=0;桌面端与测试默认不播种
手动补播(如线上已有租户想要演示数据):
# 容器内执行
python scripts/seed_web_demo.py --tenant <JMS租户uuid> --user-id 1001
# 已有项目时强制再播一套
python scripts/seed_web_demo.py --tenant <JMS租户uuid> --force
项目文件上传
侧栏「文件」区支持两种记录:
- 上传:
POST /api/projects/{id}/files/upload(multipart,多文件;单文件 ≤50MB、单次 ≤20 个)。 字节持久化在数据目录tenants/<租户>/projects/<项目>/uploads/(platform 租户为projects/<项目>/uploads/),随 PVC / 本机~/.aps持久化;同时登记项目文件记录。 - 登记:仅元数据记录(无字节),下载返回 404。
已上传文件在侧栏可点击下载(GET /api/project-files/{fileId}/download);
删除文件记录会联动清理磁盘字节。viewer 角色上传返回 403。