From fa5c87d35a21beecd38201d3bb54f03c8c32dc1b Mon Sep 17 00:00:00 2001 From: "2817212736@qq.com" <2817212736@qq.com> Date: Thu, 31 Jul 2025 09:43:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0Readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/README.md b/README.md index b5a48e5..322ea51 100644 --- a/README.md +++ b/README.md @@ -95,3 +95,58 @@ pnpm clean pnpm build pnpm release ``` + +## 开发 + +### 处理器类型 + +处理器的上下文类型应当提交至该项目以方便协作,包括处理器输入,输出以及配置类型。 +这些类型应当定义在`src/models/processors/<处理器名>.ts`文件中。 +例: + +```ts +// src/models/processors/rectLayout.ts + +// 矩形优化处理器类型 + +export interface RectLayoutProcInput { + blocks: Array +} +export type RectLayoutProcOutput = never; +export class RectLayoutProcConfig extends ConfigBase {} + +export interface RectLayoutBlock {} + +``` + +定义类型时请遵循以下约定: + +- 处理器的输入/输出/配置类型(以下称为*相关类型*)请按照特定规则进行命名,其大小写应当遵循[PascalCase](https://pascal-case.com/): + - 输入类型: `<处理器名>Input` + - 输出类型: `<处理器名>Output` + - 配置类型: `<处理器名>Config` +- 处理器的配置类型必须为一个Javascript类,并继承自抽象类`ConfigBase`,输入和输出类型不限。 +- 处理器相关类型的字段若涉及到附属类型,也一并定义在文件中,其命名不限,但必须与处理器的名字有所关联,不易于其它处理器混淆,例: + + ```ts + export interface RectLayoutProcInput { + blocks: Array // 附属类型 + } + // 同样定义在该文件中, + export interface RectLayoutBlock {} + ``` + +- 若处理器相关类型中出现了唯一标识符,请统一使用`string | number`作为Typescript类型,例: + + ```ts + export interface RectLayoutBlock { + id: string | number; // 使用string | number类型作为唯一标识符 + } + ``` + +- 若处理器相关类型中出现了平面尺寸相关的,请使用“长(`length`)/宽(`width`)”作为其名称,请勿使用“宽(`width`)/高(`height`)”。 + + > [!Warning] + > “长”指的是一个矩形板件在**横轴**上的尺寸,而“宽”指的是**纵轴**上的尺寸。 + > + > 在旧版生产的数据中,“长/宽”与“宽/高”是混用的,在矩形优化后,原有板件的“长(l)”变为了“高(pbg)”,而“宽(w)”变为了“宽(pbk)”,因为矩形优化涉及到了坐标转换,后续还需要对规范进行统一。