XuqmGroup-Symbolicator/README.md

45 行
1.8 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# Xuqm Symbolicator
BugCollect 的独立符号化服务,提供 React Native、Electron、Vue、Android、iOS 和 Flutter
堆栈处理入口。服务只负责符号化,不保存上传内容。
## 运行基线
- 生产容器Node.js 24 LTS
- 本地开发Node.js 22.22 及以上受支持版本
- 安装:`npm ci`
- 构建:`npm run build`
- 测试:`npm test`
- 完整检查:`npm run check`
## HTTP 契约
- `GET /health`:返回服务状态。
- `POST /api/symbolicate`:保持现有 JSON 请求与 JSON 响应结构。
- 配置 `SYMBOLICATOR_API_KEY` 后,请求必须通过 `x-api-key` 请求头认证;未配置时保持
既有开发模式行为。
- 请求体最大 105 MiB。业务字段仍分别限制堆栈 100 KB、Sourcemap 50 MB 和
ProGuard/R8 mapping 100 MB,超限请求不会进入解析器。
服务不提供 multipart 文件上传接口。`multer` 仅保留为现有依赖契约并升级至安全版本,
不得在未定义文件数量、单文件大小、总大小和临时文件清理规则前直接启用。
## 容器
```bash
docker build -t xuqm-symbolicator:local .
docker run --rm -p 3000:3000 xuqm-symbolicator:local
```
镜像使用锁文件安装、多阶段构建和非 root 用户运行。健康检查访问容器内
`http://127.0.0.1:3000/health`
当前 Linux 容器不内置 macOS `atos` 或 Flutter SDK。因此 iOS/Flutter 请求接口仍保留,
但对应外部工具必须由实际部署环境提供;不能用 TypeScript 构建结果替代这两类运行验证。
## 安全边界
- 日志不得输出 API Key、请求体、Sourcemap、mapping、堆栈内容或宿主文件路径。
- 不得把来自请求的路径或命令参数拼接进 shell;现有外部工具调用统一使用参数数组。
- 依赖变更必须同步提交 `package-lock.json` 并使用 `npm ci` 验证。