Commit Graph
212 Commits
Author SHA1 Message Date
easyai d5c2c58c67 Merge pull request 'feat(kling): 接入 O1 与 3.0 Omni 兼容接口' (#14) from codex/kling-o1-v3-compat into main
ci / verify (push) Successful in 35m39s
release-ci / verify-tag (push) Successful in 13m50s
v0.3.0
2026-07-22 00:09:49 +08:00
easyai 9d4501bc42 feat(kling): 接入O1与3.0 Omni兼容接口
ci / verify (pull_request) Successful in 15m32s
新增中国区可灵 V1 AK/SK Omni 协议与 API 2.0 兼容路径,补齐任务隔离、外部任务幂等、参数校验和 OpenAPI 文档。\n\n验证:O1 与 3.0 Omni 真实 V1 任务成功;Go、前端、依赖审计、迁移及 CI 脚本门禁通过。
2026-07-21 23:47:13 +08:00
chengcheng e280c0875c Merge pull request 'fix: 修正视频线性计费与在线测试模型筛选' (#13) from codex/fix-linear-video-billing into main
ci / verify (push) Successful in 15m9s
release-ci / verify-tag (push) Successful in 16m46s
v0.2.1
2026-07-21 14:15:19 +08:00
chengcheng 142dcc7932 chore(git): 合并视频时长线性计费修复
ci / verify (pull_request) Successful in 13m41s
2026-07-21 13:34:52 +08:00
chengcheng e3dfe8162b fix(billing): 视频时长按实际秒数线性计费
将五秒基础价按 duration / 5 比例结算,保留 provider 返回的小数时长,避免六秒视频被按两个完整单位收费。

影响:所有使用 5s 视频基础价的模型,quantity 与 durationUnitCount 允许小数。新增迁移同步现存规则的旧 ceil 公式元数据。

验证:go vet ./...;pnpm lint;pnpm test;pnpm build;./tests/ci/migrations-test.sh
2026-07-21 13:32:23 +08:00
chengcheng 69b0c107d3 fix(web): 修正在线测试模型类型筛选
移除可能将 image_to_video 误判为图像模型的子串回退,在没有匹配模型时显示空状态。

新增图像生成、图像编辑和视频模式回归测试。验证通过:前端 94 项测试、类型检查、lint 和生产构建。
2026-07-21 13:12:40 +08:00
chengcheng e533ec2367 Merge pull request 'fix(auth): 修复生产登录卡死与有界超时' (#11) from codex/fix-api-key-pool-deadlock into main
ci / verify (push) Successful in 11m46s
2026-07-21 12:09:39 +08:00
chengcheng bfa17a3aba fix(auth): 为登录链路增加有界超时
ci / verify (pull_request) Successful in 11m22s
为 PostgreSQL 连接、就绪检查和本地登录设置分层超时,数据库不可用时返回稳定 503 错误码并记录无凭据的连接池统计。

前端登录在 10 秒后取消请求并兼容调用方 AbortSignal,Nginx 登录精确路由限制上游为 15 秒,同时更新 OpenAPI 和回归测试。
2026-07-21 11:47:09 +08:00
chengcheng 86c374b5c2 fix(auth): 消除 API Key 校验连接池死锁
先完整收集同前缀候选项并关闭查询结果,再执行 bcrypt 比对和 last_used_at 更新,避免小连接池下查询与更新相互等待。

新增 Rows 关闭顺序、前缀碰撞、MaxConns=1 和 8 并发真实 PostgreSQL 回归测试。
2026-07-21 11:47:09 +08:00
chengcheng 505b074b47 Merge pull request 'fix(runner): 稳定异步任务重启恢复' (#12) from codex/billing-v2-ci-stability into main
ci / verify (push) Successful in 10m55s
release-ci / verify-tag (push) Successful in 12m28s
v0.2.0
2026-07-21 11:42:59 +08:00
chengcheng 8c38714296 fix(runner): 稳定异步任务重启恢复
ci / verify (pull_request) Successful in 10m32s
避免恢复任务将已到期的 next_run_at 误插入 River scheduled 状态,并使用专用模型隔离重启集成测试。\n\n验证:Go 全量测试、govulncheck、pnpm lint/test/build/audit、Compose、镜像、迁移、流水线及 SemVer 门禁全部通过。
2026-07-21 11:29:56 +08:00
chengcheng 1e55f7df8b feat(billing): 完成计费正确性 v2 闭环 (#10)
ci / verify (push) Failing after 3m44s
统一计价、冻结、任务执行、异步结算、人工复核与前端即时估价闭环。

合并前已通过精确 ci / verify (pull_request),包含 PostgreSQL 16 迁移与计费集成测试。
2026-07-21 11:00:19 +08:00
chengcheng 0aa9b3e88f fix(ci): 使用隔离服务运行 PostgreSQL 集成库
ci / verify (pull_request) Successful in 11m30s
将 PostgreSQL 16 改为固定 digest 的 Actions service container,并通过专用 Job 网络向 Go migrator 和集成测试提供数据库。

移除 PR Job 对 Docker CLI 的依赖,继续禁止宿主及内层 Docker API 暴露;同步发布工作流、契约测试和镜像代理恢复说明。
2026-07-21 10:45:52 +08:00
chengcheng 3561efa7da fix(ci): 允许复用固定摘要的 Runner 镜像
ci / verify (pull_request) Failing after 8s
本地已存在完全相同 digest 的 Runner 镜像时跳过外部拉取,继续执行二进制校验与隔离探针;仅在镜像缺失时访问仓库。

避免 Docker Hub 瞬时不可达导致专用 CI Runner 无法恢复。
2026-07-21 10:36:56 +08:00
chengcheng b7bb9ed8d5 fix(ci): 为集成测试提供固定 Docker CLI
ci / verify (pull_request) Failing after 8s
从固定 digest 的 Runner 镜像提取 Docker CLI 29.6.0,校验二进制 SHA-256 后通过只读工具链挂载给 Job。

同步 PR 与 Tag 工作流的版本探针,并增加流水线契约测试,避免 PostgreSQL 集成测试再次因缺少 docker 命令失败。
2026-07-21 10:33:39 +08:00
chengcheng 8beb8501fa fix(billing): 封住发布前计费竞态
ci / verify (pull_request) Failing after 8s
阻止上游提交状态不明的任务被租约接管后重复执行,并为人工复核保留可操作的结算记录。

将生产提交绑定到当前估价签名,统一复用预处理快照,并补强规则形状、定点溢出与历史规则兼容校验。

已通过 PostgreSQL 16 集成测试、Go 全量测试与静态检查、前端测试与构建、OpenAPI、依赖审计、镜像、迁移、流水线和 SemVer 门禁。
2026-07-21 10:23:58 +08:00
chengcheng 257ee09e58 build(deps): 修复构建链高危依赖
pnpm audit 新增报告 Nx 构建链中的 axios、brace-expansion 和 js-yaml 高危漏洞。通过最小 overrides 将其固定到已修复版本,并同步锁文件。\n\n影响:仅调整开发与构建依赖解析,不改变生产运行时计费逻辑。\n\n验证:pnpm install --frozen-lockfile、pnpm audit --audit-level high、pnpm lint、pnpm test、pnpm build 及仓库完整 CI 门禁均已通过。
2026-07-21 09:57:02 +08:00
chengcheng 1362970229 test(billing): 覆盖估价只读与请求重放契约
PostgreSQL HTTP 集成测试验证估价新增字段且不创建任务、冻结余额或写流水,并验证非流式重放只执行一次、异请求冲突及流式重复冲突。
2026-07-21 00:30:44 +08:00
chengcheng 3c82c7b492 ci(billing): 启用 PostgreSQL 计费集成门禁
CI verify 启动 PostgreSQL 16、应用全部迁移并注入 AI_GATEWAY_TEST_DATABASE_URL,使钱包、Outbox、幂等和租约集成测试不再因缺少数据库而跳过。
2026-07-21 00:26:57 +08:00
chengcheng c879de18e2 docs(api): 同步计费结算接口契约
重新生成 OpenAPI,补充估价字段、任务计费状态、管理员结算查询与审计重试接口。
2026-07-21 00:26:11 +08:00
chengcheng 62d25fcb11 feat(web): 增加计费结算异常管理界面
管理端支持按状态查看结算与释放记录,展示精确到九位的小数金额、错误分类和重试次数,并使用一次性 Idempotency-Key 发起审计化重试。
2026-07-21 00:25:57 +08:00
chengcheng 5b2b94b1bd feat(billing): 完成异步结算与请求执行闭环
统一任务成功、Attempt 与结算 Outbox 的事务边界,增加多实例安全结算、人工复核、请求幂等与执行租约。钱包决策使用九位精确金额,并通过审计保护约束保留流水事实;同时补充管理接口、指标与 PostgreSQL 集成测试。
2026-07-21 00:25:53 +08:00
chengcheng 7cea21f765 feat(web): 增加参数即时估价与显式免费编辑
估价请求统一使用 350ms 防抖、AbortController 和请求序号,区分免费、计算中、价格不可用与失败状态,并展示候选冻结上限。价格未就绪时阻止生产提交。\n\n计价规则编辑器新增显式免费开关和 9 位价格步进。\n\n验证:Web 88 项测试和生产构建通过。
2026-07-20 23:22:50 +08:00
chengcheng 5114686c35 feat(billing): 统一计价与候选冻结估算
新增 effective-pricing-v2、9 位十进制定点计算、显式免费校验和结构化缺价错误。估价与生产预处理覆盖全部可用候选,并按最大候选费用冻结;规则优先级为平台模型、平台、基准模型。\n\n同步计价契约和 OpenAPI,补充 Token 参数别名、视频五秒向上取整及缺价回归测试。\n\n验证:go test ./...、pnpm openapi、Web 测试与构建通过。
2026-07-20 23:22:45 +08:00
chengcheng 01a013c809 docs(billing): 固化计费闭环决策与迁移基础
新增 ADR-002、计费流程说明和 0069 增量迁移,建立独立计费状态、结算 Outbox、显式免费与钱包约束。历史成功未扣费任务仅进入人工复核,不执行追扣。\n\n验证:迁移安全验证与 tests/ci/migrations-test.sh 通过。
2026-07-20 23:09:18 +08:00
chengcheng dcf5c4f340 Merge pull request '修复生产 OIDC 相对登录地址跳转' (#9) from codex/fix-oidc-relative-login-url into main
ci / verify (push) Successful in 19m32s
release-ci / verify-tag (push) Successful in 15m28s
v0.1.2
2026-07-20 15:54:13 +08:00
chengcheng d956524690 fix(web): 修复相对 OIDC 登录地址跳转
ci / verify (pull_request) Successful in 22m7s
2026-07-20 15:26:44 +08:00
chengcheng c070cda22a Merge pull request ci: 限制 Go 门禁并发峰值 (#8)
ci / verify (push) Successful in 12m47s
release-ci / verify-tag (push) Successful in 14m2s
修复 rootless DinD runner 在 Go 冷编译期间资源峰值过高导致 daemon 掉线的问题。
v0.1.1
2026-07-17 21:26:27 +08:00
chengcheng f8f8e9a7ca ci: 限制 Go 门禁并发峰值
ci / verify (pull_request) Successful in 14m35s
将 GOFLAGS=-p=1 与 GOMAXPROCS=1 收窄到 Go 验证步骤,降低 2 GiB rootless DinD runner 冷编译时的峰值资源占用。\n\n同时增加流水线结构契约测试,确保主分支与发布工作流都保留相同限制且不会扩散到 Trivy 等其他工具。
2026-07-17 20:02:58 +08:00
chengcheng 82a494051d Merge pull request 'feat(identity): 合并标准统一认证接入与安全事件撤销' (#7) from codex/merge-identity-main into main
ci / verify (push) Failing after 34s
Reviewed-on: #7
2026-07-17 19:36:19 +08:00
chengcheng 4426eeccf7 chore(merge): 整合最新 main 与统一认证变更
ci / verify (pull_request) Successful in 12m18s
合并远端生产 CI、依赖与 API 文档改动,保留统一认证和 SSF 能力。由于远端生产基线已占用 0062,将尚未发布的身份迁移整理为 0063 至 0068 的最终增量 Schema,移除仅用于开发期草稿升级的破坏性迁移步骤。

验证:go test ./...。其余生产门禁在合并提交后继续执行。
2026-07-17 19:06:37 +08:00
chengcheng 5b8178b703 docs(identity): 记录统一认证恢复与重配边界
补充管理员从 Active 禁用到新接入码重配的标准流程,说明 credentials_saved 恢复、SSF 凭据交接、持久清理、Break-glass 与动态 Origin 边界,并明确历史 Revision 仅作审计、当前不支持直接回滚。
2026-07-17 18:32:04 +08:00
chengcheng b179162330 fix(web): 完善统一认证恢复与重配交互
为处理中、失败和清理中的配对展示明确状态与恢复动作,支持放弃并清理、作用域内退役冲突连接,并在 Active 状态引导管理员先安全禁用再使用新接入码。同步修复运行时切换后的浏览器会话残留与确认弹窗焦点约束。

验证:pnpm test;pnpm lint;pnpm build。
2026-07-17 18:31:38 +08:00
chengcheng a312ad880d fix(identity): 完善统一认证配对恢复与安全退役
修复 credentials_saved 状态无法恢复、配对与激活并发冲突,以及 SSF 和身份 Secret 生命周期不完整的问题。新增持久化协调器、取消与清理状态机、事务级并发门禁、受控 SSF 凭据交接、禁用后的延迟 Secret 清理,并对生产环境统一认证及 Discovery 端点强制 HTTPS。

验证:go test ./...;go test -race ./internal/auth ./internal/identity ./internal/identityruntime ./internal/securityevents ./internal/httpapi ./internal/store -count=1;go vet ./...;真实 PostgreSQL 并发及清理成功/冲突回滚测试;pnpm openapi。
2026-07-17 18:31:12 +08:00
chengcheng 6cc24fa978 Merge pull request 'docs: 增加中文协作与提交规范' (#6) from codex/add-chinese-agent-rules into main
ci / verify (push) Successful in 9m1s
2026-07-17 18:21:39 +08:00
chengcheng 1df051ea6c docs: 增加中文协作与提交规范
ci / verify (pull_request) Successful in 8m24s
2026-07-17 18:12:00 +08:00
chengcheng b638bfaa4b Merge pull request 'ci: harden production quality gates' (#5)
ci / verify (push) Successful in 8m41s
2026-07-17 17:32:01 +08:00
chengcheng 86509d5c43 fix(ci): reject procedural migration bodies
ci / verify (pull_request) Successful in 9m24s
2026-07-17 17:04:05 +08:00
chengcheng f226f9c953 ci: enforce production-safe database migrations
ci / verify (pull_request) Successful in 8m50s
2026-07-17 16:59:50 +08:00
chengcheng 74c20b1976 Merge remote-tracking branch 'origin/main' into codex/production-cicd
# Conflicts:
#	pnpm-lock.yaml
2026-07-17 16:21:49 +08:00
wangbo cc3bbeccc2 feat(web): 完善 API 文档与异步任务说明 2026-07-17 15:42:46 +08:00
chengcheng a6e95be0c5 fix(ci): use reachable vulnerability database mirror
ci / verify (pull_request) Successful in 11m20s
2026-07-17 15:38:59 +08:00
chengcheng c67726ca6b security(api): upgrade vulnerable crypto dependency
ci / verify (pull_request) Failing after 6m2s
2026-07-17 15:31:41 +08:00
chengcheng e77ec9e842 security(ci): bound runner resources 2026-07-17 15:22:44 +08:00
chengcheng 5e8fb4276f fix(ci): verify rootless pid namespace without proc links
ci / verify (pull_request) Failing after 6m9s
2026-07-17 15:15:55 +08:00
chengcheng 06f95c5d86 ci: validate runner before registration
ci / verify (pull_request) Failing after 6m9s
2026-07-17 15:08:37 +08:00
chengcheng 1f8c5a3d03 fix(ci): support digest-verified runner mirrors
ci / verify (pull_request) Failing after 7m54s
2026-07-17 14:50:38 +08:00
chengcheng 6ba46514c1 fix(ci): expose pinned node during runner setup
ci / verify (pull_request) Failing after 6m8s
2026-07-17 14:43:27 +08:00
chengcheng 91ea0e6a2d ci: harden production quality gates
ci / verify (pull_request) Failing after 4m18s
2026-07-17 14:23:49 +08:00
wangbo 2d6c16fec0 chore(deps): 更新依赖包版本并添加vitest
- 将typescript从5.8.0更新至5.9.3版本
- 新增vitest依赖包,版本为3.2.4
- 配置vitest的子依赖关系包括@types/debug、jiti、lightningcss和yaml
2026-07-17 13:57:37 +08:00