| Files | Last commit | Last update |
|---|---|---|
feat(quality): 多租户隔离加固 + 依赖清理 + 仓库治理(v1.20.0) | 16 days ago | |
feat(shopper): 买家端 AI 导购 — 工具集隔离的选购 Agent(v1.11.0) - server/modules/shopper/*:5 个买家工具(搜索/分类/详情/我的购物车/加购), 与卖家 11 个工具零交集,独立注册表而非运行时过滤 - 加购走同一套人工确认:先落 copilot_actions(pending),买家确认后才调 CartService - 匿名可用:按 x-session-id 归属,其他 session 访问返回 404 - 前端 ShopperWidget:买家全站浮窗,4 语、快捷问题、加购卡片、会话恢复 - 迁移 0004:copilot_conversations.channel/session_id、copilot_actions.session_id - 测试 89/89(新增 9 例);smoke:shopper 6 步、smoke:copilot 10 步全通过 - AQG construction check PASSED (path=plan, files=27) | 18 days ago | |
feat(notify): 分渠道排版 + 体检一键补全(v1.18.0) - 通知按渠道渲染:webhook=markdown、email=HTML 表格、日志=plain 同源数据;HTML 全字段转义防注入 - 体检一键补全文案:POST /api/copilot/products/backfill-copy 只补空缺字段(英文标题/长描述/卖点/SEO),已填不覆盖;逐条隔离失败 - 前端:漏斗弹窗「一键补全文案」,补全后自动刷新体检 - 验证环境:Docker Desktop 引擎故障,改用 embedded-postgres(devDependency) 完成全量 E2E —— 补跑上轮未验证项 - 测试 138/138;smoke:copilot 17 步 / shopper 9 步 / workflows 16 步 / providers 18 步全通过 - AQG construction check PASSED (path=plan, files=16) | 17 days ago | |
feat(notify): 分渠道排版 + 体检一键补全(v1.18.0) - 通知按渠道渲染:webhook=markdown、email=HTML 表格、日志=plain 同源数据;HTML 全字段转义防注入 - 体检一键补全文案:POST /api/copilot/products/backfill-copy 只补空缺字段(英文标题/长描述/卖点/SEO),已填不覆盖;逐条隔离失败 - 前端:漏斗弹窗「一键补全文案」,补全后自动刷新体检 - 验证环境:Docker Desktop 引擎故障,改用 embedded-postgres(devDependency) 完成全量 E2E —— 补跑上轮未验证项 - 测试 138/138;smoke:copilot 17 步 / shopper 9 步 / workflows 16 步 / providers 18 步全通过 - AQG construction check PASSED (path=plan, files=16) | 17 days ago | |
feat(copilot): 定时巡检 + 缺口建草稿 + 商品级漏斗(v1.14.0) - 定时巡检 CopilotWatchService:原生定时器(零新依赖),默认关闭, 间隔 5-1440 分钟;ai_settings 原子租约做跨实例互斥;只对新增告警出摘要 GET/PUT /api/copilot/watch + POST /api/copilot/watch/run - 缺口一键建草稿:POST /api/copilot/shopper-demand-gaps/draft 新增第 12 个工具 create_draft_product,仍走审批,批准后为 draft 状态 - 商品级漏斗:GET /api/copilot/shopper-product-funnel 每商品推荐/加购/下单会话 + 加购转化率;详情查看也计入被推荐 - 前端:漏斗弹窗新增商品级表格与「建草稿」按钮;巡检设置新增定时巡检开关 - 测试 109/109;smoke:copilot 13 步 / smoke:shopper 9 步 / smoke:workflows 16 步全通过 - 修复:商品级漏斗 SQL 数组绑定(ANY($1) → sql.join 占位符) - AQG construction check PASSED (path=plan, files=23) | 17 days ago | |
feat(copilot): 定时巡检 + 缺口建草稿 + 商品级漏斗(v1.14.0) - 定时巡检 CopilotWatchService:原生定时器(零新依赖),默认关闭, 间隔 5-1440 分钟;ai_settings 原子租约做跨实例互斥;只对新增告警出摘要 GET/PUT /api/copilot/watch + POST /api/copilot/watch/run - 缺口一键建草稿:POST /api/copilot/shopper-demand-gaps/draft 新增第 12 个工具 create_draft_product,仍走审批,批准后为 draft 状态 - 商品级漏斗:GET /api/copilot/shopper-product-funnel 每商品推荐/加购/下单会话 + 加购转化率;详情查看也计入被推荐 - 前端:漏斗弹窗新增商品级表格与「建草稿」按钮;巡检设置新增定时巡检开关 - 测试 109/109;smoke:copilot 13 步 / smoke:shopper 9 步 / smoke:workflows 16 步全通过 - 修复:商品级漏斗 SQL 数组绑定(ANY($1) → sql.join 占位符) - AQG construction check PASSED (path=plan, files=23) | 17 days ago | |
feat(analytics): 巡检阈值可配置 + 导购转化漏斗(v1.12.0) - 巡检阈值:4 项阈值存 ai_settings,GET/PUT /api/copilot/insights/thresholds; 逐字段区间校验、脏数据回退默认(fail-safe)、变更写审计 - 导购漏斗:shopper_events 记录 viewed/recommended/cart_confirmed; 下单阶段联真实订单(登录按 userId、匿名按订单快照 sessionId),不推断 GET /api/copilot/shopper-funnel?days=30 → 四阶段去重会话 + 逐级转化率 + 热搜词 - 前端:副驾侧栏新增「导购漏斗」与「巡检设置」入口 - 迁移 0005(shopper_events + 3 索引) - 测试 99/99(新增 10 例);smoke:copilot 11 步、smoke:shopper 7 步、smoke:workflows 16 步全通过 - AQG construction check PASSED (path=plan, files=25) | 17 days ago | |
feat(analytics): 巡检阈值可配置 + 导购转化漏斗(v1.12.0) - 巡检阈值:4 项阈值存 ai_settings,GET/PUT /api/copilot/insights/thresholds; 逐字段区间校验、脏数据回退默认(fail-safe)、变更写审计 - 导购漏斗:shopper_events 记录 viewed/recommended/cart_confirmed; 下单阶段联真实订单(登录按 userId、匿名按订单快照 sessionId),不推断 GET /api/copilot/shopper-funnel?days=30 → 四阶段去重会话 + 逐级转化率 + 热搜词 - 前端:副驾侧栏新增「导购漏斗」与「巡检设置」入口 - 迁移 0005(shopper_events + 3 索引) - 测试 99/99(新增 10 例);smoke:copilot 11 步、smoke:shopper 7 步、smoke:workflows 16 步全通过 - AQG construction check PASSED (path=plan, files=25) | 17 days ago | |
fix(security): enforce fail-closed trust boundaries and publish-accurate docs - reject unknown or missing production configuration for JWT/demo/seed paths - harden scoped AI/commodity/shopping analytics and atomic Copilot approvals - protect mapped IPv6 and production SMTP targets from SSRF - prevent public support session/order ownership bypasses - make smoke failures exit nonzero and add production npm audit CI gate - synchronize v1.22.0 metadata, migration/deploy docs and environment ignore rules | 8 days ago | |
feat(reliability): 通知重试熔断 + 草稿上架门禁(v1.16.0) - 通知可靠性:指数退避 3 次(400ms→800ms,上限 4s); 4xx(除 429)永久失败不重试;连续失败 3 次熔断 5 分钟并自动 half-open - 上架门禁:6 项 fail-closed 校验(中英标题/图片/售价/库存/描述/分类) PATCH status=active 未通过返回 400 并列出缺失项 GET /api/products/:id/publish-readiness 供 UI 预览 - 商品管理页:状态开关失败显示后端原因(此前静默);编辑弹窗展示检查清单 - 测试 125/125(新增 11 例);smoke:copilot 14 步 / shopper 9 步 / workflows 16 步全通过 - AQG construction check PASSED (path=plan, files=15) | 17 days ago | |
feat(reliability): 通知重试熔断 + 草稿上架门禁(v1.16.0) - 通知可靠性:指数退避 3 次(400ms→800ms,上限 4s); 4xx(除 429)永久失败不重试;连续失败 3 次熔断 5 分钟并自动 half-open - 上架门禁:6 项 fail-closed 校验(中英标题/图片/售价/库存/描述/分类) PATCH status=active 未通过返回 400 并列出缺失项 GET /api/products/:id/publish-readiness 供 UI 预览 - 商品管理页:状态开关失败显示后端原因(此前静默);编辑弹窗展示检查清单 - 测试 125/125(新增 11 例);smoke:copilot 14 步 / shopper 9 步 / workflows 16 步全通过 - AQG construction check PASSED (path=plan, files=15) | 17 days ago | |
fix(security): harden outbound requests and isolate E2E environments - bind DNS-validated addresses at connection time for seller-controlled LLM endpoints and webhooks; reject redirects and non-public responses - treat only explicit development/test as local exemptions - cover IPv6 special ranges, IPv4 boundaries and DNS family/all handling - give E2E runners opt-in disposable databases, owned-process cleanup, environment isolation, and loopback-only listeners - document isolated sandbox verification for Stripe, PayPal webhook, 17TRACK, SMTP and deployment rollback without claiming they passed | 7 days ago | |
feat(notify): 分渠道排版 + 体检一键补全(v1.18.0) - 通知按渠道渲染:webhook=markdown、email=HTML 表格、日志=plain 同源数据;HTML 全字段转义防注入 - 体检一键补全文案:POST /api/copilot/products/backfill-copy 只补空缺字段(英文标题/长描述/卖点/SEO),已填不覆盖;逐条隔离失败 - 前端:漏斗弹窗「一键补全文案」,补全后自动刷新体检 - 验证环境:Docker Desktop 引擎故障,改用 embedded-postgres(devDependency) 完成全量 E2E —— 补跑上轮未验证项 - 测试 138/138;smoke:copilot 17 步 / shopper 9 步 / workflows 16 步 / providers 18 步全通过 - AQG construction check PASSED (path=plan, files=16) | 17 days ago | |
fix(security): harden outbound requests and isolate E2E environments - bind DNS-validated addresses at connection time for seller-controlled LLM endpoints and webhooks; reject redirects and non-public responses - treat only explicit development/test as local exemptions - cover IPv6 special ranges, IPv4 boundaries and DNS family/all handling - give E2E runners opt-in disposable databases, owned-process cleanup, environment isolation, and loopback-only listeners - document isolated sandbox verification for Stripe, PayPal webhook, 17TRACK, SMTP and deployment rollback without claiming they passed | 7 days ago | |
feat(copilot): AI 运营副驾 — 工具调用 Agent + 人工审批门禁(v1.10.0) 新增卖家用自然语言操作店铺的 Copilot:11 个工具(5 只读 + 6 写)、 ReAct 循环(≤6 步)、参数强校验、写操作落 copilot_actions(pending) 仅会话所有者可批准执行,越权/重复审批/未知工具一律拒绝。 - server/modules/copilot/*:注册表 / 协议 / 工具执行 / 编排 / 控制器 - copilot_conversations / copilot_messages / copilot_actions(迁移 0002) - /seller/copilot 页面:多会话、快捷指令、工具轨迹、审批卡片 - dev:server 改用 tsc --watch + node --watch(tsx 无装饰器元数据) - 测试 77/77;smoke:copilot 8 步、smoke:providers 18 步、smoke:workflows 16 步全通过 - AQG construction check PASSED (path=plan, files=31) | 18 days ago | |
feat(copilot): 多步计划批次审批 + 店铺巡检(v1.10.1) - 同一轮多个写动作共享 batchId;POST /api/copilot/batches/:batchId/resolve 整批按序执行、失败即停,后续步骤保持 pending - 店铺巡检 GET /api/copilot/insights:低库存 / 超时退款 / 未支付订单 / 长期未签收,纯 SQL 聚合(不调 LLM),每条带可执行 prompt - 前端:左侧常驻巡检面板;对话内「多步计划」卡片一键批准整批 - 迁移 0003(copilot_actions.batch_id + 索引) - 测试 80/80(新增批次顺序/失败即停/整批拒绝);smoke:copilot 扩到 10 步 - AQG construction check PASSED (path=plan, files=19) | 18 days ago | |
fix(security): close tenant, auth and payment trust-boundary gaps - reject unknown or missing NODE_ENV for JWT and demo payment gates - replace public fixed JWT fallback with process-local random dev secret - enforce seller scope across AI usage, shopper analytics, product audit, variants and publish checks - await refund ownership guards before payment or state changes - propagate actor roles through AI gateway calls - harden session ownership for public support conversations and orders - cover the changes with RED-to-GREEN regression tests | 8 days ago | |
feat(copilot): 定时巡检 + 缺口建草稿 + 商品级漏斗(v1.14.0) - 定时巡检 CopilotWatchService:原生定时器(零新依赖),默认关闭, 间隔 5-1440 分钟;ai_settings 原子租约做跨实例互斥;只对新增告警出摘要 GET/PUT /api/copilot/watch + POST /api/copilot/watch/run - 缺口一键建草稿:POST /api/copilot/shopper-demand-gaps/draft 新增第 12 个工具 create_draft_product,仍走审批,批准后为 draft 状态 - 商品级漏斗:GET /api/copilot/shopper-product-funnel 每商品推荐/加购/下单会话 + 加购转化率;详情查看也计入被推荐 - 前端:漏斗弹窗新增商品级表格与「建草稿」按钮;巡检设置新增定时巡检开关 - 测试 109/109;smoke:copilot 13 步 / smoke:shopper 9 步 / smoke:workflows 16 步全通过 - 修复:商品级漏斗 SQL 数组绑定(ANY($1) → sql.join 占位符) - AQG construction check PASSED (path=plan, files=23) | 17 days ago | |
feat(notify): SMTP 邮件通道 + 主题模板 + 在售商品批量体检(v1.17.0) - 通知分层:NotifyTransport(发送原语,标注可重试)+ CopilotNotifyService(重试/熔断) - 邮箱通道:nodemailer@7.0.9(零运行时依赖,惰性加载);连接/握手/套接字 8s/8s/10s 超时 认证类错误(EAUTH/EENVELOPE)判为永久失败不重试;熔断按通道隔离 - 邮件主题模板:{{count}} / {{critical}} / {{newCount}} - 在售商品批量体检:GET /api/products/audit/active(只读,列出缺失项) 副驾漏斗弹窗内可一键检查 - 巡检设置新增邮件表单(SMTP/发件人/收件人/账号/密码/SSL/主题) - 单测 131/131;lint / type:check / build 全绿 NOT VERIFIED:本机 Docker Desktop 引擎故障(docker ps 500、PG 连接超时), 本轮 smoke:copilot / smoke:shopper / smoke:workflows 未执行,需恢复后复测。 | 17 days ago | |
fix(security): finish fail-closed gates and gate runner safety tests - SMTP allowlist now applies to every non-development environment - demo seed refuses any environment other than explicit development/test - align demo payment messages and changelog with the allowlist behavior - e2e:local rejects stale builds without HOST support before touching the database - run runner safety tests in CI | 7 days ago | |
fix(security): enforce fail-closed trust boundaries and publish-accurate docs - reject unknown or missing production configuration for JWT/demo/seed paths - harden scoped AI/commodity/shopping analytics and atomic Copilot approvals - protect mapped IPv6 and production SMTP targets from SSRF - prevent public support session/order ownership bypasses - make smoke failures exit nonzero and add production npm audit CI gate - synchronize v1.22.0 metadata, migration/deploy docs and environment ignore rules | 8 days ago | |
feat(notify): SMTP 邮件通道 + 主题模板 + 在售商品批量体检(v1.17.0) - 通知分层:NotifyTransport(发送原语,标注可重试)+ CopilotNotifyService(重试/熔断) - 邮箱通道:nodemailer@7.0.9(零运行时依赖,惰性加载);连接/握手/套接字 8s/8s/10s 超时 认证类错误(EAUTH/EENVELOPE)判为永久失败不重试;熔断按通道隔离 - 邮件主题模板:{{count}} / {{critical}} / {{newCount}} - 在售商品批量体检:GET /api/products/audit/active(只读,列出缺失项) 副驾漏斗弹窗内可一键检查 - 巡检设置新增邮件表单(SMTP/发件人/收件人/账号/密码/SSL/主题) - 单测 131/131;lint / type:check / build 全绿 NOT VERIFIED:本机 Docker Desktop 引擎故障(docker ps 500、PG 连接超时), 本轮 smoke:copilot / smoke:shopper / smoke:workflows 未执行,需恢复后复测。 | 17 days ago | |
fix(security): enforce fail-closed trust boundaries and publish-accurate docs - reject unknown or missing production configuration for JWT/demo/seed paths - harden scoped AI/commodity/shopping analytics and atomic Copilot approvals - protect mapped IPv6 and production SMTP targets from SSRF - prevent public support session/order ownership bypasses - make smoke failures exit nonzero and add production npm audit CI gate - synchronize v1.22.0 metadata, migration/deploy docs and environment ignore rules | 8 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 16 days ago | ||
| 18 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 8 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 7 days ago | ||
| 17 days ago | ||
| 7 days ago | ||
| 18 days ago | ||
| 18 days ago | ||
| 8 days ago | ||
| 17 days ago | ||
| 17 days ago | ||
| 7 days ago | ||
| 8 days ago | ||
| 17 days ago | ||
| 8 days ago |