T28 启动端口统一由 config.yaml 配置 #30

Closed
opened 2026-08-16 19:10:38 +08:00 by ila · 2 comments
Owner

原始需求摘要

把项目启动时使用的端口配置到根目录 config.yaml。

目标

  • 根目录本地配置统一声明 API 服务端口和管理端开发服务器端口。
  • start-server.bat、start-web.bat、start-all.bat 启动链路读取同一配置。
  • 前端开发环境 API 地址自动跟随后端端口。

非目标

  • 不改生产部署、Docker 端口映射、数据库结构、业务 API 或 Android 设备地址持久化。
  • 不把本机数据库密码写入仓库。

前置依赖

  • T01~T05、T18 已验收;现有本地 MySQL config.yaml 启动链路可用。

是否可并行

不可并行;服务端和前端脚本共享同一配置契约,需一次完成并联合验证。

子项目影响

  • 根目录本地配置及示例配置
  • scripts/、启动 BAT
  • server/config 运行时端口覆盖
  • web 开发启动环境
  • docs/ 本地开发说明与交付索引

方案

  1. 在 config.yaml/config.example.yaml 增加 ports.server 与 ports.web,默认分别为 8000、9527。
  2. 服务端启动脚本校验端口并设置进程级 GOAUTO_SERVER_PORT;服务端配置加载后应用该覆盖。
  3. 新增前端 PowerShell 启动脚本,读取相同端口,设置开发 API 地址,并用配置端口启动 Vite;BAT 继续作为双击入口。
  4. 两个端口必须为 1~65535 且不能相同,错误时启动前明确失败。

验收标准

  • 修改 config.yaml 后,后端监听 ports.server,前端监听 ports.web。
  • 前端开发 API 基地址使用配置后的后端端口。
  • 缺失、非法或相同端口时脚本明确报错且不启动。
  • 默认配置继续使用 8000/9527。
  • 示例配置和本地开发文档同步。

验证

  • PowerShell 配置合法/非法边界验证。
  • Go 单元测试覆盖运行时端口覆盖。
  • 使用非默认空闲端口实际启动后端与前端并检查监听和页面/API 可达性。

风险

  • Android Agent 若仍保存旧服务端 URL,修改后端端口后需要同步修改设备端服务地址。
  • 端口被占用时底层进程仍会启动失败,应保留原始错误输出。

文档影响

更新 docs/04-local-development-and-verification.md、docs/09-delivery-issues.md、config.example.yaml。

## 原始需求摘要 把项目启动时使用的端口配置到根目录 `config.yaml`。 ## 目标 - 根目录本地配置统一声明 API 服务端口和管理端开发服务器端口。 - `start-server.bat`、`start-web.bat`、`start-all.bat` 启动链路读取同一配置。 - 前端开发环境 API 地址自动跟随后端端口。 ## 非目标 - 不改生产部署、Docker 端口映射、数据库结构、业务 API 或 Android 设备地址持久化。 - 不把本机数据库密码写入仓库。 ## 前置依赖 - T01~T05、T18 已验收;现有本地 MySQL `config.yaml` 启动链路可用。 ## 是否可并行 不可并行;服务端和前端脚本共享同一配置契约,需一次完成并联合验证。 ## 子项目影响 - 根目录本地配置及示例配置 - `scripts/`、启动 BAT - `server/config` 运行时端口覆盖 - `web` 开发启动环境 - `docs/` 本地开发说明与交付索引 ## 方案 1. 在 `config.yaml`/`config.example.yaml` 增加 `ports.server` 与 `ports.web`,默认分别为 8000、9527。 2. 服务端启动脚本校验端口并设置进程级 `GOAUTO_SERVER_PORT`;服务端配置加载后应用该覆盖。 3. 新增前端 PowerShell 启动脚本,读取相同端口,设置开发 API 地址,并用配置端口启动 Vite;BAT 继续作为双击入口。 4. 两个端口必须为 1~65535 且不能相同,错误时启动前明确失败。 ## 验收标准 - 修改 `config.yaml` 后,后端监听 `ports.server`,前端监听 `ports.web`。 - 前端开发 API 基地址使用配置后的后端端口。 - 缺失、非法或相同端口时脚本明确报错且不启动。 - 默认配置继续使用 8000/9527。 - 示例配置和本地开发文档同步。 ## 验证 - PowerShell 配置合法/非法边界验证。 - Go 单元测试覆盖运行时端口覆盖。 - 使用非默认空闲端口实际启动后端与前端并检查监听和页面/API 可达性。 ## 风险 - Android Agent 若仍保存旧服务端 URL,修改后端端口后需要同步修改设备端服务地址。 - 端口被占用时底层进程仍会启动失败,应保留原始错误输出。 ## 文档影响 更新 `docs/04-local-development-and-verification.md`、`docs/09-delivery-issues.md`、`config.example.yaml`。
Author
Owner

实施回写

实现提交:cde2a84(feat: configure startup ports from local config (#30))

实现内容:

  • config.yaml 与 config.example.yaml 增加 ports.server、ports.web,本机默认值为 8000/9527。
  • 服务端启动脚本读取并校验端口,通过进程级 GOAUTO_SERVER_PORT 覆盖 go-admin 监听端口。
  • 新增 scripts/start-web.ps1;start-web.bat 保持双击入口并改为读取同一配置,显式固定 Vite host、端口和 strictPort。
  • 前端开发 API 地址自动使用 ports.server。
  • 缺失、超范围或相同端口会在启动前明确失败。
  • 更新本地开发说明、真机验收说明、项目档案和交付工单索引。

验证:

  • go test ./...:通过。
  • pnpm lint:0 errors(仓库既有 30 warnings)。
  • pnpm build:prod:通过(仓库既有 CSS/包体积警告)。
  • start-server.bat -ValidateConfigOnly、start-web.bat -ValidateConfigOnly:默认配置通过。
  • 端口 70000、前后端同端口:均按预期拒绝。
  • 非默认配置 18080/19527 联调:后端和前端实际监听,两个 HTTP 地址均返回 200;Vite 解析出的 API 基地址为 http://127.0.0.1:18080。
  • 测试进程已关闭,本机配置已恢复 8000/9527;原有 8000/9527 服务保持运行。

工单保持打开,等待用户验收。

## 实施回写 实现提交:`cde2a84`(`feat: configure startup ports from local config (#30)`) 实现内容: - `config.yaml` 与 `config.example.yaml` 增加 `ports.server`、`ports.web`,本机默认值为 8000/9527。 - 服务端启动脚本读取并校验端口,通过进程级 `GOAUTO_SERVER_PORT` 覆盖 go-admin 监听端口。 - 新增 `scripts/start-web.ps1`;`start-web.bat` 保持双击入口并改为读取同一配置,显式固定 Vite host、端口和 `strictPort`。 - 前端开发 API 地址自动使用 `ports.server`。 - 缺失、超范围或相同端口会在启动前明确失败。 - 更新本地开发说明、真机验收说明、项目档案和交付工单索引。 验证: - `go test ./...`:通过。 - `pnpm lint`:0 errors(仓库既有 30 warnings)。 - `pnpm build:prod`:通过(仓库既有 CSS/包体积警告)。 - `start-server.bat -ValidateConfigOnly`、`start-web.bat -ValidateConfigOnly`:默认配置通过。 - 端口 70000、前后端同端口:均按预期拒绝。 - 非默认配置 18080/19527 联调:后端和前端实际监听,两个 HTTP 地址均返回 200;Vite 解析出的 API 基地址为 `http://127.0.0.1:18080`。 - 测试进程已关闭,本机配置已恢复 8000/9527;原有 8000/9527 服务保持运行。 工单保持打开,等待用户验收。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:35 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#30