我希望写一个软件,作用是启动我自己写的多个服务。同时生成一个Web界面,显示我配置的所有服务,并支持启动、停止服务。 界面上包含“服务创建”按钮。每个服务创建时,可以配置的东西有: 1. 启动命令,可包含多行,例如可输入: ``` mvn package java -jar [--server.port={{SERVER_PORT}}] target/xxxx-1.0.0.jar ``` 其中,“[]”中的内容为可选项,{{}}内的部分为自定义变量,仅当[]内所有的自定义变量存在时,才会加入命令。 2. 工作目录,选择电脑上存在的一个目录,或直接填写路径; 3. 使用哪个终端执行,应支持cmd、powershell、git bash,如果可能,支持ssh(需配置用户名、host、密码); 4. 自定义变量及使用方式,可不添加、添加1个或多个项。如添加定义`SERVER_PORT`,值为`8080`,它影响规则1中的可选项是否加入命令。 服务创建后,每个服务显示其关键信息,同时包含“开始”、“停止”、“编辑”、“删除”、“查看详情”等按钮。点击“开始”后,服务应在后台运行,而非打开一个终端窗口去执行。同时记录进程号,显示在界面内。点击“停止”后,优雅地杀掉进程。 界面上还应包含“一键启动”和“一键停止”按钮。 后端请使用 Java 17 + Spring Boot 实现;前端使用 Vue 3 实现。 请同步实现日志功能,使用Slf4j 框架,既包含控制台日志,又可以在logs目录下生成30天滚动日志。 --- 在创建和编辑服务时,再增加一个可选填写项,填写服务启动后的Web界面,如http://localhost:{{SERVER_PORT:7626}}/index.html。其中,{{}}内部仍然为自定义变量,包含:7626的意思是,如果该变量未提供,使用7626作为默认值。如果没有默认值且变量未提供,置空处理。如果某个服务状态是已启动,且配置了Web界面,那么在列表中点击该卡片,则在浏览器新Tab页中跳转至该地址。 --- 查看日志时,显示的中文乱码了,因为我的服务打印时都是UTF-8形式。那在添加服务和编辑服务时,再加一个日志编码选项吧,默认为UTF-8,支持修改为GB18030等其他编码。然后查看日志时按照选择的编码展示。 --- 我希望增加一个功能,用于杀死端口冲突的进程。如果自定义变量中包含SERVER_PORT、PORT、serverPort、port等变量,那么使用该功能,自动查询占用该端口号的服务,列出其PID,让用户二次确认后杀掉进程。 --- 在某个服务启动后,请在磁盘上持久化其PID,停止后删除。这样的话,当本服务停止运行后再次启动时,可以自动检查每个服务的PID,判断其是否还在运行。 --- 请将前端界面里,每个服务下方的几个按钮稍稍缩小一些,服务启动后,如果有5个按钮,会导致换行。 5个按钮整体居中显示吧 --- 我打算将该项目开源,请创建.gitignore文件,创建README.md等。但无需创建CONTRIBUTORS.md、PR相关文件等。 --- 帮我创建一个skill,用于生成git commit log。先查看本项目是否被git管理,如果没有,那么读取项目文件,同时读取prompt.txt、docs目录、CLAUDE.md、REQUIREMENTS.md等内容,生成提交日志;否则,根据最近提交计算项目变动,生成提交日志。日志采用如下格式:“1. 实现了Xxx功能,Xxxx;2. 实现了Xxxx功能,Xxxxxx;3. 修复了Xxxxx问题,Xxxxx。”。 skill要包含few-shot示例。 --- 将网页名称修改为“服务进程管理平台” --- 帮我创建一个skill,用于生成README.md。如果项目中存在README.md,读取它,根据项目最新情况更新其中的功能介绍、部署方式、启动方式、使用手册等内容。如果项目中不存在README.md,创建它,然后读取项目关键文件,将功能介绍、部署方式、启动方式、使用手册等内容写入。 --- 我希望服务可以分类管理,类型可以包含无限层级。类型直接在左侧类型树中管理即可,无需单独界面。 --- 我的某个服务日志以UTF-8编码输出,我在服务配置中也配置了日志读取编码为UTF-8,为什么打开日志窗口,中文乱码? --- 服务卡片上的编辑按钮点不开了,请修复。 --- 左侧分类树里的数量不对,而且会随着分类的点击变化,很奇怪,请修复。 --- 现在,我的一个java服务,在CMD里启动,也配置了字符编码为GB18030,但是日志显示还是乱码。请确认原因。 --- 将弹出框由原生的修改为与当前页面风格一致的弹出框吧。 --- 前期我提过一个需求:“增加一个功能,用于杀死端口冲突的进程。如果自定义变量中包含SERVER_PORT、PORT、serverPort、port等变量,那么使用该功能,自动查询占用该端口号的服务,列出其PID,让用户二次确认后杀掉进程。” 现在,我希望将其扩充,支持SERVER_PORTS、PORTS等变量名,端口号的值以“,”分隔,检测时对每个端口进行占用检测,并支持杀死对应进程。 --- 之前卡片点击的逻辑是,如果某个服务是已启动状态,且包含url,那么可以点击打开该url;现在改一下,无论是否启动,点击都可以打开url吧,因为我有可能以其他方式启动服务。 --- 更新README,然后生成提交日志 ---