From dff210462f261f498945d7846c55ac7685b94128 Mon Sep 17 00:00:00 2001 From: zhangyibo95 <690096405@qq.com> Date: Thu, 23 Jul 2026 11:01:55 +0800 Subject: [PATCH] =?UTF-8?q?update:=E4=BC=98=E5=8C=96=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E8=AE=AD=E7=BB=83=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc.md | 132 +++++- package.json | 5 + project.config.json | 8 + scripts/generate-match-schema.mjs | 440 ++++++++++++++++++ src/manifest.json | 8 + src/mock/index.js | 22 +- src/pages/training/components/BowData.vue | 2 +- src/pages/training/components/ScorePanel.vue | 4 +- src/pages/training/components/ScorePanel2.vue | 2 +- src/pages/training/components/ScoreResult.vue | 18 +- .../training/components/ShootProgress.vue | 12 +- .../training/components/TestDistance.vue | 2 +- .../components/TrainingDifficultyBadge.vue | 4 +- .../TrainingDifficultyPreviewCard.vue | 2 +- .../TrainingDifficultyStartButton.vue | 2 +- src/pages/training/difficulty.vue | 2 +- src/pages/training/index.vue | 47 +- src/pages/training/practise-one.vue | 4 +- .../training-difficulty-design/block-gold.png | Bin 2970 -> 0 bytes .../training-difficulty-design/block-gray.png | Bin 2056 -> 0 bytes .../static/training-difficulty-design/btn.png | Bin 12928 -> 0 bytes .../static/training-difficulty-design/cha.png | Bin 1098 -> 0 bytes .../training-difficulty-design/dao-icon.png | Bin 5606 -> 0 bytes .../static/training-difficulty-design/gou.png | Bin 838 -> 0 bytes .../training-difficulty-design/jiantou.png | Bin 1469 -> 0 bytes .../training-difficulty-design/lock.svg | 19 - .../training-difficulty-design/par-bg.png | Bin 142505 -> 0 bytes .../training-difficulty-design/par-star.png | Bin 12916 -> 0 bytes .../training-difficulty-design/result-bg.png | Bin 346588 -> 0 bytes .../result-c-bg.png | Bin 849 -> 0 bytes .../result-icon-1.png | Bin 2853 -> 0 bytes .../result-icon-2.png | Bin 2432 -> 0 bytes .../result-icon-3.png | Bin 2382 -> 0 bytes .../result-rice.png | Bin 1215 -> 0 bytes .../result-t-bg.png | Bin 50096 -> 0 bytes .../training-difficulty-design/result-up.png | Bin 719 -> 0 bytes .../text-icon-jcxl.png | Bin 3124 -> 0 bytes .../text-icon-jingzxl.png | Bin 22972 -> 0 bytes .../text-icon-jzxl.png | Bin 20684 -> 0 bytes .../text-icon-nlxl.png | Bin 20229 -> 0 bytes .../training-difficulty-design/text.png | Bin 1934 -> 0 bytes .../training-difficulty-design/unlock.svg | 19 - .../training/static/training-home/done.png | Bin 1011 -> 0 bytes .../training/static/training-home/img_16.png | Bin 184 -> 0 bytes .../training/static/training-home/img_17.png | Bin 192 -> 0 bytes .../training/static/training-home/img_19.png | Bin 4153 -> 0 bytes .../training/static/training-home/img_20.png | Bin 1937 -> 0 bytes .../training/static/training-home/img_21.png | Bin 5192 -> 0 bytes .../training/static/training-home/img_22.png | Bin 28165 -> 0 bytes .../training/static/training-home/img_28.png | Bin 468 -> 0 bytes .../training/static/training-home/img_3.png | Bin 4233 -> 0 bytes .../training/static/training-home/img_4.png | Bin 5882 -> 0 bytes .../training/static/training-home/img_5.png | Bin 3948 -> 0 bytes .../training/static/training-home/img_6.png | Bin 4172 -> 0 bytes .../training/static/training-home/img_7.png | Bin 173 -> 0 bytes .../static/training-home/jiezouxunlian.png | Bin 2206 -> 0 bytes .../static/training-home/jingzhunxunlian.png | Bin 2547 -> 0 bytes .../static/training-home/liliangxulian.png | Bin 1951 -> 0 bytes .../training/static/training-home/missed.png | Bin 351 -> 0 bytes .../static/training-home/nailixunlian.png | Bin 1987 -> 0 bytes src/utils/matchProtocol.js | 34 +- 61 files changed, 678 insertions(+), 110 deletions(-) create mode 100644 scripts/generate-match-schema.mjs delete mode 100644 src/pages/training/static/training-difficulty-design/block-gold.png delete mode 100644 src/pages/training/static/training-difficulty-design/block-gray.png delete mode 100644 src/pages/training/static/training-difficulty-design/btn.png delete mode 100644 src/pages/training/static/training-difficulty-design/cha.png delete mode 100644 src/pages/training/static/training-difficulty-design/dao-icon.png delete mode 100644 src/pages/training/static/training-difficulty-design/gou.png delete mode 100644 src/pages/training/static/training-difficulty-design/jiantou.png delete mode 100644 src/pages/training/static/training-difficulty-design/lock.svg delete mode 100644 src/pages/training/static/training-difficulty-design/par-bg.png delete mode 100644 src/pages/training/static/training-difficulty-design/par-star.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-bg.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-c-bg.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-icon-1.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-icon-2.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-icon-3.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-rice.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-t-bg.png delete mode 100644 src/pages/training/static/training-difficulty-design/result-up.png delete mode 100644 src/pages/training/static/training-difficulty-design/text-icon-jcxl.png delete mode 100644 src/pages/training/static/training-difficulty-design/text-icon-jingzxl.png delete mode 100644 src/pages/training/static/training-difficulty-design/text-icon-jzxl.png delete mode 100644 src/pages/training/static/training-difficulty-design/text-icon-nlxl.png delete mode 100644 src/pages/training/static/training-difficulty-design/text.png delete mode 100644 src/pages/training/static/training-difficulty-design/unlock.svg delete mode 100644 src/pages/training/static/training-home/done.png delete mode 100644 src/pages/training/static/training-home/img_16.png delete mode 100644 src/pages/training/static/training-home/img_17.png delete mode 100644 src/pages/training/static/training-home/img_19.png delete mode 100644 src/pages/training/static/training-home/img_20.png delete mode 100644 src/pages/training/static/training-home/img_21.png delete mode 100644 src/pages/training/static/training-home/img_22.png delete mode 100644 src/pages/training/static/training-home/img_28.png delete mode 100644 src/pages/training/static/training-home/img_3.png delete mode 100644 src/pages/training/static/training-home/img_4.png delete mode 100644 src/pages/training/static/training-home/img_5.png delete mode 100644 src/pages/training/static/training-home/img_6.png delete mode 100644 src/pages/training/static/training-home/img_7.png delete mode 100644 src/pages/training/static/training-home/jiezouxunlian.png delete mode 100644 src/pages/training/static/training-home/jingzhunxunlian.png delete mode 100644 src/pages/training/static/training-home/liliangxulian.png delete mode 100644 src/pages/training/static/training-home/missed.png delete mode 100644 src/pages/training/static/training-home/nailixunlian.png diff --git a/doc.md b/doc.md index ca46096..9566c3c 100644 --- a/doc.md +++ b/doc.md @@ -113,4 +113,134 @@ git push origin test 2. **每次合并前先拉取最新代码**,避免覆盖他人改动 3. **体验版发布前确认代码已提交**,避免遗漏 4. **开发分支命名建议**:`feature/姓名-功能名`,如 `feature/zhangsan-login` -5. **删除已合并的开发分支**:`git branch -d feature/your-name-work` \ No newline at end of file +5. **删除已合并的开发分支**:`git branch -d feature/your-name-work` + +--- + +## 六、比赛服 Proto 更新流程 + +### 1. 新开发人员快速接手 + +首次拉取项目后,先安装依赖并确认当前协议与运行时解码器一致: + +```bash +npm install +npm run proto:check +npm run build +``` + +如果 `proto:check` 提示协议不同步,先执行 `npm run proto:generate`,不要直接修改生成区块。 + +### 2. 相关文件职责 + +| 文件 | 职责 | 修改规则 | +|------|------|----------| +| `src/utils/match.min.js` | 后端比赛服协议描述,是生成字段表的输入文件 | 后端协议更新时整体替换;禁止在小程序运行时代码中导入 | +| `scripts/generate-match-schema.mjs` | 解析协议、校验字段并生成运行时字段表 | 只有新增通用协议能力时才修改 | +| `src/utils/matchProtocol.js` | 小程序实际使用的 protobuf 编解码器 | `` 标记区间内禁止手动修改 | +| `src/matchWebsocket.js` | 服务端消息路由、ACK 和业务事件分发 | 新增消息业务行为时人工接入 | +| `src/utils/matchAdapter.js` | 将解码结果从 snake_case 统一转换为 camelCase | 页面继续使用适配后的字段名 | + +`match.min.js` 不是小程序运行时解码器。运行时仍使用 `protobufjs/minimal.js` 的 `Reader/Writer`,`int64` 字段统一保留为字符串,避免大整数精度丢失。 + +### 3. 日常协议更新步骤 + +```text +替换 src/utils/match.min.js + ↓ +执行 npm run proto:update + ↓ +检查生成差异和业务接入范围 + ↓ +执行 git diff --check + ↓ +微信开发者工具检查包体并上传 +``` + +具体操作: + +1. 从后端获取最新的 `match.min.js`,整体覆盖 `src/utils/match.min.js`。 +2. 执行推荐命令: + +```bash +npm run proto:update +``` + +3. 该命令会依次完成: + - 解析 `match.min.js` + - 更新 `matchProtocol.js` 内的生成区块 + - 校验生成区块与协议源文件一致 + - 执行微信小程序正式构建 +4. 检查 Git 差异。普通字段更新通常只应涉及: + - `src/utils/match.min.js` + - `src/utils/matchProtocol.js` 的生成区块 +5. 如果新增了消息业务行为,再单独检查 `src/matchWebsocket.js`、页面或组件的接入改动。 +6. 执行空白和换行检查: + +```bash +git diff --check +``` + +7. 打开微信开发者工具,导入 `dist/build/mp-weixin`,检查代码依赖分析和主包体积后再上传。 + +### 4. Proto 命令说明 + +| 命令 | 用途 | 是否修改文件 | +|------|------|--------------| +| `npm run proto:generate` | 根据 `match.min.js` 更新生成区块 | 是 | +| `npm run proto:check` | 检查生成区块是否与协议同步 | 否 | +| `npm run proto:update` | 执行生成,然后运行正式构建 | 是,日常更新推荐使用 | +| `npm run dev` | 启动开发构建,启动前自动执行 `proto:check` | 协议不同步时直接中止 | +| `npm run build` | 执行正式构建,构建前自动执行 `proto:check` | 协议不同步时直接中止 | + +`npm run dev` 和 `npm run build` 只负责检查,不会自动改写协议;发现不同步时应执行 `npm run proto:generate` 或 `npm run proto:update`。 + +### 5. 自动生成与人工接入边界 + +以下内容由生成器自动处理: + +- 服务端和客户端消息枚举 +- 普通 scalar 字段 +- 嵌套 message +- repeated message +- 当前解码器支持的 map +- snake_case 字段名和 oneof 兼容信息 + +以下情况仍需人工处理: + +- **新增服务端消息类型**:枚举会自动生成,但 `matchWebsocket.js` 的路由、ACK、音频或页面事件仍需接入。 +- **新增客户端指令**:枚举会自动生成,但发送函数、字段编码和业务调用入口仍需接入。 +- **修改既有字段编号或类型**:属于协议兼容性变更,必须先与后端确认,不能只看构建是否通过。 +- **新增解码器不支持的类型**:生成器会直接报错,需要同时扩展生成器和 `matchProtocol.js` 的通用解码能力。 + +当前生成器会拒绝不支持的 scalar、map key、字段规则以及 packed scalar repeated,避免继续构建后静默丢字段。 + +### 6. 常见报错处理 + +| 报错或现象 | 原因 | 处理方式 | +|------------|------|----------| +| 生成区块与 `match.min.js` 不同步 | 替换协议后没有重新生成 | 执行 `npm run proto:update` | +| 找不到 `Root.create(...)` | 后端提供的文件格式发生变化或文件不完整 | 停止更新,确认协议文件来源和生成格式 | +| 使用了不支持的类型、规则或 map key | 新协议超出当前通用解码器能力 | 不要手补生成区块,先扩展生成器和解码器并补充验证 | +| packed scalar repeated 不支持 | protobuf 默认可能使用 packed 编码,当前通用解码器未覆盖 | 增加 packed 解码能力后再重新生成 | +| `matchProtocol.js` 缺少生成区块标记 | 标记被误删或生成区块被手改 | 恢复 `` 标记,重新执行生成 | +| 协议生成成功但构建失败 | 问题位于项目构建或业务代码,不是字段表同步 | 保留生成结果,按构建错误继续定位 | + +### 7. 禁止事项与验收清单 + +禁止: + +- 禁止在运行时代码中导入 `match.min.js`。 +- 禁止手动修改 `` 与 `` 之间的内容。 +- 禁止绕过 `proto:check` 后直接上传。 +- 禁止把 `int64` 字段直接转换为普通 `Number`。 +- 禁止把“枚举已经生成”等同于“业务消息已经完成接入”。 + +每次协议更新至少确认: + +1. `npm run proto:check` 通过。 +2. `npm run build` 通过,或直接确认 `npm run proto:update` 已完整通过。 +3. `git diff --check` 通过。 +4. 生成区块之外没有意外改动。 +5. 新消息已完成必要的 WebSocket 路由和页面验证。 +6. 微信开发者工具中的主包、分包体积符合上传限制。 diff --git a/package.json b/package.json index 4fe0d15..b4d948c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,12 @@ "version": "0.1.0", "private": true, "scripts": { + "proto:generate": "node scripts/generate-match-schema.mjs", + "proto:check": "node scripts/generate-match-schema.mjs --check", + "proto:update": "npm run proto:generate && npm run build", + "predev": "npm run proto:check", "dev": "uni -p mp-weixin", + "prebuild": "npm run proto:check", "build": "uni build -p mp-weixin" }, "dependencies": { diff --git a/project.config.json b/project.config.json index 0ffafb0..b9375da 100644 --- a/project.config.json +++ b/project.config.json @@ -235,6 +235,14 @@ { "type": "file", "value": "static/tab-mall.png" + }, + { + "type": "folder", + "value": "static/training-home" + }, + { + "type": "folder", + "value": "static/training-difficulty-design" } ], "include": [] diff --git a/scripts/generate-match-schema.mjs b/scripts/generate-match-schema.mjs new file mode 100644 index 0000000..5684419 --- /dev/null +++ b/scripts/generate-match-schema.mjs @@ -0,0 +1,440 @@ +import { createHash } from "node:crypto"; +import { readFileSync, writeFileSync } from "node:fs"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import vm from "node:vm"; + +const scriptDirectory = dirname(fileURLToPath(import.meta.url)); +const projectRoot = resolve(scriptDirectory, ".."); +const sourcePath = resolve(projectRoot, "src/utils/match.min.js"); +const runtimePath = resolve(projectRoot, "src/utils/matchProtocol.js"); +const generatedStartMarker = "// "; +const generatedEndMarker = "// "; + +const supportedScalarKinds = new Set([ + "int32", + "int64", + "float", + "double", + "bool", + "string", + "bytes", +]); +const supportedMapKeyKinds = new Set(["int32", "int64", "bool", "string"]); +// 新版描述文件未携带旧协议的 oneof 元数据,保留现有解码结果中的 payload 标识。 +const compatibilityOneofs = { + ServerMessage: { + match_info: "payload", + shoot_data: "payload", + practice_info: "payload", + }, +}; + +function isRecord(value) { + return value !== null && typeof value === "object" && !Array.isArray(value); +} + +function extractRootCreateArgument(source) { + const match = /(?:\$protobuf\.)?Root\.create\s*\(/.exec(source); + if (!match) { + throw new Error("match.min.js 中未找到 Root.create(...) 协议描述"); + } + + const openIndex = source.indexOf("(", match.index); + let depth = 0; + let quote = ""; + let escaped = false; + let lineComment = false; + let blockComment = false; + + for (let index = openIndex; index < source.length; index += 1) { + const char = source[index]; + const next = source[index + 1]; + + if (lineComment) { + if (char === "\n") lineComment = false; + continue; + } + if (blockComment) { + if (char === "*" && next === "/") { + blockComment = false; + index += 1; + } + continue; + } + if (quote) { + if (escaped) { + escaped = false; + } else if (char === "\\") { + escaped = true; + } else if (char === quote) { + quote = ""; + } + continue; + } + if (char === '"' || char === "'" || char === "`") { + quote = char; + continue; + } + if (char === "/" && next === "/") { + lineComment = true; + index += 1; + continue; + } + if (char === "/" && next === "*") { + blockComment = true; + index += 1; + continue; + } + if (char === "(") { + depth += 1; + continue; + } + if (char === ")") { + depth -= 1; + if (depth === 0) { + return source.slice(openIndex + 1, index).trim(); + } + } + } + + throw new Error("match.min.js 中的 Root.create(...) 括号不完整"); +} + +function stripQuotedText(source) { + let output = ""; + let quote = ""; + let escaped = false; + + for (const char of source) { + if (quote) { + output += " "; + if (escaped) { + escaped = false; + } else if (char === "\\") { + escaped = true; + } else if (char === quote) { + quote = ""; + } + continue; + } + if (char === '"' || char === "'") { + quote = char; + output += " "; + } else { + output += char; + } + } + + return output; +} + +function parseDescriptor(argumentSource) { + if (!argumentSource.startsWith("{") || !argumentSource.endsWith("}")) { + throw new Error("Root.create(...) 参数不是静态对象字面量"); + } + + try { + return JSON.parse(argumentSource); + } catch { + // 兼容旧版 pbjs 生成的未加引号对象键;只允许静态对象语法。 + const syntaxOnly = stripQuotedText(argumentSource); + if (/[();`=]/.test(syntaxOnly)) { + throw new Error("旧版协议描述包含非静态表达式,已拒绝执行"); + } + const descriptor = vm.runInNewContext( + `(${argumentSource})`, + Object.create(null), + { timeout: 1000 } + ); + return JSON.parse(JSON.stringify(descriptor)); + } +} + +function findProtocolNamespace(node, path = []) { + if (!isRecord(node)) return null; + const entries = isRecord(node.nested) ? node.nested : node; + + if (isRecord(entries.ServerMessage?.fields) && isRecord(entries.ClientMessage?.fields)) { + return { entries, path }; + } + + for (const [name, child] of Object.entries(entries)) { + if (!isRecord(child) || isRecord(child.fields)) continue; + const found = findProtocolNamespace(child, [...path, name]); + if (found) return found; + } + + return null; +} + +function getEnumValues(definition) { + if (!isRecord(definition)) return null; + const candidate = isRecord(definition.values) ? definition.values : definition; + const entries = Object.entries(candidate); + if (entries.length === 0 || entries.some(([, value]) => !Number.isInteger(value))) { + return null; + } + return Object.fromEntries(entries.sort((left, right) => left[1] - right[1])); +} + +function normalizeTypeName(type) { + return String(type || "") + .replace(/^\./, "") + .split(".") + .pop(); +} + +function getOneofByField(definition) { + const result = new Map(); + if (!isRecord(definition.oneofs)) return result; + + for (const [groupName, groupDefinition] of Object.entries(definition.oneofs)) { + const fieldNames = Array.isArray(groupDefinition) + ? groupDefinition + : groupDefinition?.oneof; + if (!Array.isArray(fieldNames)) continue; + for (const fieldName of fieldNames) result.set(fieldName, groupName); + } + + return result; +} + +function buildSchema({ messageName, definition, messages, enumNames }) { + const schema = {}; + const usedIds = new Set(); + const oneofByField = getOneofByField(definition); + + for (const [fieldKey, fieldDefinition] of Object.entries(definition.fields)) { + const id = Number(fieldDefinition.id); + if (!Number.isInteger(id) || id <= 0) { + throw new Error(`${messageName}.${fieldKey} 的字段编号无效`); + } + if (usedIds.has(id)) { + throw new Error(`${messageName} 存在重复字段编号 ${id}`); + } + usedIds.add(id); + + const rule = fieldDefinition.rule; + if (rule && !["optional", "required", "repeated", "map"].includes(rule)) { + throw new Error(`${messageName}.${fieldKey} 使用了不支持的规则 ${rule}`); + } + + const fieldName = fieldDefinition.protoName || fieldKey; + const typeName = normalizeTypeName(fieldDefinition.type); + const keyTypeName = normalizeTypeName( + fieldDefinition.keyType ?? fieldDefinition.keytype + ); + const isMap = rule === "map" || Boolean(keyTypeName); + + if (isMap) { + if (!supportedMapKeyKinds.has(keyTypeName)) { + throw new Error( + `${messageName}.${fieldKey} 使用了不支持的 map key 类型 ${keyTypeName}` + ); + } + const valueIsMessage = messages.has(typeName); + const valueKind = enumNames.has(typeName) ? "int32" : typeName; + if (!valueIsMessage && !supportedScalarKinds.has(valueKind)) { + throw new Error( + `${messageName}.${fieldKey} 使用了不支持的 map value 类型 ${typeName}` + ); + } + schema[id] = valueIsMessage + ? { + name: fieldName, + kind: "map", + keyKind: keyTypeName, + valueKind: "message", + valueType: typeName, + } + : { + name: fieldName, + kind: "map", + keyKind: keyTypeName, + valueKind, + }; + continue; + } + + const isMessage = messages.has(typeName); + const kind = enumNames.has(typeName) ? "int32" : typeName; + if (!isMessage && !supportedScalarKinds.has(kind)) { + throw new Error(`${messageName}.${fieldKey} 使用了不支持的类型 ${typeName}`); + } + + const repeated = rule === "repeated"; + if (repeated && !isMessage && !["string", "bytes"].includes(kind)) { + throw new Error( + `${messageName}.${fieldKey} 是 packed scalar repeated,当前通用解码器尚不支持` + ); + } + + const field = isMessage + ? { name: fieldName, kind: "message", type: typeName } + : { name: fieldName, kind }; + if (repeated) field.repeated = true; + + const oneof = + fieldDefinition.oneof || + oneofByField.get(fieldKey) || + compatibilityOneofs[messageName]?.[fieldName]; + if (oneof) field.oneof = oneof; + schema[id] = field; + } + + return schema; +} + +function formatPropertyKey(key) { + return /^(?:[A-Za-z_$][\w$]*|\d+)$/.test(key) ? key : JSON.stringify(key); +} + +function formatJsValue(value, depth = 0) { + if (!isRecord(value)) return JSON.stringify(value); + + const entries = Object.entries(value); + if (entries.length === 0) return "{}"; + + const indent = " ".repeat(depth); + const primitiveEntries = entries.every(([, child]) => !isRecord(child)); + if (primitiveEntries && value.kind !== "map") { + const singleLine = `{ ${entries + .map(([key, child]) => `${formatPropertyKey(key)}: ${JSON.stringify(child)}`) + .join(", ")} }`; + if (indent.length + singleLine.length <= 100) return singleLine; + } + + const childIndent = " ".repeat(depth + 1); + const lines = entries.map( + ([key, child]) => + `${childIndent}${formatPropertyKey(key)}: ${formatJsValue(child, depth + 1)},` + ); + return `{\n${lines.join("\n")}\n${indent}}`; +} + +function createGeneratedSource(source) { + const descriptor = parseDescriptor(extractRootCreateArgument(source)); + const namespace = findProtocolNamespace(descriptor); + if (!namespace) { + throw new Error("协议描述中未找到 ServerMessage 和 ClientMessage"); + } + + const messages = new Map(); + const enums = new Map(); + for (const [name, definition] of Object.entries(namespace.entries)) { + if (isRecord(definition?.fields)) { + messages.set(name, definition); + continue; + } + const values = getEnumValues(definition); + if (values) enums.set(name, values); + } + + const serverMessageType = enums.get("ServerMessageType"); + const clientMessageType = enums.get("ClientMessageType"); + if (!serverMessageType || !clientMessageType) { + throw new Error("协议描述缺少 ServerMessageType 或 ClientMessageType"); + } + + const enumNames = new Set(enums.keys()); + const schemaByName = new Map(); + for (const [messageName, definition] of messages) { + schemaByName.set( + messageName, + buildSchema({ messageName, definition, messages, enumNames }) + ); + } + + const reachable = new Set(); + function collectReachable(messageName) { + if (reachable.has(messageName)) return; + const schema = schemaByName.get(messageName); + if (!schema) throw new Error(`找不到消息定义 ${messageName}`); + reachable.add(messageName); + for (const field of Object.values(schema)) { + if (field.kind === "message") collectReachable(field.type); + if (field.kind === "map" && field.valueKind === "message") { + collectReachable(field.valueType); + } + } + } + collectReachable("ServerMessage"); + + const schemas = {}; + for (const messageName of messages.keys()) { + if (reachable.has(messageName)) schemas[messageName] = schemaByName.get(messageName); + } + + const sourceHash = createHash("sha256").update(source).digest("hex").slice(0, 16); + const namespaceName = namespace.path.join(".") || "root"; + const fieldCount = Object.values(schemas).reduce( + (total, schema) => total + Object.keys(schema).length, + 0 + ); + const generatedBlock = [ + generatedStartMarker, + "// 此区块由 scripts/generate-match-schema.mjs 自动生成,请勿手动修改。", + `// 来源:src/utils/match.min.js(sha256: ${sourceHash})`, + `// 协议命名空间:${namespaceName};消息数:${Object.keys(schemas).length};字段数:${fieldCount}`, + "", + `export const ServerMessageType = ${formatJsValue(serverMessageType)};`, + "", + `export const ClientMessageType = ${formatJsValue(clientMessageType)};`, + "", + `const SCHEMAS = ${formatJsValue(schemas)};`, + generatedEndMarker, + ].join("\n"); + + return { + generatedBlock, + messageCount: Object.keys(schemas).length, + fieldCount, + }; +} + +function main() { + const args = process.argv.slice(2); + const unknownArgs = args.filter((arg) => arg !== "--check"); + if (unknownArgs.length > 0) { + throw new Error(`未知参数:${unknownArgs.join(", ")}`); + } + + const source = readFileSync(sourcePath, "utf8"); + const { generatedBlock, messageCount, fieldCount } = createGeneratedSource(source); + const runtimeSource = readFileSync(runtimePath, "utf8"); + const startIndex = runtimeSource.indexOf(generatedStartMarker); + const endMarkerIndex = runtimeSource.indexOf(generatedEndMarker); + if (startIndex < 0 || endMarkerIndex < startIndex) { + throw new Error("matchProtocol.js 缺少协议生成区块标记"); + } + const endIndex = endMarkerIndex + generatedEndMarker.length; + const currentBlock = runtimeSource.slice(startIndex, endIndex); + + if (args.includes("--check")) { + if (currentBlock !== generatedBlock) { + throw new Error( + "matchProtocol.js 的生成区块与 match.min.js 不同步,请运行 npm run proto:generate" + ); + } + console.log(`[match-schema] 同步校验通过:${messageCount} 个消息,${fieldCount} 个字段`); + return; + } + + if (currentBlock === generatedBlock) { + console.log(`[match-schema] 无需更新:${messageCount} 个消息,${fieldCount} 个字段`); + return; + } + + const nextRuntimeSource = + runtimeSource.slice(0, startIndex) + generatedBlock + runtimeSource.slice(endIndex); + writeFileSync(runtimePath, nextRuntimeSource, "utf8"); + console.log(`[match-schema] 已生成:${messageCount} 个消息,${fieldCount} 个字段`); +} + +try { + main(); +} catch (error) { + console.error(`[match-schema] ${error.message}`); + process.exitCode = 1; +} diff --git a/src/manifest.json b/src/manifest.json index ff67d53..16a0bbe 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -286,6 +286,14 @@ { "type" : "file", "value" : "static/tab-mall.png" + }, + { + "type" : "folder", + "value" : "static/training-home" + }, + { + "type" : "folder", + "value" : "static/training-difficulty-design" } ] }, diff --git a/src/mock/index.js b/src/mock/index.js index 78da2c2..c716202 100644 --- a/src/mock/index.js +++ b/src/mock/index.js @@ -4,43 +4,43 @@ export const trainingHomeWeekSchedule = [ key: "mon", label: "周一", status: "done", - icon: "/pages/training/static/training-home/done.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/done.png", }, { key: "tue", label: "周二", status: "done", - icon: "/pages/training/static/training-home/done.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/done.png", }, { key: "wed", label: "周三", status: "missed", - icon: "/pages/training/static/training-home/missed.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/missed.png", }, { key: "thu", label: "周四", status: "missed", - icon: "/pages/training/static/training-home/missed.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/missed.png", }, { key: "fri", label: "周五", status: "done", - icon: "/pages/training/static/training-home/done.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/done.png", }, { key: "sat", label: "周六", status: "done", - icon: "/pages/training/static/training-home/done.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/done.png", }, { key: "sun", label: "周日", status: "missed", - icon: "/pages/training/static/training-home/missed.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/missed.png", }, ]; @@ -73,7 +73,7 @@ export const trainingHomeModes = [ key: "endurance", title: "耐力训练", progressText: "当前进度 LV5 >", - icon: "/pages/training/static/training-home/img_3.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_3.png", recommended: true, disabled: false, }, @@ -81,7 +81,7 @@ export const trainingHomeModes = [ key: "precision", title: "精准训练", progressText: "当前进度 LV3 >", - icon: "/pages/training/static/training-home/img_4.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_4.png", recommended: false, disabled: false, }, @@ -89,7 +89,7 @@ export const trainingHomeModes = [ key: "rhythm", title: "节奏训练", progressText: "当前进度 LV6 >", - icon: "/pages/training/static/training-home/img_5.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_5.png", recommended: false, disabled: false, }, @@ -97,7 +97,7 @@ export const trainingHomeModes = [ key: "power", title: "力量训练", progressText: "Coming! LV10", - icon: "/pages/training/static/training-home/img_6.png", + icon: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_6.png", recommended: false, disabled: true, }, diff --git a/src/pages/training/components/BowData.vue b/src/pages/training/components/BowData.vue index b3f3d21..b6108ff 100644 --- a/src/pages/training/components/BowData.vue +++ b/src/pages/training/components/BowData.vue @@ -36,7 +36,7 @@ const props = defineProps({ {{ user.nickName }} - {{ user.lvlName }} + diff --git a/src/pages/training/components/ScorePanel.vue b/src/pages/training/components/ScorePanel.vue index 04a3884..d03814e 100644 --- a/src/pages/training/components/ScorePanel.vue +++ b/src/pages/training/components/ScorePanel.vue @@ -85,8 +85,8 @@ onBeforeUnmount(() => { class="score-item-bg" :src=" isLowScore(arrows[index]) - ? '../static/training-difficulty-design/block-gray.png' - : '../static/training-difficulty-design/block-gold.png' + ? 'https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/block-gray.png' + : 'https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/block-gold.png' " /> { :key="index" class="score-card" > - + - + - + Lv{{ resultDifficultyLevel }} @@ -330,7 +330,7 @@ const calories = computed( - + {{ row.label }} @@ -345,13 +345,13 @@ const calories = computed( {{ row.delta > 0 ? "+" : "-" }}{{ row.deltaText }} {{ row.deltaUnit }} + src="https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/result-up.png" mode="widthFix" /> -- - + 消耗卡路里 @@ -363,7 +363,7 @@ const calories = computed( + src="https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/result-rice.png" mode="widthFix" /> @@ -371,15 +371,15 @@ const calories = computed( - + 查看靶纸 - + 教练点评 - + 分享成绩 diff --git a/src/pages/training/components/ShootProgress.vue b/src/pages/training/components/ShootProgress.vue index f53ed2b..7f91b6d 100644 --- a/src/pages/training/components/ShootProgress.vue +++ b/src/pages/training/components/ShootProgress.vue @@ -54,10 +54,14 @@ const props = defineProps({ }); const trainingTitleIconMap = Object.freeze({ - base: "../static/training-difficulty-design/text-icon-jcxl.png", - precision: "../static/training-difficulty-design/text-icon-jingzxl.png", - rhythm: "../static/training-difficulty-design/text-icon-jzxl.png", - endurance: "../static/training-difficulty-design/text-icon-nlxl.png", + base: + "https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/text-icon-jcxl.png", + precision: + "https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/text-icon-jingzxl.png", + rhythm: + "https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/text-icon-jzxl.png", + endurance: + "https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/text-icon-nlxl.png", }); const trainingTitleIcon = computed( () => diff --git a/src/pages/training/components/TestDistance.vue b/src/pages/training/components/TestDistance.vue index 79d114e..45374a8 100644 --- a/src/pages/training/components/TestDistance.vue +++ b/src/pages/training/components/TestDistance.vue @@ -82,7 +82,7 @@ onBeforeUnmount(() => { diff --git a/src/pages/training/difficulty.vue b/src/pages/training/difficulty.vue index 62f5988..2529501 100644 --- a/src/pages/training/difficulty.vue +++ b/src/pages/training/difficulty.vue @@ -784,7 +784,7 @@ onUnload(() => { v-for="connector in difficultyConnectors" :key="connector.id" class="difficulty-page__connector" - src="./static/training-difficulty-design/jiantou.png" + src="https://static.shelingxingqiu.com/shootmini/static/training-difficulty-design/jiantou.png" mode="aspectFit" :style="connector" /> diff --git a/src/pages/training/index.vue b/src/pages/training/index.vue index dfcd8b0..218cb4a 100644 --- a/src/pages/training/index.vue +++ b/src/pages/training/index.vue @@ -5,8 +5,10 @@ import Container from "@/components/Container.vue"; import TargetPicker from "@/components/TargetPicker.vue"; import { getPersonalTrainingAPI } from "@/apis"; -const checkedIcon = "./static/training-home/done.png"; -const missedIcon = "./static/training-home/missed.png"; +const checkedIcon = + "https://static.shelingxingqiu.com/shootmini/static/training-home/done.png"; +const missedIcon = + "https://static.shelingxingqiu.com/shootmini/static/training-home/missed.png"; // 后端训练项目 id 与难度页 mode 参数的映射关系。 const trainingModeRouteMap = { base: "basic", @@ -17,18 +19,25 @@ const trainingModeRouteMap = { }; // 训练项目卡片右侧主图标。 const trainingModeIconMap = { - base_bow: "./static/training-home/img_22.png", - bow: "./static/training-home/img_3.png", - target: "./static/training-home/img_4.png", - wave: "./static/training-home/img_5.png", - muscle: "./static/training-home/img_6.png", + base_bow: + "https://static.shelingxingqiu.com/shootmini/static/training-home/img_22.png", + bow: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_3.png", + target: + "https://static.shelingxingqiu.com/shootmini/static/training-home/img_4.png", + wave: "https://static.shelingxingqiu.com/shootmini/static/training-home/img_5.png", + muscle: + "https://static.shelingxingqiu.com/shootmini/static/training-home/img_6.png", }; -// 训练项目卡片标题图,按接口 id 映射本地资源。 +// 训练项目卡片标题图,按接口 id 映射 CDN 资源。 const trainingModeTitleImageMap = { - endurance: "./static/training-home/nailixunlian.png", - precision: "./static/training-home/jingzhunxunlian.png", - rhythm: "./static/training-home/jiezouxunlian.png", - strength: "./static/training-home/liliangxulian.png", + endurance: + "https://static.shelingxingqiu.com/shootmini/static/training-home/nailixunlian.png", + precision: + "https://static.shelingxingqiu.com/shootmini/static/training-home/jingzhunxunlian.png", + rhythm: + "https://static.shelingxingqiu.com/shootmini/static/training-home/jiezouxunlian.png", + strength: + "https://static.shelingxingqiu.com/shootmini/static/training-home/liliangxulian.png", }; const defaultWeekDays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]; const defaultRadarDimensions = [ @@ -360,12 +369,12 @@ onShow(async () => { @@ -440,7 +449,7 @@ onShow(async () => { @@ -451,7 +460,7 @@ onShow(async () => { 我的训练记录 @@ -479,7 +488,7 @@ onShow(async () => { { /> @@ -501,7 +510,7 @@ onShow(async () => { diff --git a/src/pages/training/practise-one.vue b/src/pages/training/practise-one.vue index cf7f3f1..71e2b25 100644 --- a/src/pages/training/practise-one.vue +++ b/src/pages/training/practise-one.vue @@ -953,7 +953,7 @@ onBeforeUnmount(() => { @@ -998,7 +998,7 @@ onBeforeUnmount(() => { diff --git a/src/pages/training/static/training-difficulty-design/block-gold.png b/src/pages/training/static/training-difficulty-design/block-gold.png deleted file mode 100644 index 9d70a5981967009ac0783f65cb8bfb51c870c016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2970 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 Qvi43I9!HF555HFWKL^=GNdN!< diff --git a/src/pages/training/static/training-difficulty-design/dao-icon.png b/src/pages/training/static/training-difficulty-design/dao-icon.png deleted file mode 100644 index 428e8fc7beb1e65ac9fd6c271d914b0d519394c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5606 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 AlK=n! diff --git a/src/pages/training/static/training-difficulty-design/gou.png b/src/pages/training/static/training-difficulty-design/gou.png deleted file mode 100644 index e1085138680051fa11ca5d0441f45ae763a9870d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmV-M1G)T(P)a2>Bl1@FZSui85tz=;JNYMv&OZOQcX%DBQGN( zFC!x{BO@>z94j9mFYwx{=Fp$?;=J9)mfy>x+Qpao?9ln_(eUBE^y0dllY{f%xNc`% zT~hc-?s7GvGLxt@Y}BU=*aZqyz}9@@7k;Q>dW@$#q{LA?%1gK z>(2G%!ujpd?bfCG?$rD5*X-4z{qx@Z@!IUup7GwZP0;0h00018bW%=J0Dy>veRWtu zBpewO1^VFAka|fW6%r8l_xA1U=;Ywn#j~B8m5YjOWL-HqF#GiL^6=~D;NacZ*VoU^ z%*n*TxVN;kvaO?|o|%=BhQ#yqW}N_JV``BR5;6p(q~h` zKoEf8T@r#~s7gnqcYE)>_ufT8#cmA$e@2qa;W*^T^C8&}?<6}n2L{fKf{u+bgW_yh zn)kLWb|p!g=>)c`rJuS554&ie`cka1i?+z8YKL8PzY~Y-;#G6N+9UErZ7~jP;-R5O zx452trUqmCy2BoG2{#M2;#O|BB%V&PUijuW*S?ZL`#ZVt!BRgSS+bRP839-#KQW(9dQJEWEe4_ z1^#&5yvcE|vgdv3dz|Bo@Q+8p<=#hyPklPj)qIbNu7v-Ea-i7?%`P*}&<8Pz<}T19 z3aRk7Vw9srGq))$%W}}96fBlhQ1&Ourp(6Kw}KbYk~@hOFd$^Xi0B0!zjA3`X{A!Q QqyPW_07*qoM6N<$f-gPGW&i*H diff --git a/src/pages/training/static/training-difficulty-design/jiantou.png b/src/pages/training/static/training-difficulty-design/jiantou.png deleted file mode 100644 index a232722510db98043a08dacbea64896ab31aea5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1469 zcmWMkdsK{h03F40DzC!E=CP)SS7CA@(&E%6+9bkaQC@piuSr(ZqQ_{aS@gh^UZ|Lo z=^+XwdU&N)w5;TiN?(t8G&A4K_x%07-_AYf-h1vJ_n&*NEGW=#qSY)b9*;NCf1^*Z z*=@~qm|$tvJ+tOc=kY9*K>^!+%@H+uQg@c3Z!u&UpY2KnmCIm-3)3A(-&;u3tOc0J zSp5^~jnh}IFjlWbW$xrdJ`2h?@DPqlI9&>-O$JrYL`yJv*Ngdj0^D1O`cInITC9tMqpv&Y`r#Y<@>PwI+ z0qBdNPQt41a3hJFN(xmHqCXd6(O@(S@5;vCicwz_)su@W@Ob z;b7nxH=IiLWiq3sTweshPNCjN>cMJ8olTazvgLfDO9V&Ksq)3l7a`LV!F)Upx}<2h zfc_Liy@@b1Zlx+*5SD^^gyggR+WIx@fE<6Yo*gXGHTa=#QMB?0GaG07~*0(2_E6FKmRq2!QjV%REzJ`bsCWXgudbdD(Gj0F(SMU0%IWE@cmjd>6k zb94#ROSsV_G$>(>F%ZAN;MuIHiZPWD#tcTA4h)UNz+dJ%islg{XCz~~u>#RF9;qbp?83D8u_V3o{J z1~j%p{1MdTuo@*jaFNy*&>E@fgBYn!!J$OMdohb;KwYu1<4F54k7JPpUYGt4{V zufk23g2Zlt;VVdcmFSAoRn8~w`%ry{f$0g*-T;HCV6aH@dyS8unC1CSLZ|{{JD+J5j7P+`MIXd$B zbLY%{fyWy&;P113`+|$KKf6iF1NlGM^t#qDqJpC#MaELUH24vPqL z?Jf_~?DpGbJ2NS5{F1|>^t8YiBX=d;b#-=bF#?N%I$>_pAvp1((Ds~SR{ILsSSwM- zo&(_zWKt*p-OcafDu&}du4mAlPM<_w;t$U^ZeHTPKeXj(V_bJ<^FrC$xPpPSU0I7~ z>~To)xO&p-a@N$)gAonyotE?4hpW6STTGWuS-f?7O%QB;L+2{~7T)a4SFfB0hI_Rb zrtO{Cxb&KhRmjh2yeIwMC6N?E(UPhp%hij|=H$>8(s@hWaVKm+(7HBXp;Rh7x?CWL ziI)0Bmsq3-ZrT?0|JpR-*=KiS-H|&A+)%xtc#C9Zf#r>@&f6xxXXHHDJ^ diff --git a/src/pages/training/static/training-difficulty-design/lock.svg b/src/pages/training/static/training-difficulty-design/lock.svg deleted file mode 100644 index 7d77123..0000000 --- a/src/pages/training/static/training-difficulty-design/lock.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - 编组 11 - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/pages/training/static/training-difficulty-design/par-bg.png b/src/pages/training/static/training-difficulty-design/par-bg.png deleted file mode 100644 index ff05d28c201d8af9dbac3c8eb001b39ddb100a0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142505 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