ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

深入解析 treg Enrich Arena:付费供应商对比、瀑布式执行与历史洞察的完整实现指南

深入解析 treg Enrich Arena:付费供应商对比、瀑布式执行与历史洞察的完整实现指南 后端API网关MCP 服务dsh-plugin【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址https://gitcode.com/GitHub_Trending/treg/treg点击查看免费下载导读Enrich Arena 是 treg 开源仓库中的一个独立付费功能模块它把同一条 enrichment数据补全查询并发地发送给多个数据供应商让用户在 Battle对比与 Waterfall按价格升序依次尝试两种模式下比较各家返回的结果、成本与耗时并通过一键点赞/点踩沉淀持久化反馈。本文以仓库文档 docs/context/interface/enrich-arena.md 为主线结合 application/arena.py、domain/arena.py、routers/arena.py 等源码与测试完整讲解它的页面结构、任务体系、报价与准入机制、执行模型、历史洞察流水线、验证功能与隐私边界读者读完可以掌握该模块从输入校验到计费结算的完整调用链以及它区别于普通数据 API 网关的关键设计。本文是 Enrich Arena 模块的功能与实现指南不构成对任何数据供应商效果的承诺文中所有命中/未命中均指结构化结果不代表数据准确性的独立验证。一、页面形态三个共享 Shell 的入口Enrich Arena 由三个共享同一套 Vue 应用的页面组成路由在 routers/arena.py 中统一返回enrich-arena.html/enrich-arena—— 主页面包含任务选择、输入区、报价、执行与结果/enrich-arena/leaderboard—— 榜单页只读展示聚合历史洞察/enrich-arena/people-search-bench—— BenchmarkPeople Search Bench只读展示来自/people-search落地页的公开分类评分。三页共享一个紧凑的账号 HeaderArena / Leaderboard / Benchmark 导航居中社区链接GitHub Open source、Discord、X、团队切换器、余额徽标与 Sign out 分布在两侧。按照 enrich-arena.html 的实现多团队用户才显示 Team 切换器单团队自动选中且不出现下拉框。余额徽标本身是一个按钮点击通过topUp打开/app?fromenrich-arena#billing并保留当前团队与 Arena 草稿。三个页面的行为边界在文档中写得很明确Arena可以保存查询草稿、恢复历史、发起付费执行、请求报价Leaderboard读取与 Arena 相同的数据库快照但不恢复草稿、不恢复运行、不获取历史、不请求报价Benchmark启动时加载一次同源/people-search落地页用ArenaBench.parseDocument抽取已发布的分类评分绘制图表不完整的分类或非数字评分会显示重试/来源链接错误而不是部分图表。二、任务体系与输入校验2.1 九类任务与输入变体任务定义集中在 domain/arena.py 的TASKS常量中共 9 项任务 capability标签输入变体按真实需求排序people.email.findFind a work email(full_name, domain)、(linkedin_url)people.enrichEnrich a person(linkedin_url)、(email)、(full_name, domain)companies.enrichEnrich a company(domain)、(name)、(linkedin_url)people.phone.findFind a phone number(linkedin_url)、(email)、(full_name, domain)people.phone.verifyVerify phone number(phone)people.email.verifyVerify email(email)people.identity.resolveFind a LinkedIn profile(email)people.searchFind people(title, company_domain)默认、(company_domain)、(q)自由文本、(title, country)companies.similarFind similar companies(domain)其中people.search与companies.similar属于 Discovery 查询见第六节注释里记录了输入变体顺序来自 30 天生产样本的真实需求占比约 94% 的 people.search 调用带公司域名。2026-09-14 起原people.company.search任务合并进people.search历史运行通过 catalog_capability() 中的_LEGACY映射仍可解析。2.2 提交前校验宁可 422 也不要花一分钱validate_identity()domain/arena.py在创建报价之前完成全部格式校验测试 test_enrich_arena.py 专门断言这些畸形输入直接返回 422 且不产生任何ArenaRun记录或 Hold邮箱必须同时包含非空 mailbox 与带点的域名personexample、personexample..com、personexample.com/path都会被拒绝合法的persontagexample.co.uk、Oconnor 和中文邮箱则被接受公司域名必须是http/https且主机名含点拒绝ftp://、嵌入式凭据userexample.com、畸形端口example.com:bad与畸形方括号主机https://[invalid——_web_url()用url.port访问来兜住解析器会抛异常的畸形端口避免历史结果不可读LinkedIn URL必须是https://www.linkedin.com/in/handle公司任务要求/company/拒绝路径之外的 scheme、非法主机与空白姓名基于名字的比较要求 first last 双名validate_identity只要求首尾两段各含至少一个字母因此Mary-Jane ONeill、José García、李 小龙都能通过test_name_validation_preserves_real_name_characters文档明确提示拿不到全名时请改用 LinkedIn URL电话必须匹配加国际区号的格式[1-9][0-9]{6,14}或者提供 ISO-2country_code的国内号码没有可用的国家上下文时不会猜测默认国家而是返回具体说明且不发起任何计费调用。多条目批量输入由validate_entries()domain/arena.py统一处理enrichment/verification 最多 50 条、discovery 最多 10 条所有条目必须是同一输入形状空白行、重复身份大小写不敏感指纹去重会被阻止提交服务端会在规范化域名、姓名与 LinkedIn URL 之后重复校验。三、报价模型公开预估与团队报价3.1 公开预览GET /arena/tasks未登录访客也可以浏览任务、选择输入变体与执行模式并看到供应商价格。public_tasks()application/arena.py对每个任务的每个输入变体做一次形状探测用probe中的示例值走route.canonical_identity与route.candidates_for得到候选端点再基于**已验证适配器 规范化派生 请求定价含适配器常量与平台加价**计算每条预估。它的约束在设计上写得很清楚不读团队、不读存储报价、不做上游调用排除异步端点、bulk 端点与EXCLUDED中的个人邮箱查找器如leadmagic.x.personal-email-finder返回的provider_previews按预估升序排序供页面在输入框下方直接渲染紧凑的供应商/价格表。3.2 团队报价POST /arena/plans登录用户的有效输入在 800ms 停顿后取报价。quote()application/arena.py是核心入口先做上述输入校验 国家代码校验country_name未知即拒绝 demo 团队拦截 模式与预算校验mode ∈ {compare, waterfall}0 ≤ max_cost_micro ≤ 10_000_000即单次上限 $10对每条 entry 通过现有路由规划器route.build_plan冻结精确的适配器请求to_upstream之后的 query/body、端点哈希、适配器哈希、身份、顺序、预估与预算全部加密进ArenaRun.payload平台级报价 money.with_margin(_marketplace_pricing(...))含配置的平台加价own-key自带密钥调用 treg 报价为 0Battle 的准入额度 所有供应商预估之和Waterfall 的准入额度 每条 entry 最便宜第一步的预估之和required_credit()domain/arena.py页面 Run 按钮显示 Run from 最便宜供应商的报价报价 5 分钟过期deadline_at创建报价不预留任何信用额度旧的未使用报价超过 100 条会被惰性退役而已完成/运行中的会话不受影响对应测试 test_automatic_quotes_do_not_use_execution_limit_or_erase_history。文档特别强调报价是按报价的准入限制不是对供应商最终账单的担保UI 会披露这个差异。身份、模式、团队、预算或供应商任何变化都会使当前报价失效并丢弃迟到响应一次完成运行消耗其报价新运行必须重新取报价。四、执行模型Battle 与 Waterfall4.1 启动与一次性认领POST /arena/runs/{id}/startapplication/arena.py做完整的重检后才认领运行校验报价未过期、目录哈希未变化_hash(ep)与_hash(adapter.__dict__)防止目录悄悄换掉端点后旧报价仍能触发计费调用重查余额Battle 需要全部预估之和Waterfall 只要最便宜第一步且允许余额恰好相等执行限制100 次实际启动/小时/用户且同时最多3 个活跃运行价格预览不计入限制429 错误文本明确说 price previews dont count用条件 UPDATEWHERE statequoted在数据库层原子认领一次——两个并发 start 只有一个能派发test_concurrent_start_dispatches_only_once认领成功后发出arena_run_started分析事件不含输入内容。所有 Arena 变更端点都经过_guard()routers/arena.py的同源检查跨源请求直接 403测试 test_no_partial_or_foreign_vote_and_no_cross_origin_start。4.2 Battle四路并发对比compare模式用asyncio.Semaphore(4)限制最多四条并发腿每条腿_fresh_caller()重新校验 membership、用户/组织未停用、以及发起时携带的托管密钥仍活跃且仍属于同一 membership/team密钥生成代次变化会阻止后续步骤但不取消已在途请求先持久化running状态派发前可见再构造CallInput并携带x-treg-client: enrich-arena、x-treg-route-max-cost头通过现有 application.call.service.execute_call 打直接端点每条腿有 90 秒超时运行总期限 240 秒批量按 240 秒/条封顶一小时每次尝试都记录 charged/duration并在落库前关闭响应流。普通调用运行时负责定价、凭据优先级、授权、预留reserve、结算settle与取消清理Arena 本身从不写余额或持有多余的 Hold。聚合器溢出overflow在此关闭、归档查找被绕过保证对比测量的是全新调用。4.3 Waterfall按价格升序、命中即停waterfall模式在 application/arena.py 中实现供应商按报价升序排序平局保留规划器顺序每步显示 queued/running、found/no match、error/timeout、skipped/not attempted、timing、charge 与停止原因在第一个结构化命中处停止——found work email 不代表已验证可达found phone 不代表活线一个负面的邮箱验证结论反而是成功答案错误回退有界route.MAX_ERROR_FALLBACKS供应商侧 401/403 会被标记为 caller-fault后续步骤不再在该付费服务上重试运行预算上限是共享的spent estimate max_cost_micro的后续步骤标记为skipped批量 Waterfall 按价格层级推进先完成列表里所有条目的同一档价格未解决的条目再进入下一档见entry/stopped逻辑与测试 test_batch_waterfall_stops_per_entry_and_manual_uses_correct_identity。4.4 取消、中断与账单恢复取消通过轮询cancel_requested标志 取消在途 asyncio 任务实现取消会释放所有 Hold且取消轮询绝不在数据库 I/O 内部被取消——否则 SQLite rollback journal 下会遗留读锁阻塞最终提交与测试 schema 重置测试test_run_finishes_while_cancel_poll_is_reading专门覆盖该竞态进程丢失后运行按持久化的 deadline 变为interrupted绝不自动重试避免一次不确定的上游完成后重复付费未知费用保持未知直到持久化账本LedgerEntry的settle/release能在后续读取中解析get_run会用账本条目回填charged_micro测试 test_interrupted_receipt_recovers_durable_settlement重复 start 幂等row.state ! quoted时直接返回当前状态而不重复派发。五、结果呈现、历史与持久化反馈5.1 可见结果与胜者规则GET /arena/runs/{id}返回私有、归属明确的快照运行中 UI 每 1.5 秒轮询实时显示每个供应商 queued/running/completed 状态。展示层保持查看结果 ≠ 投票 ≠ 付费调用的边界单条命中即出现结果无确认价格弹窗每个结果行有供应商 logo、关键字段、状态、成本、耗时与独立的一键 /点击行或 Enter/Space 展开完整字段与原始响应原始响应单独存储、不参与归一化工作邮箱行的返回域名与请求公司域名不一致时会标记子域名可接受这只是可能不匹配提示不自动判定无效也不改写供应商答案供应商 402 与团队余额拒绝是两种状态upstream_status字段保留前者domain/arena.pyUI 提示改用其他供应商而不是引导充值一个 即产生 Winner 皇冠Fastest/Cheapest 腰带只在成功且未被点踩的结果之间比较多个 时腰带只在这些结果内比较未评分供应商不能超越已点赞供应商评分变化立即重算胜者与腰带。历史比较评估ArenaEvaluation保持不变但不驱动当前胜者指示器。5.2 批量矩阵多条目运行使用 entry-by-vendor 矩阵代替单表概览单元格只显示已尝试结果queued/skipped/uncalled 留空点击某行展开该条目下嵌套的供应商详情表一次只展开一个供应商或条目避免重复反馈表单与 ID。Found 用绿色对勾徽标、No match 用红色叉徽标颜色与符号双通道区分。运行成本汇总在条目控件上方使用服务端结算总额含验证与不成功调用平均成本 总额 ÷ 有 found/非 rejected 结果的去重条目数多个供应商找到同一人只计一次运行结束自动滚动到该汇总reduced-motion 用户立即滚动。5.3 历史列表与私有书签左侧会话列表每页 30 条GET /arena/runs?limit1..100beforeid按创建时间与 ID 双键降序分页并列时间戳靠 ID 决胜新运行不会移动旧页边界读取历史不做任何供应商调用测试里no_relay直接 fail选择历史或启动运行会写入/enrich-arena?runidteamslugURL该 URL 只能由所属团队的登录成员读取缺失/过期/无权访问显示错误而不是回退到别的结果——这是私有书签不是公开分享链接草稿保存在 session-storage10 分钟、单次使用标记OAuth 返回只允许 Arena/Leaderboard/Benchmark 路径且带 Fernet 加密的 return cookie回调先认证再解密并再次白名单校验缺失或篡改则回退到 dashboard。5.4 反馈点赞/点踩、报告与兼容评估每个返回结果两种模式、含批量单格可即时 /POST /arena/runs/{id}/attempts/{attempt_id}/rating乐观更新、失败回滚并报错重复相同评分幂等切换 thumbs 则更新记录保留created_at 可追加可选 reason/note/report首条提交幂等绝不覆盖其他标签页的 评分与报告存于 attempt 加密 payload仅对会话所有者/团队私有随历史/导出在 30 天保留期内共存旧版POST /arena/runs/{id}/evaluations保持兼容winner/tie/none/cannot-judge/skip 类型与/reveal仍在首条评估在 run-row 锁 唯一 run-id 约束下不可变v2 评估携带feedback_context: attributed、冻结的 cohort 指纹与暴露的候选 id/顺序用于区分归属明确的偏好与历史盲投revealed_at只记录评估事件不再控制结果可见性反馈永不改变供应商输出、命中分类或计费。六、Discovery 查询与验证功能6.1 DiscoveryFind people / Find similar companiesFind peoplepeople.search四种输入变体按需求排序Find similar companiescompanies.similar接受种子域名这些是直接目录查询无 agent 框架、无模型编写计划、无自动翻页、无隐式后续 enrichment每个批次查询返回各供应商自己的列表最多显示 10 个归一化匹配预览价格按这些精确请求计算会丢弃请求约束或合约过滤的适配器包括结果上限会被排除出公开预览与私有计划未知国家代码在规划前拒绝而不是静默省略Waterfall 对 discovery 的结构化命中定义为可用的非空列表不是相关性判断批次覆盖率和 cost-per-kept 以 query 为分母不是联系人数量discovery 端点暂不进入 enrichment 洞察聚合直到出现合适的 discovery 指标。6.2 可选验证lookup 之后Find work email 与 Find phone number 默认开启验证开关存于草稿并绑定进报价验证通过treg.people.email.verify路由运行时执行候选按价格顺序优先报价上限 所有可达验证器预估之和own keys 零成本冻结的供应商集合 目录哈希 route-max-cost 头共同约束执行新加供应商不能悄悄进入既有报价路由器在不可用供应商/缺失判定上按既有错误回退限制降级在 completed valid/invalid/risky 判定处停止电话验证是直达 Tomba 的单供应商调用当前只有一家集成电话验证器未勾选验证的 found 结果行上有按价格的 Verify email/phone 动作5 分钟报价、同源、owned、读取加密存储结果中的联系方式、认领嵌套 attempt 恰好一次每行独立 UI 状态不阻塞其他供应商Verify phone number 也是独立批量任务默认要求国际号码也接受国内格式 ISO-2country_codeverification_identity()会把 lookup 报告的国家上下文带进验证请求Tomba adapter 作为查询参数转发显式国际区号优先于上下文缺失/不可用上下文会给出明确解释且不发起也不计费验证调用not_started状态 → Verification not run验证只给出号码规划有效性、国家、线路类型与运营商不证明线路是活的或属于目标人。6.3 邮箱验证结果的分级展示邮箱验证行使用emailVerdict/outcomeClass显示三色判定Valid绿/ Invalid红/ Risky琥珀而不是笼统的返回答案徽标catch-all/accept-all 与显式 risky 优先于 adapter 的valid布尔unknown/unverified/unrecognized 保持中性 Unknown绝不会因为 adapter 投影valid: false就显示为 invalid原始供应商状态保留在结果与展开数据中。显式 invalid/undeliverable 判定会在锁定后端合并时自动创建incorrect_data报告幂等、跨 worker 生效、带automated_verificationprovenanceUI 标记为 Invalid email · automatically reportedcatch-all、unknown、risky、失败/取消的检查与电话判定都不会触发该规则。七、历史洞察两分钟增量流水线7.1 采集器drain()与collect_batch()Arena 表只展示四列历史统计Vendor、Hit rate验证任务为 Verdict rate、Response time、Price数据来自application.arena_insights的数据库聚合页面渲染绝不扫描证据或调用验证器采集器由treg-worker arena insightscron 每两分钟运行一次drain()application/arena_insights.py--max-seconds约束单趟时长下一趟从游标续跑它已从 web 进程 lifespan 协程移出——之前每个 web 进程含部署期的多余实例都会争抢游标行并全表扫描callrecord与资金路径争数据库现在只使用 worker 进程唯一的 API 连接池每事务读 100 条审计记录沿精确的归档 key/content 与可选 body 载体取证据用当前 Arena 必需字段规则重新分类存储的响应upsert 匿名ArenaObservation事实它从不调用供应商、从不信任CallRecord.hit不写钱、不碰代理证据去重按 key/content 对通过既有(key_id, version)索引找每对最新快照——避免同一响应被许多请求共享时反复扫全局内容索引确切内容缺失保持 unresolved新答案绝不替代历史证据ArenaInsightState跨 worker 序列化游标并存储聚合首次回填前部分初始历史被隐藏版本触发的重建期间旧的已完成发布仍然可见SQL 里 PostgreSQL 计算中位数与去重计数本地 SQLite 用精确 Python 中位数values CTE 要求 SQLAlchemy 2.0.42已反映在服务端依赖下限。7.2 保守分类规则domain/arena_insights.py 的error_outcome()定义了什么算覆盖覆盖 结构化可用结果 ÷可用结果 真实 miss每个 endpoint/input/request-hash 取最新一次 decided 观察错误请求、限流、余额、访问/服务失败、拒绝与 pending 结果被排除歧义错误、不可用 body、缺失 request hash 保持 unresolvedown-key、overflow 与缓存 scope 被省略只有可归属到所选形状的输入才出现在该行响应时间 成功调用含重复的中位数至少 20 次成功且有时序聚合才显示唯一请求少于 20 次时隐藏比率验证显示的是返回判定占比而不是准确率不同 cohort 与 waterfall 位置决定了这里不能产生受控排名返回字段也未独立验证——文档与页面都明确这是观测结果不是受控基准。7.3 快照读取与公开验证试点GET /arena/insightsrouters/arena.py先按主键读当前版本的持久化聚合含updated_at、源窗口、真实观测首末日期、采集状态与仅公开聚合字段当前版本未发布时用一次有界快照查询回退到上一版本最新完成的兼容发布保留其源窗口与更新时间戳全新数据库返回warming空行。UI 每两分钟轮询一次刷新失败保留最后一次成功值并显示最后更新时间。验证试点部分application/arena_verification_insightsAlembic0029发布只含聚合的ArenaVerificationSnapshot/arena/insights把它作为verification附加到滚动调用统计旁Email validity rate样本中两个验证器都标记 valid 的去重邮箱数 ÷ 已完成检查数不乘 lookup 命中率也不需要历史基线——这是样本内观测到的验证器一致性不是投递保证或所有权Phone format validity通过格式检查的样本号码百分比绝不被提升为 email validity 或 verified hit rate少于 20 次已完成检查的比率被隐藏small-sample 标签不显示risky/unknown/冲突判定留在分母但不计 valid未完成检查排除真 0 显示、缺失值无图表柱发布保留旧rate投影给老消费者同时加checked_n/validity_rate电话为format_validity_rate字段UI 只消费新字段防止旧快照把 lookup 投影误显示为 validity。迁移部署后可用uv run python scripts/import_arena_verification.py /private/path/aggregate.json导入公开聚合--check只校验不写库文件必须留在 checkout 之外导入器只接受 schema 白名单内的聚合、源日期、端点/输入标识、验证器名与计数拒绝原始联系方式字段也不运行付费验证。相同 run_id 的重复导入是 no-op内容不同则失败。八、多条目批处理与手动补调8.1 批量运行语义POST /arena/plans接受identity或identities之一不可同时服务端要求单一输入形状 共同供应商 cohort每条 entry 都走既有路由规划器拥有独立冻结的 adapter 请求与预估原始响应快照共享每运行 2 MB 上限按 attempt 均分、单响应 256 KB 封顶超限仍做正常分类与字段提取raw_omitted在展开详情中说明缺失原因测试 test_batch_raw_snapshot_limit_keeps_normalized_answers 证明归一化答案不受影响Battle 对每条 entry 的每个选中供应商都调用共享四腿并发上限Waterfall 按价格层级推进、每 entry 独立 hit/error 状态、运行花销上限共享批量不可负担时没有隐性部分购买未触及的尝试留给显式、按格的 Try 动作批量运行期限 240 秒/条、封顶一小时单批占据一个活跃运行槽每次尝试后持久化状态刷新/历史恢复只读不花钱取消与进程丢失保留已完成工作绝不重试已派发调用。8.2 Try给未调用供应商补一次机会每个not_attempted/skipped结果有按价的 Try 动作/attempts/{id}/plan/startplan 重查该精确端点的当前路由访问并计算真实 adapter 请求预估在运行加密 payload 里存 5 分钟报价不预留信用、不调用供应商start 锁定 owned run、重查报价/目录哈希/信用准入/活跃运行上限认领未调用 attempt 恰好一次已完成尝试含 error/timeout/interrupted 的手动尝试绝不提供 rerun最多 4 条手动尝试并发手动尝试与原始 waterfall 预算分开准入结果带manual: true时序在先前尝试之后继续重复 start、过期报价、已尝试供应商均无法派发持久化以 run-row 锁合并只合并该 worker 自己的 attempts保留并发报价、结果与反馈运行只有等所有活跃尝试结束才进入 terminal。九、隐私、安全与运维9.1 隐私边界运行与评估属于创建者 活跃团队其他团队成员不能读创建者的运行输入、响应快照与评论用既有 Fernet 密钥加密测试直接断言stored.payload ! plaintext结果每供应商 256 KB 封顶访问 30 天后过期有界惰性清扫在历史/报价请求上删除过期运行与评估团队删除先删评估再删运行账本正常保留不变页面通过sitetrack.js的data-private-page标志退出 PostHog autocapture 与 session recording输入不进 URL所有 Arena 路由属于 control role及默认 all roledataplane 的/call/合约不变GET /arena/insights不暴露身份、哈希、组织 ID 或响应体生产指标不出现在 assets 或 fixtures 中。9.2 分析事件转换漏斗TregTracking将匿名页面浏览在loadIdentity后连接到已认证邮箱与活跃team组事件仅含产品元数据arena_page_viewed挂载即发、每页一次、带surfacearena|leaderboard|benchmark与arena_signup_openedsignup_completed仅在提交后且是新 User时发出email OTP 与 GitHub/Google provisioning回归登录与失败证明不计arena_run_started在数据库认领成功后发出报价与重复 start 不计数arena_run_completed在保存初始运行的 terminal 状态后发出含successful_call至少一个 hit 或 evaluated miss与returned_data至少一个 hit进程崩溃后的完成不会被重建手动 Try 与验证继续发普通tool_called事件clientenrich-arena不产生额外逻辑运行事件arena_topup_clicked记录链接点击应用在两个充值入口都带checkout_sourcearenaStripe Session/PaymentIntent 元数据同时携带首入渠道与 checkout 来源保证任一 webhook 顺序都可用。漏斗建议文档原文对arena_page_viewed过滤surfacearena计数独立访客 →signup_completed→tool_called过滤clientenrich-arena成功调用加outcomeok使用有序列转换窗口如 30 天把回归用户激活与新用户激活分开报告把激活用户的 run/callteamjoin 到后续topup_completed可捕捉队友付费按预期粒度对人/团队去重新付费者按团队首次充值计数。事件仍是 best-effort 分析未配置 key 即禁用持久化账本才是支付事实来源。9.3 迁移与测试Arena 迁移按序排在主链0026call reviews之后0027_enrich_arena.pyarenarunarenaevaluation、0028_arena_insightsArenaObservationArenaInsightState、0029_arena_verification_snapshotArenaVerificationSnapshot。发布新版本前先运行python -m treg upgrade。测试覆盖面依据 test_enrich_arena.py私有/访问控制、聚合准入、直接计费、own keys、取消、重复 start/投票、归属进度/结果、计费前姓名校验、waterfall 推进、OAuth 返回白名单、中断账单恢复、畸形输入零开销等。前端计费流检查用node --test tests/js/enrich-arena.test.cjs覆盖内联定价、价格失效、登录门禁、重复点击、报价过期与正确团队充值链接arena-template.test.cjs 用打包的 Vue runtime 编译共享页面与组件模板专门捕获方法级测试漏掉的模板表达式错误此前嵌套 footer 插值曾导致所有 Arena 视图无法挂载。十、关键设计原则小结先校验、后报价、再执行一切畸形输入在创建报价/计费前就被 422 拒绝报价创建零预留执行时才做余额与目录哈希重检认领一次、绝不重复数据库条件 UPDATE 进程内 task 所有权 永久 deadline进程丢失绝不自动重试避免歧义完成后的重复付费复用普通调用运行时定价、凭据优先级、授权、reserve/settle/release、取消清理全部来自application.call.service.execute_callArena 只增加编排与展示层不触碰资金写路径观测不等于基准历史洞察是匿名、保守分类、快照化的数据库聚合页面反复声明其不是受控基准验证比率是判定返回率而非准确率反馈可追溯但不可篡改旧版评估不可变新版 thumbs/report 归属明确、幂等、随运行加密保留但永不改变计费与结果分类。如需在本地查看/运行该模块仓库为只读读者可在自己的环境中克隆后按 部署文档 与 本地运行文档 配置环境执行python -m treg upgrade完成迁移再启动服务访问/enrich-arena。赞分享后端API网关MCP 服务dsh-plugin【免费下载链接】tregOpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn项目地址https://gitcode.com/GitHub_Trending/treg/treg点击查看免费下载相关推荐深入解析 aws codepipeline list-action-executions查询流水线动作执行历史的完整指南深入解析 aws codepipeline list action executions查询流水线动作执行历史的完整指南 aws codepipeline l开发工具云原生运维双端自动化抢票系统基于Selenium与Appium的大麦网票务解决方案双端自动化抢票系统基于Selenium与Appium的大麦网票务解决方案 在热门演出票务市场中传统手动抢票方式面临着响应延迟、操作繁琐、成功率低下等挑战。大GUI 自动化RPAChat2DB版本深度对比开源免费版与商业付费版的完整选择指南Chat2DB版本深度对比开源免费版与商业付费版的完整选择指南 在数据库管理工具领域Chat2DB作为一款备受关注的产品其双版本策略让许多用户在开源免费版数据库客户端AI 应用数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表