Skip to content

feat: add output and import template functionality#546

Open
xiaoxustudio wants to merge 6 commits intoOpenWebGAL:devfrom
xiaoxustudio:feat/template-input-output
Open

feat: add output and import template functionality#546
xiaoxustudio wants to merge 6 commits intoOpenWebGAL:devfrom
xiaoxustudio:feat/template-input-output

Conversation

@xiaoxustudio
Copy link
Member

@xiaoxustudio xiaoxustudio commented Feb 4, 2026

增加模板导入/导出功能

issue: #545

image image

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @xiaoxustudio, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

此拉取请求旨在通过引入模板导入和导出功能,显著增强模板管理能力。这些功能使用户能够更灵活地管理和共享其项目模板,从而提升工作流程的效率和便利性。

Highlights

  • 模板导入功能: 新增了模板导入功能,允许用户上传ZIP格式的模板文件,系统将自动解压并集成到模板列表中。在导入前会检查是否存在同名模板,以避免冲突。
  • 模板导出功能: 新增了模板导出功能,用户可以将现有模板打包成ZIP文件,方便分享和备份。导出后会自动打开模板所在的文件夹。
  • API和文件系统集成: 后端API新增了处理模板导入和导出的接口,并集成了文件系统服务,支持ZIP文件的压缩和解压缩操作。
  • UI和国际化更新: 前端界面增加了导入和导出模板的按钮,并更新了多语言文件(中文、英文、日文),以支持新功能的文本显示和用户提示。

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • packages/origine2/src/api/Api.ts
    • 新增了OutputTemplateDto接口,用于定义模板导出参数。
    • 新增了manageTemplateControllerOutputTemplate API端点,用于处理模板导出请求。
    • 新增了manageTemplateControllerImportTemplate API端点,用于处理模板导入请求,支持文件上传。
    • 将多处字符串字面量从双引号统一为单引号,以保持代码风格一致性。
  • packages/origine2/src/locales/en.po
    • 新增了“Import template”和“Export template”的英文翻译。
    • 新增了模板导入成功/失败的英文提示信息。
  • packages/origine2/src/locales/ja.po
    • 新增了“テンプレートのインポート”和“テンプレートのエクスポート”的日文翻译。
    • 新增了模板导入成功/失败的日文提示信息。
  • packages/origine2/src/locales/zhCn.po
    • 新增了“导入模板”和“导出模板”的中文翻译。
    • 新增了模板导入成功/失败的中文提示信息。
  • packages/origine2/src/pages/dashboard/TemplateElement.tsx
    • 在模板元素的操作菜单中新增了“导出模板”选项。
    • 更新了重命名和删除模板功能的内部字符串字面量引用。
  • packages/origine2/src/pages/dashboard/TemplateSidebar.module.scss
    • 调整了侧边栏顶部按钮的布局样式,以适应新增的导入按钮。
  • packages/origine2/src/pages/dashboard/TemplateSidebar.tsx
    • 在模板侧边栏中新增了“导入模板”按钮,并关联了文件选择器。
    • 实现了文件选择后的处理逻辑,调用API进行模板导入,并显示成功或失败的Toast通知。
    • 引入了Toast组件以提供用户反馈。
  • packages/terre2/package.json
    • 新增了archiver和adm-zip作为生产依赖,用于ZIP文件的压缩和解压缩操作。
    • 新增了@types/archiver和@types/adm-zip作为开发依赖,提供类型定义。
  • packages/terre2/src/Modules/manage-template/manage-template.controller.ts
    • 引入了UploadedFile和UseInterceptors装饰器,用于处理文件上传。
    • 新增了outputTemplate方法,处理模板导出请求。
    • 新增了importTemplate方法,处理模板导入请求,通过FileInterceptor拦截上传的ZIP文件。
  • packages/terre2/src/Modules/manage-template/manage-template.dto.ts
    • 新增了OutputTemplateDto数据传输对象,包含sourceDir和outPath属性,用于模板导出。
  • packages/terre2/src/Modules/manage-template/manage-template.service.ts
    • 引入了_open和dirname工具函数。
    • 实现了outputTemplate方法,负责将指定模板目录压缩为ZIP文件并保存,然后打开保存目录。
    • 实现了importTemplate方法,负责解压上传的ZIP模板文件,读取template.json进行模板信息校验,并将其提取到指定目录,同时检查是否已存在同名模板。
  • packages/terre2/src/Modules/webgal-fs/webgal-fs.service.ts
    • 引入了archiver和adm-zip库。
    • 新增了compressedDirectory方法,用于将指定目录压缩为ZIP文件。
    • 新增了decompressedDirectory方法,用于将ZIP文件解压到指定目录。
    • 新增了readFileInZipToBuffer方法,用于从ZIP文件中读取特定文件内容。
  • packages/terre2/src/util/open.ts
    • 修改了_open函数,使其能够接受并传递open库的Options参数,例如设置background: false。
  • yarn.lock
    • 更新了依赖锁定文件,以包含archiver、adm-zip及其相关子依赖和类型定义。
Activity
  • 作者xiaoxustudio创建了此拉取请求,旨在为模板管理添加导入和导出功能。
  • 此PR包含前端UI更新、API接口定义以及后端文件系统操作的全面修改。
  • PR描述中包含一张图片,直观展示了新功能的用户界面。
  • 代码变更涉及多语言翻译文件的更新,以确保新功能在不同语言环境下都能正确显示。
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

这个 PR 增加了模板的导入和导出功能,整体实现得很好。后端添加了处理 zip 压缩和解压的逻辑,前端也相应地增加了 UI 元素和 API 调用。我发现了一些需要解决的关键问题,主要集中在后端的 manage-template.service.ts 文件中,包括一个可能导致文件创建失败的路径错误,以及一些关于错误处理和安全性的改进点。此外,API 客户端的类型与后端返回值存在不匹配,需要修正。修复这些问题后,这个功能会更加健壮和安全。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant