Page:
Task-38-统一本地服务启停
Pages
Architecture-and-Code-Map
Audience-Document-Template
Business-Rules-and-Glossary
Common-Changes
Delivery-Documentation-Guide
Deployment-Template
Deployment-and-Operations
Development-Workflow
Existing-Project-Adoption-Guide
Home
Local-Development-and-Verification
New-Project-Documentation-Setup
Product-Requirements-Overview
Project-Profile
Task-1-完善技术基线与实施约束
Task-10-实现-Provider-协议、mock-上游与内嵌-worker
Task-11-实现-portal-认证、异步提交与鉴权查询
Task-12-按确认原型实现-portal-用户界面
Task-13-完成-MVP-0-集成验收与运行闭环
Task-14-增加-Windows-本地开发启动脚本
Task-15-将现有-worker-接入-portal-运行与优雅退出
Task-16-明确-MVP-1-路由与-Provider-技术设计
Task-17-制作-MVP-1-管理端运营原型
Task-18-制作-MVP-1-用户端增强原型
Task-19-MVP-1-多上游可用性与运营管理
Task-2-制作-MVP-0-用户端生成页原型
Task-20-MVP-1-可逆迁移与-admin-基线
Task-21-MVP-1-路由核心与故障转移
Task-22-MVP-1-多-Provider-协议安全调用与-Worker-原子尝试
Task-23-MVP-1-管理端-API、凭据轮换与连通性审计
Task-24-go-admin-MVP-1-运营界面
Task-25-MVP-1-portal-提交契约与游标历史
Task-26-MVP-1-portal-用户界面
Task-27-MVP-1-集成验收
Task-28-安全管理员-bootstrap-命令
Task-29-管理端改为账号密码登录
Task-30-Provider-API-Key-明文存储与回显变更
Task-31-完全移除用户点数展示与需求
Task-32-移除-admin-ui-残留验证码登录交互
Task-33-修复-admin-ui-生产构建-runtime-资源缺失
Task-34-修复-admin-ui-SCSS-变量导入生产白屏
Task-36-MVP-2-API治理技术设计
Task-37-MVP-2-API-Key页面原型
Task-38-统一本地服务启停
Task-39-Supervisor-托管本地服务
Task-4-MVP-0-单上游安全异步生成闭环
Task-40-修复管理端动态菜单视图路径
Task-41-MVP-2-数据迁移与-API-Key-核心能力
Task-42-用户-API-Key-生命周期与-Portal-页面
Task-43-OpenAPI-v1-认证与生成接口
Task-44-实现三维限流与生成队列延后
Task-45-实现-API-安全审计与管理端-API
Task-46-交付管理端-API-Key-治理页面
Task-47-执行-MVP-2-跨模块集成验收
Task-48-简化单人开发工作流
Task-5-准备-MVP-0-可复现开发与测试环境
Task-50-用户端仅账号密码登录
Task-51-终端用户密码最小长度调整为-6-位
Task-52-规范化管理端-API-Key-幂等撤销时间响应
Task-53-修复-MVP-2-Portal-E2E-审计数据清理顺序
Task-55-Provider-出站端口白名单配置
Task-56-Portal-YAML-运行配置
Task-58-图片生成-300-秒受控复验
Task-59-管理端分组导航与适用系统模块原型
Task-6-初始化-Go-项目骨架与可逆数据库迁移
Task-60-??-images_edits-??????.-
Task-60-对齐-images_edits-图片编辑协议.-
Task-61-修正生成尝试状态展示
Task-65-完善生成记录耗时和时间展示
Task-66-建立管理端四分组菜单与权限-migration
Task-67-适配管理端系统-API-与管理员保护
Task-68-实现四分组导航与系统管理页面
Task-69-管理端系统模块集成与安全回归
Task-7-实现核心领域模型、状态规则和-Prompt-渲染
Task-8-实现-SSRF-安全-HTTP、AES-GCM-密钥信封和受保护本地存储
Task-9-实现-MySQL-8-SKIP-LOCKED-租约队列、attempt-原子记录和最终-CAS
Task-Archive-Template
Troubleshooting
unnamed
Clone
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
38 统一本地服务启停
- 类型:开发工具 / 启动配置
- 所属 Epic:#3
- 所属 MVP / 版本:#35 / MVP-2 开发基础设施
- 状态:已完成
- 日期:2026-08-24
- Gitea 工单:#38
- Wiki 页面:Task-38-统一本地服务启停
背景与目标
统一 Windows 本地 Portal、Admin API 和 Admin UI 的 Host/端口入口及启停命令,同时保持 Portal 环境文件和 Admin settings 的敏感配置隔离。
最终方案
config/local-services.yml只保存 loopback Host、端口和配置文件路径;Portal 默认 8080,Admin API 从 settings.yml 读取 8090,Admin UI 默认 9528。- 严格 Go YAML 解析拒绝未知字段、非 loopback Host、无效/重复端口和缺失引用文件,只输出启动所需的脱敏投影。
start-all.bat按 Portal、Admin API、Admin UI 顺序启动;Admin 编译为受管二进制,Admin UI 直接运行锁定的 Vue CLI,并注入 Admin API 基址。status-all.bat区分受管运行、停止和非受管监听;stop-all.bat只停止 PID 与可执行路径匹配的受管进程。- 启动中途失败只回滚本次新启动的组件,不执行 migration、AutoMigrate、seed、bootstrap 或依赖安装。
- 实施时发现默认 9527 已由无关项目使用,脚本正确拒绝接管并回滚 Admin;为保留现有进程,Chorus 默认端口最小调整为 9528。
修改文件
cmd/chorus-local-config/main.go、internal/localservices/:严格配置解析、脱敏投影和单元测试。config/local-services.yml:非敏感统一服务配置。scripts/chorus-all.ps1、scripts/start-all.bat、scripts/status-all.bat、scripts/stop-all.bat:统一进程管理入口。scripts/chorus-dev.ps1:兼容增加显式 Portal 地址和只停止 Portal 的内部命令。docs/00-project-profile.md、docs/04-local-development-and-verification.md、docs/10-deployment-and-operations.md:Wiki 生成镜像。
验收结果
| 验收标准 | 结果 |
|---|---|
| YAML schema、loopback、端口、路径、未知字段和脱敏输出 | 通过 |
| 三服务按序启动、状态识别和 HTTP 可达 | 通过 |
| 精确停止且不停止非受管监听者 | 通过 |
| 端口冲突拒绝接管并回滚本次新进程 | 通过 |
| 现有 chorus-dev 入口兼容 | 通过 |
| Wiki、测试、提交和远端证据完整 | 通过 |
| 用户明确验收 | 通过(2026-08-24) |
测试
go build ./...、go vet ./...、go test ./...:通过。go -C admin build .:通过。- PowerShell AST 解析
chorus-all.ps1、chorus-dev.ps1:通过。 - 隔离 19527 端口执行 start/status/HTTP/stop:三服务受管,Portal 与 Admin UI 返回 200,停止后原非受管 9527 保持运行。
- 默认 9527 冲突验证:拒绝接管、Admin 自动回滚、已有 Portal 保持运行。
- 调整为 9528 后默认
start-all:Portal 8080、Admin API 8090、Admin UI 9528 均为受管运行,三个 HTTP 检查返回 200。 python -m unittest discover -s tests -v:42 项通过。python dev_scripts/harness.py check --strict、sync --check、git diff --check:通过。- 未验证部分:未执行生产部署、反向代理路径改造或真实发布;未运行 migration、seed、账号变更或真实 Provider 请求。
遗留问题
生产单一 Host 仍需独立部署工单验证路径前缀、同源 API 基址、Cookie、CORS、CSP 和 HTTPS;#38 只交付本地统一入口。
相关提交
人工验收
- 验收人:用户
- 验收时间:2026-08-24
- 结果:#38 验收通过。