sun
7984c1880a
feat(installer): M1 安装流程 + /setup 引导页
...
新增:
- installer/lock.go: lock 文件检测/创建/删除(原子写入);ErrLockExists sentinel
- installer/bootstrap.go: Detect() 启动期判定 ModeSetup/ModeNormal,
损坏自愈(自动备份 db.corrupt-<ts> + 删 lock + 回退安装模式)
- middleware/installguard.go: 安装模式白名单(/setup /api/setup /health /metrics),
中间件顺序: SecurityHeaders → InstallGuard → RateLimit → ...(避免限流计数污染)
- controller/setup.go: GET /api/setup/status + /api/setup/prefill + POST /api/setup;
token 校验用常量时间比较防计时攻击;安装后端点永久 404
- router/setup.html: Vue3 + axios CDN,4 字段表单 + 动态音色行,
调用 /api/setup/prefill 自动从旧 env 预填(API key 永不预填)
改造:
- main.go: 启动期 store.Open → installer.Detect → 注入 setup 控制器
- controller/tts.go: 安装模式双保险(/v1/audio/speech 即便漏过中间件也 503)
- controller/health.go (via dto): 加 installed + mode 字段,部署探针可识别
- router/router.go: 挂载 /setup + /api/setup/*,根路径安装模式跳 /setup
- setting/config.go: InitSetupToken 读 TTS_ADMIN_KEY 或随机生成 32 字符 hex
(公网部署建议设 env;空时启动日志一次性打印)
删除:
- router/dashboard.go: 内容并入 router/router.go
.gitignore: tts.db / tts.db-* / installed.lock 加入(运行时产物)
验收(端到端跑通,见 scripts/ 已删除):
1. 删 lock → /v1/audio/speech 503 + /setup 200 HTML
2. POST /api/setup 错 token → 401;对 token → 200 + 写 lock + 写 db
3. 重复 POST → 404(端点永久关闭)
4. /health: 安装期 installed=false,装后 installed=true
5. 损坏 db header: 自动备份 tts.db.corrupt-<ts> + 删 lock + 回安装模式
测试:
- installer: 6 个 test, 覆盖 lock 生命周期 + Detect 三态 + 损坏自愈
- middleware: 3 个 test, 覆盖白名单/denylist/自定义
- store(M0): 仍 27/27 绿, 70.7% 覆盖率
二进制大小: 9.77 → 15.87 MB (+6MB,大部分是 setup.html embed + 新包)
2026-08-29 20:44:33 +08:00
sun
865fdd81e8
feat(store): M0 SQLite 存储层 + modernc.org/sqlite
...
- 引入 modernc.org/sqlite(纯 Go 无 CGO,保持单二进制分发)
- store/db.go: Open/Close/IntegrityCheck + WAL/foreign_keys/synchronous PRAGMA
- store/settings.go: key-value CRUD,Get/Set/Delete/GetAll/SetBatch,带 int/bool/duration 类型 helper
- store/voices.go: 完整 CRUD + ErrDuplicate/ErrNotFound/ErrInUse,name 白名单 [a-zA-Z0-9_-]{1,64}
- store/migrate.go: schema 版本号占位(migrate 调度留待 v2)
- 27 个单测覆盖:CRUD/Pragma/Idempotent/Integrity/Unique/DefaultSpeaker 保护
- 测试覆盖率 70.7%,测试二进制 +0.87MB(预期 +30MB,实际大幅低于预期)
- 不改 setting/config.go、main.go、router、controller(按 M0 计划保持改动局部)
验证: go vet ./... 干净; go test ./... store 包全绿
2026-08-29 20:29:28 +08:00
sun
dc3248d11c
chore: 转移前备份 — cleanup + project book
...
- 删 VULNERABILITY_REPORT.md(已审完,合并到 commit 历史)
- 删 middleware/ratelimit_test.go(单测延后)
- .gitignore 加 *_test.go 规则(防误提交)
- README XFF 验证段措辞更新
- 新增 PROJECT_BOOK.md(v0.1 待评审)
基线备份:目录迁移到非云盘路径前的快照。
2026-08-29 18:40:36 +08:00
sun
8be40ae6dc
chore: embed health.html 到 binary,单文件分发
...
把 health.html 从外部依赖改为 //go:embed 内嵌,
实现真正的"单 exe 分发"。
- 新建 router/dashboard.go,用 //go:embed 嵌入 health.html
- router/router.go:/dashboard handler 改为 w.Write(dashboardHTML)
- setting/config.go:删 CheckStaticFiles(无需文件检查)
- main.go:删 setting.CheckStaticFiles() 调用
- Dockerfile:删 COPY health.html 步骤(已嵌入)
- .gitignore:加 release/(build 产物不入 git)
- 物理移动 health.html 到 router/(embed 限制:同包或子包)
效果:
- 之前: release 包 = tts-api.exe + health.html (2 个文件)
- 之后: release 包 = tts-api.exe (1 个文件,~7 MB)
- 用户部署无需额外文件,/dashboard 路由直接工作
2026-08-27 11:44:44 +08:00
sun
cdc9a7c94b
ci: 添加 GitHub Actions Docker 发布 workflow
...
为 Gitea→GitHub 镜像 + GitHub 镜像仓库场景准备 Docker 镜像
自动构建和发布流程。
触发条件:
- push tag v* (release 时打 tag 自动触发)
- workflow_dispatch (手动触发,可在 GitHub UI 测试)
构建:
- 多平台:linux/amd64 + linux/arm64
- 通过 QEMU + Buildx 跨架构构建
- 推送到 ghcr.io/<github-user>/volcano-engine-tts-ui
- 双标签:语义版本 + 短 commit hash
- OCI labels 包含 version 和 revision
与之前 version 包配合:
workflow 用 git describe --tags --always --dirty 算 VERSION
(commit hash 类似),通过 --build-arg 传给 Dockerfile,
Dockerfile 用 -ldflags 注入到 version.Version / version.Commit
两个变量。最终 /health 端点返回构建时注入的真实版本信息。
前置条件(用户需自行完成):
1. GitHub 建镜像仓库
2. Gitea 配置 Push Mirror 到 GitHub(开启 Sync Tags)
3. 仓库设为 Public(否则 GHCR 镜像默认 private)
2026-08-27 10:43:19 +08:00
sun
c00c46e7a1
chore: 注入构建时版本信息到 /health 端点
...
现状:controller/tts.go:232 硬编码 Version: "2.0.0 (v3 API)",
不会随代码变化而更新,/health 无法反映实际跑的代码。
修复:四文件改动,实现构建时 ldflags 注入。
1. 新建 version/version.go,声明两个包级变量:
Version (默认 "dev")
Commit (默认 "dev")
2. dto/health.go:HealthResponse 加 Commit 字段(JSON 输出多一字段)
3. controller/tts.go:HealthResponse 用 version.Version / version.Commit
替代硬编码字面量
4. Dockerfile:加 ARG VERSION=dev ARG COMMIT=dev,
go build 时通过 -ldflags 注入到 version 包的两个变量
效果:
- 本地 go build (不传 ldflags) → version=dev commit=dev
- 开发 build (git describe) → version=v0.2.0-5-g4abcd5 commit=g4abcd5
- release build (打 tag 后) → version=v0.2.1 commit=<对应 hash>
测试环境(develop 分支,无 tag)显示距离上次 release 几个 commit +
具体 hash;生产环境(main + tag)显示干净 semver。
2026-08-27 10:18:34 +08:00
sun
3b3aa3b708
chore: 清理 DEBT-2 死代码(7 文件,约 30 行)
...
VUL-003 修复期间意外发现项目遗留一批死代码,本次一并清掉:
- middleware/ratelimit_middleware.go(37 行,物理删除)
文件内 RateLimit / ConcurrencyLimit 函数从 977e9cc 创建后
从未被引用,370a217 commit 用 ratelimit_instrumented.go
(带 metrics 埋点 + 路径过滤)取代了它。占用包体,清。
- middleware/auth.go:InitAPIKeys(6 行)
注释说"已在 setting.InitAuthConfig 中完成",无 op。
- middleware/cors.go:InitCORSConfig(6 行)
同上,setting.InitCORSConfig 已做实际工作。
- dto/tts.go:ByteDanceTTSConfig 类型(7 行)
完整的配置走 setting.TTSOptions + adapter/volcano.Options,
此类型从未被任何代码实例化。
- setting/config.go: var _ = dto.ByteDanceTTSConfig{} 占位(3 行)
配合上方类型删除,移除 dto import。
- controller/tts.go:resolveClientFormat
合并 if reqFmt == "" 与 default 分支(都返回
setting.TTSOptions.Format),2 行简化。
- common/constants.go: MaxResponseTimes / MaxErrors
定义后从未被任何文件引用。
- middleware/ratelimit_instrumented.go 顶部注释
移除对"原 ratelimit_middleware.go"的悬空引用,
改为描述本文件相对路由使用实现的两个增强点。
影响:
- 包体减少约 30 行
- 降低新人接手时的代码理解成本
- 零功能变更,24 个现有测试用例全过
2026-08-27 00:57:49 +08:00
sun
695b3ecf25
docs: README 修正 speed 与 sample_rate 描述 (VUL-008 / VUL-009)
...
VUL-008 (信息): speed 超范围静默截断无提示
修复:「API 使用说明」speed 描述从"0.25 ~ 4.0"改为
"客户端接受范围 0.25 ~ 4.0;火山实际生效范围 0.5 ~ 2.0
(speech_rate [-50, 100]),超出范围会被静默截断,客户端无感反馈"。
选 TODO 方案 1(诚实修正文档),不改代码。
VUL-009 (信息): WAV 采样率依赖配置而非上游实际值
修复:BYTEDANCE_TTS_SAMPLE_RATE 描述加风险提示
"此值直接写入 WAV 头,需与上游实际 PCM 采样率一致,
否则音频变速变调"。
上游 v3 协议不返回 sample_rate 字段,代码侧无法自动取真实值,
仅文档强化。
2026-08-26 16:16:56 +08:00
sun
7343d5aa5c
VUL-006 (低): 监控端点 (/metrics /health /dashboard) 无鉴权
...
判定:不引入新鉴权机制(会破坏 Prometheus 抓取),文档引导。
修复:「观测 / Metrics」section 末尾新增「公网部署:监控端点
无鉴权」段,含三端点风险表 + nginx 反代 basic auth 配置示例。
VUL-007 (低): 未设置 OPENAI_TTS_API_KEY 时鉴权完全关闭
判定:不改代码(无 API Key 即不鉴权是 README 明示的设计),
文档强化。
修复:三处加强:
1. 环境变量表 OPENAI_TTS_API_KEY 行加 🔴 公网必设 标记
2. 「API 使用说明」section 顶部 callout 警示
3. 「部署」section 末尾新增「公网部署安全清单」段,统一
覆盖鉴权关闭与监控端点保护,形成完整安全姿态
2026-08-26 16:06:17 +08:00
sun
171503d775
fix: VUL-002 修复 transport 错误埋点缺失
...
VUL-002 (低): transport 层错误不进入 UpstreamErrors 指标
原代码用 if errCode != 0 判断是否记录错误,但合成链路中
多种错误场景的 errCode 本身是 0(火山 v3 业务码非 0 时才
会传入),导致这些场景在 /metrics 上完全不可见:
- transport_error: client.PostStream 失败(DNS / 连接 / TLS)
- request_error : buildRequest 序列化失败
- wrap_error : WAV 头拼装失败
- stream_error (code=0): 读流错误
修复:把判断改为 if status != "ok",status 是上游调用全链
路的权威错误指示器,任何非 ok 状态都计为错误。
codeLabel(0) → "transport" 已有定义,修复后该分类真正生效,
火山接口不可达等网络故障首次在监控上可见。
向后兼容:已统计的 http_XXX 错误(status="http_xxx" != "ok")
行为不变,新增 transport / request / wrap / stream 错误进入指标。
2026-08-26 15:35:24 +08:00
sun
91b0c8acee
fix: VUL-005 修复日志注入(RequestURI 与上游错误体转义)
...
VUL-005 (低): 攻击者可在 HTTP 请求 URL 或上游错误响应中
注入 \n / \r 字符,伪造日志行干扰排障。无代码执行风险。
修复位置:
- middleware/logger.go: 访问日志中的 r.RequestURI 是未经
解析的原始请求行,客户端可控。转义 \n / \r 为字面字符
- adapter/volcano/synthesis.go: 上游非 200 响应体 (rawBody)
可能是攻击者控制的恶意内容,转义后再嵌入错误消息
2026-08-26 11:52:28 +08:00
sun
a238e5c2a4
chore: 忽略本地 TODO.md,避免误提交
...
TODO.md 是本地待办清单,通过任务看板追踪更合适,不入 git 仓库。
2026-08-26 00:37:15 +08:00
sun
272565f736
fix: VUL-003 完整修复,启发式/精确双模式 XFF 解析
...
VUL-003 (中): X-Forwarded-For 信任链可被伪造 IP 绕过限流
本服务定位为公网入口,即使单人使用,公网暴露意味着攻击面
与公开服务等同,不能"够用就行"。
采用渐进式披露设计,平衡易用性与功能性:
1. 启发式模式(默认, 不设环境变量 或 TRUSTED_PROXY_HOPS=0)
- 从 XFF 链尾扫描,跳过私有 IP,返回第一个公网 IP
- 适合 90% 部署(单跳/多跳/直出),无需了解精确跳数
- 限制:多跳 CDN 场景下,限流粒度为"按 CDN 边缘 IP"
- 直出部署:整个 XFF 分支不会执行
2. 精确模式(TRUSTED_PROXY_HOPS=N, N>0)
- 从 XFF 链尾倒数第 N+1 个位置取值
- 精准到真实 client,需按实际反代跳数正确配置
- N=1:单跳反代;N=2:CDN+反代;以此类推
3. 两种模式都从链尾扫描
- XFF 首值是客户端可控的,信任首值等于信任攻击者
- 链尾由受控的反代添加,天然免疫伪造绕过
4. 默认值从 1 改为 0(行为变化)
- 旧默认:精确模式 N=1,取 XFF 末值
- 新默认:启发式模式,跳过链尾私有 IP
- 对单跳场景行为相同
- 对多跳/链尾含私有 IP 场景新版更准确(返回真实公网 IP)
5. 配套
- middleware/ratelimit_test.go:24 个表驱动测试用例,
覆盖直出/单跳/多跳/伪造/畸形/精确 N 边界,全部通过
- setting/config.go:LogStartupSummary 显示当前 XFF 模式
- .env.example:重写说明,标注默认行为 + 何时需配
- README.md:新增"反代拓扑与 X-Forwarded-For 解析"章节
(何时需要/两种模式/行为对比/为什么从链尾/启动日志验证)
6. 已知边界:TRUSTED_PROXY_HOPS=00 等被 Atoi 解析为 0 的
输入归入启发式模式,日志不会出现"精确模式 0 跳"矛盾输出。
2026-08-26 00:36:22 +08:00
sun
ed3d7c6b61
本次代码审查(全 12 个包,约 2400 行)的交付物:
...
- 9 项漏洞(高 1 / 中 2 / 低 4 / 信息 2)
- 已核查无风险项 8 条
- 工程债务记录(零测试、死代码、云盘占用)
- 安全加固建议(Docker 密钥传递、TLS、依赖固定)
供后续按优先级处理备查。
"
2026-08-25 23:10:34 +08:00
sun
72d0d6a3a9
VUL-001 (中): aac/flac 响应 Content-Type 与真实数据不一致
...
controller.tts.go:contentTypeFor 对 aac/flac 返回 audio/aac/flac,
但 adapter/volcano/synthesis.go 在上游降级时仅修改 opts.Format,
finalFormat 仍保留 clientFormat,导致响应头与字节流不符。
修复:finalFormat 改为反映真实输出格式(非 wav 时取 opts.Format),
客户端按 AAC/FLAC 解码 MP3 流的失败场景消除。
VUL-004 (高): .env 凭据泄露
README 引导用户 cp .env.example .env 填密钥,但 .gitignore
未忽略 .env,任何 git add . 都会把含 BYTEDANCE_TTS_API_KEY
的文件提交进 git 历史,不可逆。
修复:
- .gitignore 新增 Secrets section,拦截 .env 与 .env.* 变体,
保留 .env.example 作为模板追踪
- .dockerignore 升级为同名规则模式,覆盖未来 .env.local /
.env.production 等变体,保证 git 与 docker 两通道一致
详见 VULNERABILITY_REPORT.md
"
2026-08-25 23:09:47 +08:00
sun
78c72004bf
chore: 删除 ratelimit_middleware.go.tmp 临时文件
...
与 ratelimit_middleware.go 内容完全重复(SHA256 一致,1116 字节),
且无任何代码引用 .tmp 路径,属于误提交的开发期残留文件。
2026-08-23 13:15:15 +08:00
sun
370a21760c
fix: 限流和并发中间件跳过非 /v1/ 路由,避免监控路径污染计数
2026-08-16 18:50:33 +08:00
sun
f971de6821
chore: 删除无用的预检测试脚本 _preflight.js
...
该脚本仅用于本地测试,不属于项目核心代码,清理冗余文件减少项目杂乱度
2026-08-16 18:43:56 +08:00
sun
0f7102a41d
fix: 补上 dashboard 缺失的 formatBytes 函数定义
2026-08-16 18:41:33 +08:00
sun
ec2b78533d
test: add preflight check test script for cors
...
新增了用于测试CORS预检请求的_node脚本,包含OPTIONS预检请求和实际POST请求的测试逻辑,用于验证接口的跨域配置是否正确。
2026-08-16 18:35:34 +08:00
sun
36e0d87cec
ui: 替换 unpkg 为 bootcdn 国内 CDN
2026-08-16 18:32:58 +08:00
sun
c4e278d544
ui: 重写监控面板,解析Prometheus指标分组展示,移除原始文本iframe
2026-08-16 18:13:04 +08:00
sun
5519697f87
fix: merge case sentence and empty to handle audio frames with empty event field
2026-08-16 18:03:21 +08:00
sun
78bb7d87ab
refactor: remove fallback audio collection in case empty after namespace fix
2026-08-16 17:56:49 +08:00
sun
d516dddf1d
fix: namespace 修正为 UnidirectionalTTS 匹配 HTTP 单向端点
2026-08-16 17:54:43 +08:00
sun
677f606935
fix: 修复上游省略event字段导致音频帧被丢弃的bug
2026-08-16 17:50:02 +08:00
sun
55244e9a45
fix: 修复 response.go switch 语句大括号结构错误
2026-08-16 17:32:00 +08:00
sun
483db85259
fix: 兼容上游 sentence 字段为对象/字符串两种形态,加 debug 打印无 event 元数据行
2026-08-16 17:27:20 +08:00
sun
b4b8ec33ed
docs: 重写README,补充BYTEDANCE_TTS_DEBUG调试日志独立小节
2026-08-16 14:41:07 +08:00
sun
cdd143f7e2
docs: 移除复刻1.0相关内容,仅保留2.0
2026-08-15 19:17:42 +08:00
sun
c84f99a13f
docs: 更新README补充TTS可选参数、调试日志、音频格式说明
2026-08-15 19:12:40 +08:00
sun
155fab6b4b
feat: add debug log control and optimize error response and cors log
...
- add DebugLog global variable controlled by BYTEDANCE_TTS_DEBUG env
- enable debug logs for cors, tts upstream, response parsing etc when debug mode is on
- update tts error response to use standardized json error format
- add dashboard and metrics path to cache-control exempt list
2026-08-15 19:03:37 +08:00
sun
1455e4bf80
fix: 修复 synthesis.go 类型不匹配编译错误 ([]byte→string)
2026-08-15 17:55:13 +08:00
sun
f75a8461d1
chore: 移除文件开头多余的UTF-8 BOM头
...
修复多个文件中存在的隐藏BOM字符问题,包括go.mod、README.md、health.html和.env.example,同时更新go.sum文件的校验和
2026-08-15 15:02:00 +08:00
sun
81fcc9fff4
chore: 清理多余的BOM头并整理依赖与telemetry代码
...
- 移除所有文件开头的多余UTF-8 BOM头
- 简化go.mod依赖,移除未使用的uuid包
- 重构telemetry包:将Meter改为接口并拆分默认实现
2026-08-15 14:38:14 +08:00
sun
5b970f49e1
feat: 实现完整可观测性架构与火山v3适配器重构
...
重构整体架构:
1. 新增telemetry包实现零依赖的Prometheus指标系统
2. 新增metrics包集中管理业务埋点指标
3. 重构火山v3适配器,拆分client/request/response等模块
4. 替换旧的service/stats统计系统为标准指标埋点
5. 新增/metrics观测端点与完整仪表盘支持
功能更新:
- 实现基于IP的限流与并发限制,添加指标埋点
- 重构TTS控制器,支持多格式输出与完整错误分类
- 更新.env.example配置示例,新增多项可选参数
- 替换旧的volcano适配器实现,支持完整的v3 API特性
- 清理冗余代码,移除service/stats与旧adapter实现
2026-08-15 13:30:35 +08:00
sun
07a7dd450c
refactor(tts): 简化火山TTS实现,移除可配置格式采样率等参数
...
重构了火山TTS的适配器与配置逻辑,移除了格式、采样率、model等可配置项,固定使用wav/24000Hz参数,简化请求流程并删除冗余的格式转换、WAV头拼装逻辑,同时更新文档与环境变量配置。
2026-07-01 18:27:07 +08:00
sun
638dcc7721
fix: 更新字节语音合成默认模型为音色复刻路由适配版本
...
更新了默认模型值从seed-tts-2.0-standard为seed-icl-2.0,同步修改了配置检查逻辑、文档说明,修正了复刻音色的使用指引,解决默认模型与复刻资源不匹配导致的55000000错误问题。
2026-07-01 15:02:43 +08:00
sun
7e2d050d51
feat(volcano): add upstream TTS request diagnostic log
...
移除了README中旧的环境配置日志说明部分,新增火山TTS上游请求的诊断日志,打印关键请求参数和请求体用于排查问题
2026-07-01 14:31:40 +08:00
sun
f39c72acbe
refactor(setting): 优化配置启动日志与错误提示
...
1. 移除main.go中重复的TTS配置错误警告
2. 统一日志中文全角逗号格式
3. 新增TTS配置项脱敏掩码函数
4. 完善启动日志的必填项检查和状态展示
5. 调整TTS配置错误的提示文案,明确500路由情况
2026-07-01 00:13:15 +08:00
sun
7e1102902d
refactor(volcano adapter): 重构火山 TTS 适配器请求体结构与错误处理
...
重构请求体为类型安全的结构体实现,替换原有的map动态构造方式;统一错误处理为fmt.Errorf包装原始错误,优化注释与代码格式,提升代码可维护性与可读性。
2026-06-30 23:34:45 +08:00
sun
746da76fa4
chore: 新增os包导入以支持系统信号处理
...
补充导入os包,完善依赖引入完整性
2026-06-30 22:39:26 +08:00
sun
3dc9632c1b
refactor(setting): 集中管理环境配置并新增启动日志汇总
...
1. 将所有环境变量读取逻辑迁移至setting包统一管理,移除各模块直接os.Getenv调用
2. 新增全局配置结构体统一管理服务端口、鉴权、跨域等配置
3. 添加启动期配置汇总日志,方便运维核对环境配置生效情况
4. 重构鉴权和CORS中间件,改为读取全局配置而非直接读取环境变量
5. 优化health端点的环境变量检查逻辑,使用已加载的全局配置而非重复读取环境
2026-06-30 20:55:56 +08:00
sun
0aad65ed78
chore(docker): add compose file version declaration
...
补充docker-compose.yml的版本声明,规范compose文件格式
2026-06-27 23:49:09 +08:00
sun
21b86bfcfe
feat: 新增音频格式与采样率配置,完善OpenAI兼容格式映射
...
1. 新增BYTEDANCE_TTS_FORMAT和BYTEDANCE_TTS_SAMPLE_RATE环境变量配置
2. 实现OpenAI TTS格式到火山API格式的映射转换
3. 自动处理wav格式:内部用pcm请求后封装标准WAV头
4. 动态设置响应Content-Type,适配不同输出格式
5. 更新文档与配置示例,完善日志与错误处理
2026-06-27 23:28:35 +08:00
sun
82cc68e7ee
chore(setting): add check for ALLOWED_ORIGINS environment variable
...
新增对ALLOWED_ORIGINS环境变量的存在性检查,完善环境变量校验逻辑
2026-06-27 14:42:55 +08:00
sun
361a9d6401
fix(middleware): 修复日志输出乱码问题
...
将原本乱码的日志提示替换为简体中文正常文本,提升日志可读性
2026-06-27 14:31:10 +08:00
sun
15b0470cc8
feat(volcano-tts): add support for v3 model parameter
...
1. 新增BYTEDANCE_TTS_MODEL环境变量支持,为火山TTS v3 API配置子模型版本
2. 为复刻音色添加默认兜底模型,修复55000000报错问题
3. 更新文档说明v3 API调用规则与环境变量配置
4. 修正语速转换的范围限制,匹配官方文档规范
2026-06-27 14:09:46 +08:00
sun
bcbd796fa5
docs: 更新README的日志查看文档
...
补充了完整的日志分类、示例和排查技巧,优化日志说明结构
2026-06-26 23:13:03 +08:00
sun
8592843bdf
refactor(tts controller): add detailed request logging for TTS handler
...
新增truncateForLog工具函数处理日志截断,为各个请求校验环节和错误场景补充详细日志记录,包括请求方法、鉴权状态、配置错误、请求体读取、参数校验以及合成失败等场景,同时记录客户端IP、请求路径等上下文信息,方便问题排查。
2026-06-26 23:09:27 +08:00
sun
b93ede29e0
docs: 更新README,添加CORS配置和相关排障说明
...
新增ALLOWED_ORIGINS环境变量文档,补充资源ID匹配错误、PowerShell curl使用的排障内容,更新日志排查项
2026-06-26 22:57:02 +08:00
sun
4aed9667b7
fix(adapter/volcano): 修改火山语音合成的命名空间为UnidirectionalTTS
...
将原BidirectionalTTS命名空间调整为UnidirectionalTTS,适配接口要求
2026-06-26 21:53:46 +08:00
sun
03bb98beb8
fix: 修复日志输出乱码和缺失换行符的问题
...
修复了两处日志问题:一是将乱码的中文提示改为正确的"配置初始化成功",二是为两条警告日志补充了换行符,保证日志输出格式正确。
2026-06-26 21:07:35 +08:00
sun
bc42295ff6
chore(controller/tts): 移除未使用的log导入包
...
删除了tts控制器文件中不再需要的log标准库导入
2026-06-26 20:46:34 +08:00
sun
f704e7d71d
build(docker): 将go基础镜像版本从1.23升级到1.26
...
更新构建镜像使用的golang官方镜像版本,以获取最新的语言特性和安全补丁
2026-06-26 20:43:44 +08:00
sun
61431e00ba
refactor: 重构并优化项目多项功能
...
1. 调整CORS中间件挂载位置,重构CORS处理逻辑
2. 重写IP获取逻辑,增加私有网络IP信任校验
3. 优化日志中间件,移除/health接口单独日志逻辑
4. 改进API密钥未配置时的提示信息
5. 重构volcano TTS调用,新增voice参数支持
6. 优化请求体过大错误处理
7. 完善统计服务,修复环形缓冲区遍历逻辑,新增去重错误日志功能
2026-06-26 19:12:50 +08:00
sun
3d50b6c69d
fix: 修复代码格式、乱码和CORS校验问题
...
1. 修复tts.go中多余的缩进错误
2. 修复main.go和auth.go中的中文乱码问题,修正日志文本
3. 修复CORS校验逻辑,将origin转为小写后再判断协议前缀
4. 修正auth.go中API密钥未配置时的提示逻辑
2026-06-23 10:23:44 +08:00
sun
977e9ccadb
build: 升级go版本到1.26并添加限流中间件
...
1. 调整go.mod将Go版本升级至1.26
2. 新增速率限制和并发限制中间件,将其加入路由中间件链
3. 重构TTS处理逻辑,将限流逻辑迁移至中间件统一处理
4. 优化CORS中间件代码,移除冗余日志和格式调整
2026-06-22 18:13:35 +08:00
sun
b92d3dbc00
fix(middleware/cors): 完善CORS中间件的日志和校验逻辑
...
1. 修复了变量缩进的格式问题
2. 添加初始化时的白名单来源打印
3. 优化origin校验逻辑,兼容大小写的协议前缀
4. 新增各阶段的CORS请求日志
5. 修正日志中的客户端IP字段名
6. 修复文件末尾缺失换行符的问题
2026-06-22 13:47:17 +08:00
sun
b92973cdc9
chore: 移除废弃的tts-api.exe并修复文件头部bom问题
...
删除了不再使用的tts-api.exe可执行文件,同时移除了common/constants.go文件头部多余的BOM头。
2026-05-27 14:19:22 +08:00
sun
be6c2ad34e
Revert "fix: 修复请求体过大处理和冗余代码问题"
...
This reverts commit 23b962a90e .
2026-05-26 10:42:41 +08:00
sun
23b962a90e
fix: 修复请求体过大处理和冗余代码问题
...
1. 修复OpenAI TTS接口的请求体过大错误提示,返回正确的状态码和提示信息
2. 删除volcano适配器中无用的空循环扫描代码
3. 修正constants.go的包声明重复空格问题
2026-05-26 10:41:47 +08:00
sun
9b2a1d1531
feat: 添加安全中间件、优化限流器与API密钥验证
...
1. 新增安全响应头中间件强化请求安全性
2. 使用恒定时间比较修复API密钥验证时序漏洞
3. 新增限流器条目上限配置与自动清理逻辑
4. 优化CORS日志与客户端IP获取逻辑
5. 升级Go构建环境与基础镜像版本
6. 新增非root用户运行容器增强安全性
2026-05-24 15:33:27 +08:00
sun
9c35f780db
功能 (语音合成):新增语音合成请求的模型名校验
...
新增模型名最大长度常量,限定字符上限为 64 位
传入模型名称时,校验名称长度并拦截非法控制字符
移除闲置的 tts-api.exe 可执行文件
2026-05-24 11:52:57 +08:00
sun
7bedb222d1
chore: 删除过时的TTS API架构设计文档
...
移除了不再维护的tts_api_architecture.html文档文件,清理项目冗余资源。
2026-05-23 20:44:20 +08:00
sun
4e1820d45b
refactor: 重构项目架构,拆分代码到模块化目录
...
将单文件tts_server.go重构为模块化项目结构,拆分出common、dto、middleware、router、controller、service、adapter、setting等目录,优化代码组织提升可维护性
2026-05-23 20:32:12 +08:00
sun
1b84a6c9ee
refactor(health dashboard & tts server): 优化健康页面展示与服务配置
...
- 重构健康页面配置状态展示,替换原有资源ID和发音人字段
- 简化错误记录展示逻辑,改为统计展示错误数量并提示查看日志
- 调整HTTP客户端连接池配置与请求体缓冲区大小
- 重构速率限制逻辑位置,优化请求处理流程
- 重写CORS配置,支持环境变量白名单和通配符模式
- 增加静态文件检查与更严格的跨域校验
- 调整服务器超时配置,适配更长时间的请求处理
2026-05-22 23:32:10 +08:00
sun
4c93638250
feat(tts server): 新增跨域白名单配置并优化错误处理
...
1. 重构CORS中间件,支持通过ALLOWED_ORIGINS环境变量配置跨域白名单,默认允许所有来源并添加凭证支持
2. 优化TTS服务错误响应体读取逻辑,处理读取失败的情况
3. 精简健康检查接口返回的冗余配置信息
4. 删除部分重复的配置日志输出
2026-05-20 22:26:21 +08:00
sun
45591a4e3a
feat: add web dashboard for TTS service monitoring
...
新增了可视化的服务监控面板,添加了/health接口的扩展信息展示,将根路径重定向到监控面板页面,包含服务状态、请求统计、错误记录等监控数据
2026-05-20 19:48:55 +08:00
sun
f3197338d4
refactor(tts): 添加限流器清理和多项优化
...
1. 为限流器增加定期清理过期请求记录的功能,减少内存占用
2. 重构httpPostStream使用context超时管理,复用全局http客户端
3. 调整synthesis函数返回结果结构,新增请求ID字段
4. 优化请求体读取错误处理,细化错误响应
5. 为TTS响应添加X-Request-Id响应头
2026-05-18 23:13:34 +08:00
sun
00460771c4
feat: 添加并发限流保护并更新文档
...
- 新增全局并发请求限制,最多同时处理10个TTS请求
- 更新健康检查接口,新增配置检查和统计信息返回
- 调整响应格式文档,仅保留wav格式支持说明
- 补充限流机制说明和触发后的响应示例
- 优化日志输出,限流时打印中文警告日志
2026-05-17 23:42:10 +08:00
sun
08c529c375
refactor: 移除旧版鉴权模式,仅保留API Key鉴权
...
简化了配置逻辑,删除了Legacy鉴权相关的环境变量、代码判断分支和文档说明,统一使用API Key进行鉴权,降低配置复杂度
2026-05-17 22:27:13 +08:00
sun
92c6b8b701
fix(tts server): 优化TTS服务配置错误处理逻辑
...
1. 将初始化TTS配置的致命错误改为警告,服务继续运行
2. 在TTS请求和健康检查中加入配置错误判断,返回对应错误信息
3. 在健康检查详情中添加配置错误状态和提示信息
2026-05-17 18:51:43 +08:00
sun
3304707abe
feat: 升级项目适配火山引擎TTS v3 API
...
新增:
- 添加.env.example环境变量配置示例
- 重构鉴权逻辑,支持新旧两种鉴权模式
- 适配v3版API接口,实现流式响应
- 完善README文档和配置说明
移除:
- 删除原Linux启动脚本start_linux.sh
优化:
- 重构代码结构,适配新的API参数格式
- 优化日志输出和错误处理
2026-05-17 18:08:06 +08:00
sun
25e09cd54f
Revert "ci: 添加Gitea工作流用于Go项目部署到宝塔"
...
This reverts commit 00e7d34b03 .
2026-05-10 22:32:20 +08:00
sun
00e7d34b03
ci: 添加Gitea工作流用于Go项目部署到宝塔
...
Go CI/CD Deploy to Baota / build-and-deploy (push) Failing after 5m12s
添加CI/CD工作流配置,实现代码推送时自动构建Go项目并部署到宝塔服务器
包含环境安装、项目编译、进程管理和部署重启步骤
2026-05-10 20:04:18 +08:00
sun
48570e54a7
refactor(server): 重构TTS服务代码并更新依赖
...
- 将tts_server_linux.go重命名为tts_server.go
- 更新go.mod中的依赖版本
- 删除不再需要的文档和报告文件
- 修复代码格式和缩进问题
- 优化健康检查端点减少敏感信息暴露
2026-05-10 19:02:51 +08:00
sun
4450d1faf4
fix(security): 移除硬编码凭据并强化API密钥验证
...
feat(performance): 实现HTTP连接池复用和速率限制
refactor: 优化统计数据结构为环形缓冲区
docs: 添加安全与性能修复报告和Windows部署指南
chore: 清理未使用的依赖并更新依赖版本
2026-05-09 17:43:20 +08:00
sun
7c6e6af08a
从Volcano-Engine-TTS迁移的原文件,后续将为其适配UI
2026-05-09 17:06:41 +08:00