ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ingredients

Ingredients Ingredients【免费下载链接】platformHuly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)项目地址: https://gitcode.com/GitHub_Trending/platform80/platform300g Arborio rice500g mixed mushrooms1 onion, finely chopped2 cloves garlic, minced1 cup white wine6 cups vegetable stock2 tbsp nutritional yeast2 tbsp olive oilSalt and pepper to tasteFresh parsleyInstructionsSauté mushrooms until goldenAdd onion and garlic, cook until softAdd rice and toast for 2 minutesGradually add wine and stockCook until rice is creamyFinish with nutritional yeastNotesUse a variety of mushrooms for better flavorKeep stock warm while addingStir constantly for creamy textureNutritional yeast adds cheesy flavor**从源码结构的验证点**官方指南规定缺少必需 class 属性的文件将被跳过见 [docs/huly/README.md](https://link.gitcode.com/i/282ed857382a407e7616b634ab9d177a)。而这份菜谱文档并未显式声明 class但从示例工作区的实际布局看其类型信息由所在空间配置Recipes.yaml 的 class: card:class:MasterTag承载。可以推断class 必需规则主要适用于需要显式声明实体类型的空间如 Issue、Document而基于 MasterTag 组织的内容空间在示例中并不要求在每份文档里重复声明。 ## 四、属性从何而来MasterTag 自定义属性体系 ### 4.1 Recipes 主标签Recipes.yaml [Recipes.yaml](https://link.gitcode.com/i/5242cad8dcf7ff0a1bcd6f967525c218) 定义了 Recipe 这一 MasterTag并声明了一组结构化属性 yaml class: card:class:MasterTag title: Recipe properties: - label: cookingTime type: TypeString - label: servings type: TypeNumber - label: difficulty enumOf: ./Difficulty.yaml # isArray: true # for multiple values - label: category type: TypeString - label: calories type: TypeNumber - label: chef type: TypeString - label: relatedRecipes refTo: ./Recipes.yaml isArray: true这段配置揭示了属性系统的几种取值方式type标量类型如TypeStringcookingTime、category、chef、TypeNumberservings、caloriesenumOf引用枚举定义文件difficulty→./Difficulty.yamlfrontmatter 中只需写枚举值如MediumrefToisArray引用其他 Recipe 文档形成文档间引用relatedRecipesisArray: true表示允许多值——这与 Mushroom Risotto 中recommendedDesserts的用法同构注释还给出了isArray: true用于多值枚举的示例。4.2 Vegan 子标签Vegan Recipe.yamlMushroom Risotto 之所以带有proteinSource、isGlutenFree、allergens这些素食专属字段是因为其所在子目录还定义了一个专属 MasterTagclass: card:class:MasterTag title: Vegan Recipe properties: - label: proteinSource type: TypeString - label: isGlutenFree type: TypeBoolean - label: allergens type: TypeString注意这里出现了TypeBooleanfrontmatter 中的isGlutenFree: true即对应此类型。从这一设计可以看出一份文档可以同时命中多个 MasterTag其属性会在 frontmatter 中合并体现——Mushroom Risotto 同时是Recipe通用属性与Vegan Recipe素食属性这正是 Huly 卡片模型多标签、多属性集的导入侧映射。4.3 更轻量的 TagDietaryType.yaml与 MasterTag 类似但更轻量的是 Tag 定义DietaryType.yaml 展示了card:class:Tag的写法class: card:class:Tag title: DietaryType properties: - label: restrictions type: TypeString - label: allergens type: TypeStringTag 与 MasterTag 均可声明属性区别在于标签本身的层级与使用场景Tag 更贴近打标MasterTag 更贴近结构化实体类型。五、枚举字段Difficulty.yaml与difficulty: MediumRecipes.yaml中difficulty属性通过enumOf: ./Difficulty.yaml指向枚举定义而 Difficulty.yaml 的完整内容为class: core:class:Enum title: Difficulty values: - Easy - Medium - Hard - Expert - Impossible因此 Mushroom Risotto 的difficulty: Medium就是从这个枚举取值。从格式设计上看枚举被抽离为独立的core:class:Enum配置文件从而可以在多个 MasterTag 间复用导入工具校验时difficulty字段必须落在Easy / Medium / Hard / Expert / Impossible五个合法值之内这为导入前的数据质量校验提供了依据。类似的枚举文件同样可以出现在其他空间如任务状态、优先级等。六、文档间关联RecipeAssociations.yaml与recommendedDesserts菜谱之间需要推荐搭配语义甜品 ↔ 主菜统一导入格式通过 Association 文件表达# RecipeRelations.yaml class: core:class:Association typeA: ./Recipes.yaml typeB: ./Recipes.yaml nameA: recommendedDesserts nameB: recommendedMainDishes type: N:N # 1:1, 1:N, N:NRecipeAssociations.yaml 声明了一个N:N的双向关联typeA/typeB指向参与关联的实体类型此处均为Recipes.yaml即菜谱 ↔ 菜谱自关联nameA: recommendedDesserts正向字段名出现在 Mushroom Risotto 的 frontmatter 中nameB: recommendedMainDishes反向字段名出现在被引用文档的 frontmatter 中type: N:N支持1:1、1:N、N:N三种基数。于是 Mushroom Risotto 里写了recommendedDesserts: - ./Chocolate Lava Cake.md而反向的 Chocolate Lava Cake.md 则相应声明recommendedMainDishes: - ./Classic Margherita Pizza.md - ./Vegan/Mushroom Risotto.md两者通过相对路径互相引用形成一张可双向导航的菜谱推荐网络。这套Association 配置文件 frontmatter 字段的机制与 Huly 平台中的对象关联能力一一对应也是统一导入格式表达复杂业务关系如文档被哪些任务引用、问题与子问题、审批链等的通用手段。七、相对路径引用、子文档与附件7.1 文档间的相对引用从上述示例可见frontmatter 中的关联字段使用./开头的相对路径指向同一空间内的其他文档./Chocolate Lava Cake.md—— 指向 Recipes 空间根目录的甜品文档./Vegan/Mushroom Risotto.md—— 从空间根目录视角指向 Vegan 子目录下的文档./Classic Margherita Pizza.md—— 指向同层的另一份菜谱。从示例工作区的布局看这些引用在空间维度上是统一的无论文档位于哪个子目录均以空间根为基准书写./相对路径从而保证菜谱与菜谱、文档与文档跨目录也能互相引用。7.2 子文档同名字文件夹约定官方指南 明确约定子文档/子任务位于与父文档/父任务同名的文件夹中。示例中的对应关系是Chocolate Lava Cake.md # 父文档含 blobs 附件声明 Chocolate Lava Cake/ └── Chocolate Sauce.md # 子文档同一约定在示例工作区其他空间同样成立User Guide.mdUser Guide/Installation.md、1.Project Setup.md1.Project Setup/2.Configure CI.md均可作为参照。7.3 附件blobs声明Chocolate Lava Cake.md 的 frontmatter 展示了附件写法blobs: - ./files/cake.png即通过blobs字段引用空间内files/目录中的资源文件。官方指南同时说明空间目录中的文件在被 Markdown 内容引用时可作为附件导入如架构图、截图、图片素材这为文档富媒体内容迁移提供了通道。八、通用文件格式约定速查综合 docs/huly/README.md 与示例工作区编写可导入工作区需遵守以下约定根目录包含空间配置文件*.yaml与其同名文件夹空间配置全部为 YAML 格式通过class声明类型——tracker:class:Project项目、document:class:Teamspace文档空间、documents:class:OrgSpace受控文档空间、card:class:MasterTag自定义卡片标签空间等内容文档全部为YAML frontmatter Markdown 正文子文档放在与父文档同名的文件夹内保留文件名为settings.yaml的文件被保留不能用作空间配置class校验缺少必需class属性的文件将被跳过导入空间配置通用字段以Project Alpha.yaml为例title、identifier项目标识最多 5 位大写字母/数字且以字母开头、private、autoJoin、owners、members、description、defaultIssueStatus任务文档class: tracker:class:Issue必填title、status可选priority、assignee、estimation、remainingTime任务编号取自文件名数字与项目identifier组合成ALPHA-1这样的人类可读 ID状态取值Backlog / Todo / In Progress / Done / Canceled优先级取值Low / Medium / High / Urgent。九、如何导入运行 Huly Import Tool数据目录就绪后可通过 Docker 运行 import-tool 完成导入命令来自 官方指南docker run \ -e FRONT_URLhttps://huly.app \ -v /path/to/workspace:/data \ hardcoreeng/import-tool:latest \ -- bundle.js import /data \ --user your.emailcompany.com \ --password yourpassword \ --workspace workspace-id【免费下载链接】platformHuly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)项目地址: https://gitcode.com/GitHub_Trending/platform80/platform创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表