@witty-ai/skill-insight 0.6.0-beta → 0.7.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +1 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/config/create/route.js +4 -3
- package/.next/standalone/.next/server/app/api/config/create/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js +3 -2
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +5 -4
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js +5 -4
- package/.next/standalone/.next/server/app/api/otel/v1/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js +3 -2
- package/.next/standalone/.next/server/app/api/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/[...path]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js +4 -3
- package/.next/standalone/.next/server/app/api/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/rejudge/route.js +5 -4
- package/.next/standalone/.next/server/app/api/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/session/route.js +4 -4
- package/.next/standalone/.next/server/app/api/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js +5 -4
- package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/upload/route.js +5 -2
- package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/task-stats/route.js +5 -4
- package/.next/standalone/.next/server/app/api/task-stats/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/route.js +4 -3
- package/.next/standalone/.next/server/app/api/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/app/details/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/details/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/details.html +1 -1
- package/.next/standalone/.next/server/app/details.rsc +5 -5
- package/.next/standalone/.next/server/app/details.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/details.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/details.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/details.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/details.segments/details.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +5 -5
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +5 -5
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/skills.segment.rsc +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ddba88._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15dbd1f2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1c95bcde._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__23efcd78._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__4a6d443b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__53775b48._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5444db55._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__591248f3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__5d8178f6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6261d672._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6923eecf._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6fc12878._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__8402dfd1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__863cf6de._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__89404730._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__98b3de5e._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__9d551ea2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__a4d3d791._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__aa3d72e3._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b11acc79._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ba01f286._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__bd91659b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c200214a._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__c602c518._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d7fab946._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d8c1808b._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__d9b9fecc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__ddf63a21._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e280561d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__e550423c._.js +1 -1
- package/.next/standalone/.next/server/chunks/_33c0c729._.js +1 -1
- package/.next/standalone/.next/server/chunks/_46f10554._.js +3 -0
- package/.next/standalone/.next/server/chunks/_4c806e26._.js +1 -1
- package/.next/standalone/.next/server/chunks/_cd3d20ca._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_98433cb8._.js +77 -15
- package/.next/standalone/.next/server/chunks/src_c8971a2d._.js +57 -8
- package/.next/standalone/.next/server/chunks/src_lib_119f6c7b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__9ab7cc4a._.js → [root-of-the-server]__082c32a2._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__51073007._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_049876f0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_09546b95._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_8f5379ab._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_c8c8c083._.js +9 -9
- package/.next/standalone/.next/server/chunks/ssr/{_b121f1ae._.js → _e2faf4f5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_fd46f439._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/src_66a70595._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_login_page_tsx_72f58654._.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/{9445b2873a413c58.js → 015467355d3866a3.js} +1 -1
- package/.next/standalone/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/standalone/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/standalone/.next/static/chunks/{07c9f28a269c701a.js → 361e4cf1e9a71ccb.js} +1 -1
- package/.next/{static/chunks/5432ce4a494bc74d.js → standalone/.next/static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/standalone/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/standalone/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/standalone/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/standalone/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/standalone/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{static/chunks/7e35f4cf2e266022.js → standalone/.next/static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/standalone/.next/static/chunks/{cd0fde15dc0dfcca.js → f786bb68e17b12b4.js} +1 -1
- package/.next/standalone/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/.next/standalone/node_modules/.prisma/client/edge.js +4 -3
- package/.next/standalone/node_modules/.prisma/client/index-browser.js +1 -0
- package/.next/standalone/node_modules/.prisma/client/index.js +4 -3
- package/.next/standalone/node_modules/.prisma/client/package.json +1 -1
- package/.next/standalone/node_modules/.prisma/client/schema.prisma +14 -13
- package/.next/standalone/node_modules/.prisma/client/wasm.js +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/prisma/schema.prisma +4 -3
- package/.next/standalone/scripts/opencode_plugin.ts +135 -45
- package/.next/static/chunks/{9445b2873a413c58.js → 015467355d3866a3.js} +1 -1
- package/.next/static/chunks/09f192c9b0609ad8.js +1 -0
- package/.next/static/chunks/1945a5514fbc393c.css +1 -0
- package/.next/static/chunks/{07c9f28a269c701a.js → 361e4cf1e9a71ccb.js} +1 -1
- package/.next/{standalone/.next/static/chunks/5432ce4a494bc74d.js → static/chunks/60bc50374fd32f20.js} +3 -3
- package/.next/static/chunks/{251551dcdf74a60d.js → 65bac0880a87bff3.js} +1 -1
- package/.next/static/chunks/961f7fa606dd26a8.js +1 -0
- package/.next/static/chunks/bab2ffd4f527acfb.js +1 -0
- package/.next/static/chunks/c513373e5cfedd5b.js +2 -0
- package/.next/static/chunks/ca3017e51e817855.js +1 -0
- package/.next/{standalone/.next/static/chunks/7e35f4cf2e266022.js → static/chunks/cb104c3cb4c52833.js} +1 -1
- package/.next/static/chunks/{cd0fde15dc0dfcca.js → f786bb68e17b12b4.js} +1 -1
- package/.next/static/chunks/fc61b990c5ec4ef4.js +109 -0
- package/package.json +1 -1
- package/prisma/schema.prisma +4 -3
- package/scripts/opencode_plugin.ts +135 -45
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1013b265._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ce5e3b8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__6d8053e2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__b835ea7f._.js +0 -3
- package/.next/standalone/.next/server/chunks/_41a98bd8._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_12408140._.js +0 -3
- package/.next/standalone/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/standalone/.next/static/chunks/4ee8dc41c9f15b7b.js +0 -1
- package/.next/standalone/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/standalone/.next/static/chunks/94dfb15df65ef720.js +0 -2
- package/.next/standalone/.next/static/chunks/9d1c5c3494fa53de.js +0 -109
- package/.next/standalone/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/standalone/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- package/.next/static/chunks/1e782a49beaf489c.js +0 -1
- package/.next/static/chunks/4ee8dc41c9f15b7b.js +0 -1
- package/.next/static/chunks/67bd1a5de2195779.js +0 -1
- package/.next/static/chunks/94dfb15df65ef720.js +0 -2
- package/.next/static/chunks/9d1c5c3494fa53de.js +0 -109
- package/.next/static/chunks/c6bd2818656b1f20.css +0 -1
- package/.next/static/chunks/dc59a07a8f327b40.js +0 -1
- /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
- /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_buildManifest.js +0 -0
- /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{0uvhCJooDO_gMNlKOaHwB → iKG72t8Hpebb09DcIpKUJ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}});let o=e.r(32061);function n({reason:e,children:r}){if("u"<typeof window)throw Object.defineProperty(new o.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}},9885,(e,r,t)=>{"use strict";function o(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return o}})},52157,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return s}});let o=e.r(43476),n=e.r(74080),l=e.r(63599),a=e.r(9885),i=e.r(43369);function s({moduleIds:e}){if("u">typeof window)return null;let r=l.workAsyncStorage.getStore();if(void 0===r)return null;let t=[];if(r.reactLoadableManifest&&e){let o=r.reactLoadableManifest;for(let r of e){if(!o[r])continue;let e=o[r].files;t.push(...e)}}if(0===t.length)return null;let s=(0,i.getDeploymentIdQueryOrEmptyString)();return(0,o.jsx)(o.Fragment,{children:t.map(e=>{let t=`${r.assetPrefix}/_next/${(0,a.encodeURIPath)(e)}${s}`;return e.endsWith(".css")?(0,o.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style",nonce:r.nonce},e):((0,n.preload)(t,{as:"script",fetchPriority:"low",nonce:r.nonce}),null)})})}},69093,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let o=e.r(43476),n=e.r(71645),l=e.r(67585),a=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let s={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},d=function(e){let r={...s,...e},t=(0,n.lazy)(()=>r.loader().then(i)),d=r.loading;function c(e){let i=d?(0,o.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,s=!r.ssr||!!r.loading,c=s?n.Suspense:n.Fragment,p=r.ssr?(0,o.jsxs)(o.Fragment,{children:["u"<typeof window?(0,o.jsx)(a.PreloadChunks,{moduleIds:r.modules}):null,(0,o.jsx)(t,{...e})]}):(0,o.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,o.jsx)(t,{...e})});return(0,o.jsx)(c,{...s?{fallback:i}:{},children:p})}return c.displayName="LoadableComponent",c}},70703,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}});let o=e.r(55682)._(e.r(69093));function n(e,r){let t={};"function"==typeof e&&(t.loader=e);let n={...t,...r};return(0,o.default)({...n,modules:n.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},18819,e=>{"use strict";e.i(18392);var r=e.i(43476),t=e.i(70703),o=e.i(18566),n=e.i(71645),l=e.i(9165),a=e.i(97703);function i({executionId:e,skillId:t,user:o,onStepClick:i}){let[d,c]=(0,n.useState)(!1),[p,u]=(0,n.useState)("compare"),[m,x]=(0,n.useState)(null),[g,f]=(0,n.useState)(""),[h,b]=(0,n.useState)(!0),[y,v]=(0,n.useState)(!1),[j,k]=(0,n.useState)(!1),{isDark:S}=(0,a.useTheme)(),w=(0,a.useThemeColors)(),_=t&&t.trim()?t:null;(0,n.useEffect)(()=>{let r=null,t=()=>{(0,l.apiFetch)(`/api/executions/${e}/analyze-match`).then(e=>e.json()).then(e=>{e.analyzed?e.dynamicMermaid||e.staticMermaid||e.matchJson?(k(!1),x(e)):(k(!0),r=setTimeout(t,3e3)):k(!1)}).catch(()=>{k(!1)})};return t(),()=>{r&&clearTimeout(r)}},[e]);let z=async()=>{c(!0),f(""),u("dynamic");try{let r=await (0,l.apiFetch)(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"dynamic"})}),t=await r.json();t.success?x({analyzed:!0,mode:"dynamic",dynamicMermaid:t.dynamicMermaid,interactionCount:t.interactionCount,matchedAt:new Date().toISOString()}):f(t.error||"分析失败")}catch(e){f(e instanceof Error?e.message:"网络错误")}finally{c(!1)}},C=async()=>{if(!_)return void f('该执行记录未关联 Skill,无法进行 Skill 对比。请使用"流程解析"功能。');c(!0),f(""),u("compare");try{let r=await (0,l.apiFetch)(`/api/executions/${e}/analyze-match`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user:o,mode:"compare"})}),t=await r.json();if(t.success){let e=t.match?.problemSteps||[];x({analyzed:!0,mode:"compare",matchJson:JSON.stringify(t.match),staticMermaid:t.staticMermaid,dynamicMermaid:t.dynamicMermaid,analysisText:JSON.stringify(e),interactionCount:t.interactionCount,currentInteractionCount:t.currentInteractionCount,hasUpdate:t.hasUpdate,matchedAt:new Date().toISOString(),usedSkillName:t.usedSkillName,usedSkillVersion:t.usedSkillVersion})}else f(t.error||"分析失败")}catch(e){f(e instanceof Error?e.message:"网络错误")}finally{c(!1)}};return(0,r.jsxs)("div",{style:{background:w.bgSecondary,borderRadius:"8px",border:`1px solid ${w.border}`,marginBottom:"2rem",overflow:"hidden"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"1rem 1.5rem",borderBottom:y?"1px solid #334155":"none",cursor:"pointer"},onClick:()=>v(!y),children:[(0,r.jsx)("h4",{style:{color:w.primary,margin:0,fontSize:"0.95rem"},children:"📊 执行流程分析"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("span",{style:{color:w.fgMuted,fontSize:"0.8rem",marginRight:"0.5rem"},children:y?"收起":"展开"}),(0,r.jsx)("button",{style:{background:w.border,border:"none",borderRadius:"4px",color:w.fgMuted,padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:y?"▲":"▼"})]})]}),y&&(0,r.jsxs)("div",{style:{padding:"1.5rem"},children:[j&&(0,r.jsxs)("div",{style:{padding:"0.75rem",background:"rgba(56, 189, 248, 0.1)",borderRadius:"4px",color:"#38bdf8",marginBottom:"1rem",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,r.jsx)("span",{style:{animation:"spin 1s linear infinite",display:"inline-block"},children:"🔄"}),"正在自动解析执行轨迹,请稍候...模型调用需要2-3分钟,如长时间未完成,可点击按钮手动重新解析"]}),(0,r.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",alignItems:"center",marginBottom:"1rem"},children:(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),k(!1),z()},disabled:d,style:{padding:"6px 16px",background:d&&"dynamic"===p?"#334155":"#22c55e",color:d&&"dynamic"===p?"#a1a1aa":"#18181b",border:"none",borderRadius:"4px",cursor:d?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:d&&"dynamic"===p?"分析中...":"流程解析"}),(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),k(!1),C()},disabled:d,style:{padding:"6px 16px",background:d&&"compare"===p?"#334155":"#38bdf8",color:d&&"compare"===p?"#a1a1aa":"#18181b",border:"none",borderRadius:"4px",cursor:d?"not-allowed":"pointer",fontWeight:"bold",fontSize:"0.85rem"},children:d&&"compare"===p?"对比中...":"Skill对比"})]})}),g&&(0,r.jsx)("div",{style:{padding:"0.75rem",background:w.errorSubtle,borderRadius:"4px",color:w.error,marginBottom:"1rem",fontSize:"0.9rem"},children:g}),m&&m.analyzed?(0,r.jsxs)("div",{children:["compare"===m.mode&&m.dynamicMermaid?(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("h5",{style:{color:w.fgMuted,margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:["执行流程对比 ",m.usedSkillName&&`(${m.usedSkillName} v${m.usedSkillVersion})`]}),(0,r.jsx)("div",{style:{background:w.bg,padding:"1rem",borderRadius:"6px",border:`1px solid ${w.border}`,minHeight:"250px",overflowX:"auto",overflowY:"auto"},children:(0,r.jsx)(s,{code:m.dynamicMermaid||""})})]}):(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsx)("h5",{style:{color:w.fgMuted,margin:"0 0 0.5rem 0",fontSize:"0.85rem"},children:"执行轨迹"}),(0,r.jsx)("div",{style:{background:w.bg,padding:"1rem",borderRadius:"6px",border:`1px solid ${w.border}`,minHeight:"180px",overflowX:"auto",overflowY:"auto"},children:(0,r.jsx)(s,{code:m.dynamicMermaid||""})})]}),"compare"===m.mode&&m.matchJson&&(()=>{let e=null;try{e=JSON.parse(m.matchJson)?.summary}catch{}return e?(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1.5rem",padding:"0.75rem",background:w.bg,borderRadius:"6px",marginBottom:"1rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",gap:"1.5rem",fontSize:"0.85rem"},children:[(0,r.jsxs)("span",{style:{color:w.success},children:["✅ 符合预期:",e.matchedSteps||0]}),(0,r.jsxs)("span",{style:{color:w.warning},children:["⚠️ 部分偏离:",e.partialSteps||0]}),(0,r.jsxs)("span",{style:{color:w.error},children:["❌ 非预期调用:",e.unexpectedSteps||0]}),(0,r.jsxs)("span",{style:{color:w.fgMuted},children:["⭕ 跳过:",e.skippedSteps||0]})]}),(0,r.jsxs)("div",{style:{marginLeft:"auto",fontSize:"0.8rem",color:w.fgSecondary},children:["对话轮数: ",m.interactionCount,m.hasUpdate&&(0,r.jsx)("span",{style:{color:w.warning,marginLeft:"0.5rem"},children:"(有更新)"})]})]}):null})(),"compare"===m.mode&&m.analysisText&&(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer",marginBottom:"0.5rem"},onClick:()=>b(!h),children:[(0,r.jsx)("h5",{style:{color:w.fgMuted,margin:0,fontSize:"0.85rem"},children:"问题步骤分析"}),(0,r.jsx)("button",{style:{background:w.border,border:"none",borderRadius:"4px",color:w.fgMuted,padding:"4px 8px",cursor:"pointer",fontSize:"0.8rem"},children:h?"收起 ▲":"展开 ▼"})]}),h&&(()=>{let e=[];try{e=JSON.parse(m.analysisText)}catch{return(0,r.jsx)("div",{style:{background:w.bg,padding:"1rem",borderRadius:"6px",border:`1px solid ${w.border}`,color:w.fgSecondary,fontSize:"0.9rem"},children:"暂无问题步骤"})}if(!Array.isArray(e)||0===e.length)return(0,r.jsx)("div",{style:{background:w.bg,padding:"1rem",borderRadius:"6px",border:`1px solid ${w.border}`,color:w.success,fontSize:"0.9rem"},children:"✅ 执行流程完全符合预期,无问题步骤"});let t={partial:{text:"部分偏离",color:w.warning},unexpected:{text:"非预期调用",color:w.error},skipped:{text:"跳过",color:w.fgMuted}},o={required:{text:"必选",color:"#38bdf8"},conditional:{text:"条件分支",color:"#fbbf24"},loop:{text:"循环",color:"#a78bfa"},optional:{text:"可选",color:"#94a3b8"},handoff:{text:"衔接",color:"#4ade80"}};return(0,r.jsx)("div",{style:{background:w.bg,borderRadius:"6px",border:`1px solid ${w.border}`,overflow:"hidden",maxHeight:"600px",overflowY:"auto"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.9rem"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:w.bgSecondary},children:[(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`,width:"80px"},children:"对话轮数"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`,width:"120px"},children:"步骤名称"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`,width:"110px"},children:"状态"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`,width:"90px"},children:"控制流"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`},children:"问题描述"}),(0,r.jsx)("th",{style:{padding:"0.75rem",textAlign:"left",color:w.fgMuted,borderBottom:`1px solid ${w.border}`},children:"改进建议"})]})}),(0,r.jsx)("tbody",{children:e.map((e,n)=>{let l;return(0,r.jsxs)("tr",{style:{background:n%2==0?"#18181b":"#111827"},children:[(0,r.jsxs)("td",{style:{padding:"0.75rem",color:i?"#38bdf8":"#e4e4e7",borderBottom:`1px solid ${w.border}`,cursor:i?"pointer":"default",textDecoration:i?"underline":"none"},onClick:()=>i?.(e.stepIndex),children:["#",e.stepIndex]}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:w.fg,borderBottom:`1px solid ${w.border}`},children:e.stepName}),(0,r.jsx)("td",{style:{padding:"0.75rem",borderBottom:`1px solid ${w.border}`},children:(0,r.jsx)("span",{style:{padding:"2px 8px",borderRadius:"4px",background:`${t[e.status]?.color||"#a1a1aa"}20`,color:t[e.status]?.color||"#a1a1aa",fontSize:"0.8rem"},children:t[e.status]?.text||e.status})}),(0,r.jsx)("td",{style:{padding:"0.75rem",borderBottom:`1px solid ${w.border}`},children:(l=o[e.controlFlowType||(e=>{if(!m.matchJson)return null;try{let r=JSON.parse(m.matchJson),t=r.matches?.find(r=>r.expectedStepName===e);t?.expectedStepId}catch{}return null})(e.stepName)||"required"])?(0,r.jsx)("span",{style:{padding:"2px 8px",borderRadius:"4px",background:`${l.color}20`,color:l.color,fontSize:"0.8rem"},children:l.text}):(0,r.jsx)("span",{style:{color:w.fgMuted,fontSize:"0.8rem"},children:"-"})}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:w.fg,borderBottom:`1px solid ${w.border}`},children:e.problem}),(0,r.jsx)("td",{style:{padding:"0.75rem",color:w.primary,borderBottom:`1px solid ${w.border}`},children:e.suggestion})]},n)})})]})})})()]})]}):(0,r.jsxs)("div",{style:{color:w.fgSecondary,fontSize:"0.9rem",textAlign:"center",padding:"2rem"},children:[(0,r.jsxs)("div",{style:{marginBottom:"0.5rem"},children:[(0,r.jsx)("strong",{children:"执行流程"}),":根据执行数据生成轨迹图,无需关联 Skill"]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("strong",{children:"Skill对比"}),":与已解析的 Skill 流程进行对比分析"]})]})]})]})}function s({code:t}){let{isDark:o}=(0,a.useTheme)(),l=(0,a.useThemeColors)(),[i,s]=(0,n.useState)(""),[d,c]=(0,n.useState)("");return((0,n.useEffect)(()=>{let r=async()=>{try{let r=(await e.A(95802)).default;r.initialize({startOnLoad:!1,theme:"dark",flowchart:{useMaxWidth:!1,curve:"basis"},themeVariables:{fontSize:"16px"}});let{svg:o}=await r.render("mermaid-exec-"+Date.now(),t);s(o),c("")}catch(e){console.error("Mermaid render error:",e),c("渲染失败")}};t&&r()},[t]),d)?(0,r.jsx)("div",{style:{color:l.error},children:d}):i?(0,r.jsx)("div",{style:{width:"100%",display:"flex",justifyContent:"flex-start",alignItems:"flex-start",minWidth:"max-content"},dangerouslySetInnerHTML:{__html:i}}):(0,r.jsx)("div",{style:{color:l.fgSecondary},children:"加载中..."})}var d=e.i(9665),c=e.i(94690);let p=(0,t.default)(()=>e.A(34486).then(e=>e.Line),{loadableGenerated:{modules:[13143]},ssr:!1}),u=(0,t.default)(()=>e.A(34486).then(e=>e.LineChart),{loadableGenerated:{modules:[13143]},ssr:!1}),m=(0,t.default)(()=>e.A(34486).then(e=>e.XAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),x=(0,t.default)(()=>e.A(34486).then(e=>e.YAxis),{loadableGenerated:{modules:[13143]},ssr:!1}),g=(0,t.default)(()=>e.A(34486).then(e=>e.CartesianGrid),{loadableGenerated:{modules:[13143]},ssr:!1}),f=(0,t.default)(()=>e.A(34486).then(e=>e.Tooltip),{loadableGenerated:{modules:[13143]},ssr:!1});(0,t.default)(()=>e.A(34486).then(e=>e.Legend),{loadableGenerated:{modules:[13143]},ssr:!1});let h=(0,t.default)(()=>e.A(34486).then(e=>e.ReferenceLine),{loadableGenerated:{modules:[13143]},ssr:!1}),b=(0,t.default)(()=>e.A(34486).then(e=>e.ResponsiveContainer),{loadableGenerated:{modules:[13143]},ssr:!1}),y=(0,t.default)(()=>e.A(14524),{loadableGenerated:{modules:[17847]},ssr:!1}),v=({content:e})=>{let[t,o]=(0,n.useState)(!1);return(0,r.jsxs)("span",{style:{position:"relative",marginLeft:"4px",cursor:"help",fontSize:"0.8rem",display:"inline-block"},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),children:["ⓘ",t&&(0,r.jsxs)("div",{style:{position:"absolute",bottom:"100%",left:"50%",transform:"translateX(-50%)",background:"var(--dropdown-bg)",border:"1px solid var(--border)",color:"var(--foreground)",padding:"6px 10px",borderRadius:"4px",whiteSpace:"pre-line",minWidth:"280px",maxWidth:"400px",zIndex:1e3,marginBottom:"6px",fontSize:"0.75rem",boxShadow:"0 4px 6px -1px var(--shadow-color)",pointerEvents:"none",fontWeight:"normal",lineHeight:"1.4"},children:[e,(0,r.jsx)("div",{style:{position:"absolute",top:"100%",left:"50%",marginLeft:"-4px",width:0,height:0,borderLeft:"4px solid transparent",borderRight:"4px solid transparent",borderTop:"4px solid var(--border)"}})]})]})},j=({interactions:e,focusedStep:t,onStepClick:o})=>{let{isDark:l}=(0,a.useTheme)(),i=(0,a.useThemeColors)();if(!e||!Array.isArray(e)||0===e.length)return null;let[s,d]=(0,n.useState)("default"),[c,p]=(0,n.useState)(!0),[u,m]=(0,n.useState)(0),x=(0,n.useMemo)(()=>(e=>{if(!e||0===e.length)return[];let r=e[0];if(r.type&&("user"===r.type||"assistant"===r.type)&&r.message){let r=new Map;return e.forEach((e,t)=>{let o=e.message;if(!o||!Array.isArray(o.content))return;let n=o.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use";o.content.filter(e=>e.type===n).forEach(t=>{r.set(t.id,{name:t.name,arguments:t.arguments||t.input,messageId:e.id,timestamp:o.timestamp||Date.parse(e.timestamp)})})}),e.map((t,o)=>{let n=t.message;if(!n)return null;let l=Date.parse(t.timestamp),a=n.timestamp||(isNaN(l)?0:l),i={role:n.role,timestamp:a,timeInfo:{created:a}};if(t.latency)i.latency=t.latency;else if("assistant"===n.role){let r=e[o-1];if(r&&r.message?.role==="user"){let e=Date.parse(r.timestamp),o=Date.parse(t.timestamp);isNaN(e)||isNaN(o)||!(o>e)||(i.latency=o-e)}}if(n.content){if("string"==typeof n.content)i.content=n.content;else if(Array.isArray(n.content)){let o=n.content.filter(e=>"text"===e.type);o.length>0&&(i.content=o.map(e=>e.text).join("\n"));let l=n.content.some(e=>"toolCall"===e.type)?"toolCall":"tool_use",a=n.content.filter(e=>e.type===l);a.length>0&&(i.tool_calls=a.map(o=>{let n=r.get(o.id),l=((e,r,t)=>{let o=t,n=new Set,l=100;for(;o&&l>0&&!n.has(o);){n.add(o);let t=r.filter(e=>e.parentId===o);for(let r of t){let t=r.message;if(t&&Array.isArray(t.content)){for(let o of t.content.filter(e=>"toolResult"===e.type||"tool_result"===e.type))if((o.toolCallId||o.tool_use_id)===e)return{content:o.content,isError:o.isError||o.is_error,timestamp:t.timestamp||Date.parse(r.timestamp)}}}if(t.length>0)o=t[0].id,l--;else break}return null})(o.id,e,t.id),a=0;if(n&&l){let e=n.timestamp,r=l.timestamp;e&&r&&r>e&&(a=r-e)}return{function:{name:o.name},arguments:o.arguments||o.input,output:l?l.content:null,timing:{duration_ms:a}}}))}}if(n.usage){let e=n.usage.totalTokens||n.usage.total_tokens||(n.usage.input_tokens||0)+(n.usage.output_tokens||0);i.usage={total:e,total_tokens:e,input:n.usage.input||n.usage.input_tokens||0,output:n.usage.output||n.usage.output_tokens||0,reasoning:n.usage.reasoning_tokens||0}}return i}).filter(e=>e&&("user"===e.role||"assistant"===e.role))}return e})(e),[e]),g=(0,n.useMemo)(()=>{let e=[],r=e=>{if(null==e)return null;if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let r=e.trim();if(!r)return null;if(/^\d+$/.test(r)){let e=Number(r);return Number.isFinite(e)?e:null}let t=Date.parse(r);return Number.isFinite(t)?t:null}return null};return x.forEach((t,o)=>{let n=t.latency||0;!n&&t.timeInfo&&t.timeInfo.completed&&t.timeInfo.created&&(n=t.timeInfo.completed-t.timeInfo.created);let l=t.usage||t.responseMessage?.usage,a=l?.total_tokens||0;!a&&l?.total&&(a=l.total),!a&&(l?.input||l?.output)&&(a=(l.input||0)+(l.output||0));let i=l?.reasoning||0,s=l?.output||l?.output_tokens||0;e.push({kind:"llm",id:`llm-${o}`,order:e.length,original:t,parentIndex:o,toolIndex:null,latency:n,tokens:a,reasoningTokens:i,outputTokens:s});let d=t.tool_calls||t.toolCalls||[];Array.isArray(d)&&d.length>0&&d.forEach((t,n)=>{let l=0,a=t.timing||t.timeInfo||{};if("number"==typeof a.duration_ms)l=a.duration_ms;else if(a.started_at&&a.completed_at){let e=r(a.started_at),t=r(a.completed_at);null!=e&&null!=t&&t>=e&&t-e<36e5&&(l=t-e)}e.push({kind:"tool",id:`tool-${o}-${n}`,order:e.length,original:t,parentIndex:o,toolIndex:n,latency:l,tokens:0})})}),e},[e]),f=(0,n.useMemo)(()=>new Set([...g.filter(e=>"llm"===e.kind)].sort((e,r)=>r.latency-e.latency).slice(0,5).filter(e=>e.latency>0).map(e=>e.id)),[g]),h=(0,n.useMemo)(()=>new Set([...g.filter(e=>"llm"===e.kind)].sort((e,r)=>r.tokens-e.tokens).slice(0,5).filter(e=>e.tokens>0).map(e=>e.id)),[g]),b=g.filter(e=>"llm"===e.kind),y=(0,n.useMemo)(()=>{let e=[...b];return"latency_desc"===s?e.sort((e,r)=>r.latency-e.latency):"tokens_desc"===s?e.sort((e,r)=>r.tokens-e.tokens):e.sort((e,r)=>e.order-r.order),e},[b,s]),v=Math.ceil(y.length/5),j=(0,n.useMemo)(()=>{let e=5*u;return y.slice(e,e+5)},[y,u,5]),k=(0,n.useMemo)(()=>{let e=[];return j.forEach(r=>{e.push(r);let t=g.filter(e=>"tool"===e.kind&&e.parentIndex===r.parentIndex);e.push(...t)}),e},[j,g]);(0,n.useEffect)(()=>{m(0)},[s]);let S={color:i.primary,fontSize:"0.95rem",margin:0};return(0,r.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem",borderBottom:`1px solid ${i.border}`,paddingBottom:"4px",minHeight:"34px"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("button",{onClick:()=>p(!c),style:{background:"transparent",border:"none",color:i.primary,cursor:"pointer",padding:0},children:c?"▼":"▶"}),(0,r.jsx)("h4",{style:S,children:"执行步骤(Trace)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",color:"var(--foreground-muted)"},children:"Sort by:"}),(0,r.jsxs)("select",{value:s,onChange:e=>d(e.target.value),style:{background:"var(--input-bg)",color:"var(--foreground)",border:"1px solid var(--border)",borderRadius:"4px",padding:"2px 8px",fontSize:"0.8rem",outline:"none"},children:[(0,r.jsx)("option",{value:"default",children:"执行顺序"}),(0,r.jsx)("option",{value:"latency_desc",children:"时延"}),(0,r.jsx)("option",{value:"tokens_desc",children:"Tokens"})]})]})]}),c&&(0,r.jsxs)("div",{style:{maxHeight:"600px",overflowY:"auto",paddingRight:"8px"},children:[(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:k.map(e=>{let{original:n,kind:l,parentIndex:a,toolIndex:i,latency:s,tokens:d,reasoningTokens:c,outputTokens:p}=e,u=f.has(e.id),m=h.has(e.id),x=t===a,g="tool"===l,b=s<1e3?`${s.toFixed(0)}ms`:`${(s/1e3).toFixed(2)}s`,y="unknown",v="unknown",j="";if("tool"===l){v=y=`tool:${n.function?.name||n.name||"unknown"}`;let e=n.output??(n.state&&n.state.output);j="string"==typeof e?e:null!=e?JSON.stringify(e):""}else{if(n.responseMessage){v=y=n.responseMessage.role||"assistant";let e=n.responseMessage.content;"string"==typeof e?j=e:e&&(j=JSON.stringify(e))}if(!j&&n.content){let e=n.content;j="string"==typeof e?e:JSON.stringify(e)}if(n.role&&"unknown"===y&&(v=y=n.role),"subagent"===y){let e=n.subagent_name||n.agent;e&&(v=`subagent(${e})`)}}let k=g?"#fbbf24":"user"===y?"#a78bfa":"assistant"===y?"#38bdf8":"opencode"===y?"#ef4444":"subagent"===y?"#22c55e":"#e4e4e7",S=u?"#fb923c":"#fbbf24",w="0 0 0 2px rgba(96, 165, 250, 0.3)",_=`inset 3px 0 0 ${S}`,z=g?x?`${w}, ${_}`:_:x?w:"none";return j.length>150&&(j=j.slice(0,150)+"..."),(0,r.jsxs)("div",{onClick:()=>o(a),style:{background:x?g?"rgba(124, 58, 237, 0.2)":"rgba(37, 99, 235, 0.2)":g?"var(--background-secondary)":"var(--card-bg)",border:x?"1px solid var(--primary)":"1px solid var(--border)",borderRadius:"6px",padding:"0.75rem",paddingLeft:g?"1.25rem":"0.75rem",marginLeft:g?"16px":0,fontSize:"0.9rem",cursor:"pointer",transition:"all 0.2s",boxShadow:z},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("span",{style:{background:"var(--background-secondary)",color:"var(--foreground-secondary)",padding:"2px 6px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold"},children:"tool"===l?`#${a}.${i}`:`#${a}`}),(0,r.jsx)("span",{style:{fontWeight:"bold",color:k,textTransform:"capitalize"},children:v}),g&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"#ffffff",background:"var(--warning)",borderRadius:"999px",padding:"1px 8px",fontWeight:"bold"},children:"TOOL"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"1rem",fontSize:"0.85rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,r.jsx)("span",{style:{color:"var(--foreground-muted)"},children:"Latency:"}),(0,r.jsx)("span",{style:{color:u?"var(--warning)":"var(--foreground)",fontWeight:u?"bold":"normal",borderBottom:u?"1px dashed var(--warning)":"none"},children:b}),u&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--warning)",border:"1px solid var(--warning)",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[(0,r.jsx)("span",{style:{color:"var(--foreground-muted)"},children:"Tokens:"}),(0,r.jsxs)("span",{title:c?`Reasoning: ${c}, Response: ${p-c}`:void 0,style:{color:m?"var(--accent)":"var(--foreground)",fontWeight:m?"bold":"normal",borderBottom:m?"1px dashed var(--accent)":"none"},children:[d,c?` (reasoning: ${c})`:""]}),m&&(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--accent)",border:"1px solid var(--accent)",borderRadius:"4px",padding:"0 4px"},children:"TOP 5"})]})]})]}),(0,r.jsx)("div",{style:{color:"var(--foreground)",fontFamily:"monospace",opacity:.9,wordBreak:"break-all"},children:j||(0,r.jsx)("span",{style:{color:"var(--foreground-muted)",fontStyle:"italic"},children:"(No Content)"})})]},e.id)})}),v>1&&(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:"1rem",marginTop:"1rem"},children:[(0,r.jsx)("button",{onClick:()=>m(e=>Math.max(0,e-1)),disabled:0===u,style:{padding:"4px 12px",background:0===u?"var(--border)":"var(--primary)",color:0===u?"var(--foreground-muted)":"#ffffff",border:"none",borderRadius:"4px",cursor:0===u?"not-allowed":"pointer"},children:"Prev"}),(0,r.jsxs)("span",{style:{color:"var(--foreground-muted)",fontSize:"0.9rem"},children:["Page ",u+1," of ",v]}),(0,r.jsx)("button",{onClick:()=>m(e=>Math.min(v-1,e+1)),disabled:u===v-1,style:{padding:"4px 12px",background:u===v-1?"var(--border)":"var(--primary)",color:u===v-1?"var(--foreground-muted)":"#ffffff",border:"none",borderRadius:"4px",cursor:u===v-1?"not-allowed":"pointer"},children:"Next"})]})]})]})};function k(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-8 text-white",children:"Loading..."}),children:(0,r.jsx)(S,{})})}function S(){let e,t=(0,o.useRouter)(),s=(0,o.useSearchParams)(),{user:k}=(0,c.useAuth)(),{theme:S,toggleTheme:T,isDark:B}=(0,a.useTheme)(),$=(0,a.useThemeColors)(),R=s.get("query")||"",I=s.get("framework")||"",M=s.get("expandTaskId"),[A,L]=(0,n.useState)([]),[D,N]=(0,n.useState)(!0),[W,F]=(0,n.useState)({}),[O,P]=(0,n.useState)("all"),[E,K]=(0,n.useState)(null),[H,q]=(0,n.useState)(""),[J,U]=(0,n.useState)(null),[Y,G]=(0,n.useState)(null),[V,X]=(0,n.useState)(""),[Q,Z]=(0,n.useState)(null),[ee,er]=(0,n.useState)(null),[et,eo]=(0,n.useState)(!1),[en,el]=(0,n.useState)("all"),[ea,ei]=(0,n.useState)("type"),[es,ed]=(0,n.useState)(null),[ec,ep]=(0,n.useState)(!0),[eu,em]=(0,n.useState)(!0),[ex,eg]=(0,n.useState)(!0);(0,n.useEffect)(()=>{let e=es?es.task_id||es.upload_id||`temp-${es.timestamp}`:null;if(!e||W[e])return;let r=[e];/^ses_/.test(e)&&/-\d+$/.test(e)&&r.push(e.replace(/-\d+$/,""));let t=e=>(0,l.apiFetch)(`/api/session?taskId=${encodeURIComponent(e)}`).then(e=>e.ok?e.json():{error:"Error"}).then(e=>{if(e&&!e.error)return e;throw Error(e?.error||"Error")});(async()=>{for(let o of r)try{let r=await t(o);F(t=>({...t,[e]:r}));return}catch{}F(r=>({...r,[e]:{error:"Fetch failed"}}))})()},[es]),(0,n.useEffect)(()=>{let e=new URLSearchParams;k&&e.append("user",k),R&&e.append("query",R),I&&e.append("framework",I),M&&e.append("taskId",M),(0,l.apiFetch)("/api/data?"+e.toString(),{cache:"no-store"}).then(e=>e.json()).then(e=>{let r=R,t=I;if(!r&&M){let o=e.find(e=>e.task_id===M||e.upload_id===M);o&&(r=o.query,t||(t=o.framework),ed(o))}else if(M){let r=e.find(e=>e.task_id===M||e.upload_id===M);r&&ed(r)}let o=e.filter(e=>e.query===r&&(!t||e.framework===t)).map(e=>({...e,tokens:Number(e.tokens||e.Token||0),latency:Number(e.latency||0),answer_score:void 0!==e.answer_score?Number(e.answer_score):+!!e.is_answer_correct}));o.sort((e,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()),L(o),N(!1)})},[R,I,M,k]);let[ef,eh]=(0,n.useState)(new Set),[eb,ey]=(0,n.useState)(new Set),[ev,ej]=(0,n.useState)(!1),[ek,eS]=(0,n.useState)(!1),[ew,e_]=(0,n.useState)("label"),ez="__no_label__",eC=(0,n.useMemo)(()=>{let e=new Set,r=!1;A.forEach(t=>{t.label?e.add(t.label):r=!0});let t=Array.from(e).sort();return r&&t.unshift(ez),t},[A]),eT=(0,n.useMemo)(()=>{let e=new Set,r=!1;A.forEach(t=>{t.model?e.add(t.model):r=!0});let t=Array.from(e).sort();return r&&t.unshift(ez),t},[A]),eB=(0,n.useMemo)(()=>{let e=A;if("all"!==O){let r=Date.now()-(({"1h":36e5,"12h":432e5,"24h":864e5})[O]||0);e=e.filter(e=>new Date(e.timestamp).getTime()>r)}ef.size>0&&(e=e.filter(e=>e.label?ef.has(e.label):ef.has(ez))),eb.size>0&&(e=e.filter(e=>e.model?eb.has(e.model):eb.has(ez)));let r=new Map;for(let t of e){let e=t.task_id||t.upload_id||"";if(!e)continue;let o=r.get(e);if(!o){r.set(e,t);continue}let n=new Date(o.timestamp).getTime(),l=new Date(t.timestamp).getTime();if(l>n){r.set(e,t);continue}if(l===n){let n=String(o.final_result||"").length;String(t.final_result||"").length>n&&r.set(e,t)}}return Array.from(r.values())},[A,O,ef,eb]),e$=(0,n.useMemo)(()=>{let e="label"===ew?"label":"model",r=[...new Set(eB.map(r=>r[e]).filter(e=>e))];return r.sort((e,r)=>{let t=e=>{let r=String(e).match(/(\d+)$/);return r?parseInt(r[0],10):null},o=t(String(e)),n=t(String(r));return null!==o&&null!==n?o-n:String(e).localeCompare(String(r))}),{latency:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,latency:t.reduce((e,r)=>e+(r.latency||0),0)/t.length}}),tokens:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,tokens:t.reduce((e,r)=>e+(r.tokens||0),0)/t.length}}),accuracy:r.map(r=>{let t=eB.filter(t=>t[e]===r);return{name:r,answer_score:t.reduce((e,r)=>e+(r.answer_score||0),0)/t.length}}),skillRecallRate:r.map(r=>{let t=eB.filter(t=>t[e]===r).filter(e=>null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate),o=t.length,n=t.reduce((e,r)=>e+(r.skill_recall_rate||0),0);return{name:r,skill_recall_rate:o>0?n/o:0}}),contextWindow:r.map(r=>{let t=eB.filter(t=>t[e]===r&&null!=t.context_window_pct);return{name:r,context_window_pct:t.length>0?t.reduce((e,r)=>e+(r.context_window_pct||0),0)/t.length:void 0}}).filter(e=>null!=e.context_window_pct)}},[eB,ew]),eR=(0,n.useMemo)(()=>{if(0===eB.length)return[];let e=[...eB].sort((e,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()).filter(e=>null!=e.cost);if(0===e.length)return[];let r=[],t=0,o=0;return e.forEach((e,n)=>{t+=e.cost||0,e.is_answer_correct&&o++;let l=n+1,a=t/l,i=o/l,s=i>0?a/i:null;null!==s&&r.push({timestamp:e.timestamp,cpsr:s,avgCost:a,successRate:i,totalRuns:l})}),r},[eB]),eI=async(e,r)=>{let o=H.trim();if(o){U({id:e,status:"saving"});try{let n=await (0,l.apiFetch)("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:r||void 0,query:o})}),a=await n.json();if(!n.ok)return void U({id:e,status:"error",msg:a.error||"保存失败"});let i=(a.record?.judgment_reason||"").includes("未找到匹配的评测配置")?"已保存,但未找到匹配的评测配置,Score 已归零。请在「数据集管理」中为该 query 添加完全一致的条目。":a.message||"已保存";if(U({id:e,status:"ok",msg:i}),K(null),q(""),o!==R){let r=new URLSearchParams;r.set("query",o),I&&r.set("framework",I),r.set("expandTaskId",e),t.push(`/details?${r.toString()}`)}else{let e=k?`/api/data?user=${encodeURIComponent(k)}`:"/api/data",r=await (0,l.apiFetch)(e),t=(await r.json()).filter(e=>e.query===R&&(!I||e.framework===I)).map(e=>({...e,tokens:Number(e.tokens||e.Token||0),latency:Number(e.latency||0),answer_score:void 0!==e.answer_score?Number(e.answer_score):+!!e.is_answer_correct}));t.sort((e,r)=>new Date(e.timestamp).getTime()-new Date(r.timestamp).getTime()),L(t)}}catch(r){U({id:e,status:"error",msg:"网络错误"})}}},eM=async(e,r)=>{let t=V.trim();if(t){Z({id:e,status:"saving"});try{let o=await (0,l.apiFetch)("/api/data",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({task_id:e,upload_id:r||void 0,final_result:t})}),n=await o.json();if(!o.ok)return void Z({id:e,status:"error",msg:n.error||"保存失败"});let a=n.message||"已保存,正在后台重新评估";Z({id:e,status:"ok",msg:a}),G(null),X("");try{L(r=>r.map(r=>(r.task_id||r.upload_id)===e?{...r,final_result:t,judgment_reason:"结果评估中..."}:r))}catch(e){console.error("Error updating local data:",e)}}catch(r){Z({id:e,status:"error",msg:"网络错误"})}}},eA=async e=>{let r=e.target.files?.[0];if(!r)return;let t=new FormData;t.append("document",r);try{let e=await (0,l.apiFetch)("/api/parse-document",{method:"POST",body:t}),r=await e.json();e.ok?X(r.content||""):alert("解析文档失败: "+(r.error||"Unknown error"))}catch(e){alert("解析文档异常: "+e.message)}},eL=e=>new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),eD=e=>{if(!e)return"-";let r=new Date(e);return r.getFullYear()+"/"+String(r.getMonth()+1).padStart(2,"0")+"/"+String(r.getDate()).padStart(2,"0")+" "+String(r.getHours()).padStart(2,"0")+":"+String(r.getMinutes()).padStart(2,"0")+":"+String(r.getSeconds()).padStart(2,"0")},eN=e=>{if(!e&&0!==e)return"-";let r=new Date(e);return r.getFullYear()+"/"+String(r.getMonth()+1).padStart(2,"0")+"/"+String(r.getDate()).padStart(2,"0")+" "+String(r.getHours()).padStart(2,"0")+":"+String(r.getMinutes()).padStart(2,"0")+":"+String(r.getSeconds()).padStart(2,"0")+"."+String(r.getMilliseconds()).padStart(3,"0")};if(D)return(0,r.jsx)("div",{style:{padding:"2rem",color:$.fg},children:"Loading..."});if(!M)return(0,r.jsx)("div",{style:{minHeight:"100vh",background:$.bg,color:$.fg,padding:"2rem"},children:(0,r.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:$.bgSecondary,border:`1px solid ${$.border}`,borderRadius:"8px",padding:"3rem"},children:[(0,r.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"⚠️"}),(0,r.jsx)("h2",{style:{color:$.warning,marginBottom:"1rem"},children:"缺少必要参数"}),(0,r.jsxs)("p",{style:{color:$.fgSecondary,marginBottom:"1.5rem"},children:["请通过 ",(0,r.jsx)("code",{style:{background:$.bgTertiary,padding:"2px 8px",borderRadius:"4px"},children:"expandTaskId"})," 参数访问此页面"]}),(0,r.jsx)("button",{onClick:()=>t.push("/"),style:{padding:"10px 24px",background:$.primary,color:"#ffffff",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});if(!es)return(0,r.jsx)("div",{style:{minHeight:"100vh",background:$.bg,color:$.fg,padding:"2rem"},children:(0,r.jsxs)("div",{style:{maxWidth:"600px",margin:"4rem auto",textAlign:"center",background:$.bgSecondary,border:`1px solid ${$.border}`,borderRadius:"8px",padding:"3rem"},children:[(0,r.jsx)("div",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"🔍"}),(0,r.jsx)("h2",{style:{color:$.error,marginBottom:"1rem"},children:"未找到记录"}),(0,r.jsxs)("p",{style:{color:$.fgSecondary,marginBottom:"1.5rem"},children:["未找到 ID 为 ",(0,r.jsx)("code",{style:{background:$.bgTertiary,padding:"2px 8px",borderRadius:"4px"},children:M})," 的记录"]}),(0,r.jsx)("button",{onClick:()=>t.push("/"),style:{padding:"10px 24px",background:$.primary,color:"#ffffff",border:"none",borderRadius:"6px",fontWeight:"bold",cursor:"pointer"},children:"返回首页"})]})});let eW=es.task_id||es.upload_id||`temp-${es.timestamp}`,eF=W[eW];return(0,r.jsxs)("div",{style:{minHeight:"100vh",background:"var(--background)",color:"var(--foreground)",padding:"2rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem",borderBottom:"1px solid var(--border)",paddingBottom:"0.5rem"},children:[(0,r.jsxs)("h1",{style:{fontSize:"1.5rem",margin:0,display:"flex",alignItems:"center",gap:"8px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:R,children:[(0,r.jsx)("span",{id:"home-link",style:{flexShrink:0,cursor:"pointer",color:"var(--primary)",transition:"color 0.2s"},onClick:()=>t.push("/"),onMouseOver:e=>e.currentTarget.style.color="var(--primary-hover)",onMouseOut:e=>e.currentTarget.style.color="var(--primary)",children:"Skill-insight"}),(0,r.jsx)("span",{style:{flexShrink:0,color:"var(--border-dark)"},children:"|"}),(0,r.jsx)("span",{style:{color:"var(--foreground-secondary)",overflow:"hidden",textOverflow:"ellipsis"},children:R})]}),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("button",{className:"theme-toggle-btn",onClick:T,title:B?"切换到浅色主题":"切换到深色主题",children:B?"☀️":"🌙"}),(0,r.jsxs)("button",{className:"export-btn",onClick:()=>{let e=document.documentElement.cloneNode(!0);e.querySelectorAll("script").forEach(e=>e.remove()),e.querySelectorAll(".export-btn").forEach(e=>e.remove());let r=`
|
|
2
|
+
<script>
|
|
3
|
+
(function() {
|
|
4
|
+
const TS_MAP = {
|
|
5
|
+
'1h': 60 * 60 * 1000,
|
|
6
|
+
'12h': 12 * 60 * 60 * 1000,
|
|
7
|
+
'24h': 24 * 60 * 60 * 1000,
|
|
8
|
+
'all': 0
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
let state = {
|
|
12
|
+
timeFilter: 'all',
|
|
13
|
+
selectedLabels: new Set()
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const rows = document.querySelectorAll('.record-row');
|
|
17
|
+
const totalCountEl = document.getElementById('total-records-count');
|
|
18
|
+
const labelMenu = document.getElementById('label-menu-dropdown');
|
|
19
|
+
const labelTrigger = document.getElementById('label-menu-trigger');
|
|
20
|
+
const labelTextObj = document.getElementById('label-trigger-text');
|
|
21
|
+
|
|
22
|
+
function updateVisibility() {
|
|
23
|
+
const now = Date.now();
|
|
24
|
+
const threshold = TS_MAP[state.timeFilter] ? now - TS_MAP[state.timeFilter] : 0;
|
|
25
|
+
let count = 0;
|
|
26
|
+
|
|
27
|
+
rows.forEach(row => {
|
|
28
|
+
const ts = parseInt(row.getAttribute('data-timestamp') || '0');
|
|
29
|
+
const lbl = row.getAttribute('data-label') || '';
|
|
30
|
+
|
|
31
|
+
let visible = true;
|
|
32
|
+
|
|
33
|
+
if (threshold > 0 && ts < threshold) visible = false;
|
|
34
|
+
|
|
35
|
+
if (visible && state.selectedLabels.size > 0) {
|
|
36
|
+
const checkLbl = lbl || '__no_label__';
|
|
37
|
+
if (!state.selectedLabels.has(checkLbl)) visible = false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
row.style.display = visible ? '' : 'none';
|
|
41
|
+
if (visible) count++;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
if (totalCountEl) totalCountEl.innerText = count;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
document.querySelectorAll('.filter-time-btn').forEach(btn => {
|
|
48
|
+
btn.onclick = () => {
|
|
49
|
+
document.querySelectorAll('.filter-time-btn').forEach(b => {
|
|
50
|
+
b.style.background = isDark ? '#18181b' : '#f4f4f5';
|
|
51
|
+
b.style.color = isDark ? '#71717a' : '#a1a1aa';
|
|
52
|
+
});
|
|
53
|
+
btn.style.background = isDark ? '#3b82f6' : '#2563eb';
|
|
54
|
+
btn.style.color = isDark ? '#fafafa' : '#ffffff';
|
|
55
|
+
|
|
56
|
+
state.timeFilter = btn.getAttribute('data-tf');
|
|
57
|
+
updateVisibility();
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
if (labelTrigger && labelMenu) {
|
|
62
|
+
labelTrigger.onclick = (e) => {
|
|
63
|
+
e.stopPropagation();
|
|
64
|
+
labelMenu.style.display = labelMenu.style.display === 'none' ? 'block' : 'none';
|
|
65
|
+
};
|
|
66
|
+
document.body.onclick = () => {
|
|
67
|
+
labelMenu.style.display = 'none';
|
|
68
|
+
};
|
|
69
|
+
labelMenu.onclick = (e) => e.stopPropagation();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
document.querySelectorAll('.filter-label-checkbox').forEach(chk => {
|
|
73
|
+
chk.onchange = () => {
|
|
74
|
+
const val = chk.value;
|
|
75
|
+
if (chk.checked) state.selectedLabels.add(val);
|
|
76
|
+
else state.selectedLabels.delete(val);
|
|
77
|
+
|
|
78
|
+
if (labelTextObj) {
|
|
79
|
+
labelTextObj.innerText = state.selectedLabels.size === 0 ? '全部筛选' : \`已选 \${state.selectedLabels.size} 个\`;
|
|
80
|
+
}
|
|
81
|
+
updateVisibility();
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const clearBtn = document.getElementById('filter-label-clear');
|
|
86
|
+
if (clearBtn) {
|
|
87
|
+
clearBtn.onclick = () => {
|
|
88
|
+
state.selectedLabels.clear();
|
|
89
|
+
document.querySelectorAll('.filter-label-checkbox').forEach(c => c.checked = false);
|
|
90
|
+
if (labelTextObj) labelTextObj.innerText = 'All Filter';
|
|
91
|
+
updateVisibility();
|
|
92
|
+
if (labelMenu) labelMenu.style.display = 'none';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const homeLink = document.getElementById('home-link');
|
|
97
|
+
if (homeLink) {
|
|
98
|
+
homeLink.onclick = () => {
|
|
99
|
+
window.location.href = '/';
|
|
100
|
+
};
|
|
101
|
+
homeLink.onmouseover = () => { homeLink.style.color = isDark ? '#93c5fd' : '#2563eb'; };
|
|
102
|
+
homeLink.onmouseout = () => { homeLink.style.color = isDark ? '#60a5fa' : '#2563eb'; };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
console.log('Offline Mode: Charts are static snapshots.');
|
|
106
|
+
})();
|
|
107
|
+
</script>
|
|
108
|
+
`,t=new Blob([`<!DOCTYPE html>
|
|
109
|
+
${e.outerHTML}${r}`],{type:"text/html"}),o=URL.createObjectURL(t),n=document.createElement("a");n.href=o,n.download=`detail_export_${R||"all"}_${new Date().toISOString().slice(0,10)}.html`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(o)},style:{padding:"8px 16px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",fontWeight:"bold",cursor:"pointer",display:"flex",alignItems:"center",gap:"8px"},children:[(0,r.jsx)("span",{children:"📤"})," 导出"]})]})]}),(0,r.jsxs)("div",{style:{marginBottom:"2rem",color:"var(--foreground-secondary)"},children:["框架: ",(0,r.jsx)("strong",{style:{color:"var(--foreground)"},children:I||"All"})," | 任务 ID: ",(0,r.jsx)("strong",{style:{color:"var(--foreground)"},children:eW})]}),(0,r.jsxs)("div",{style:{background:"linear-gradient(135deg, var(--background-secondary) 0%, var(--background) 100%)",border:"2px solid var(--primary)",borderRadius:"12px",padding:"2rem",marginBottom:"2rem",boxShadow:"0 0 20px var(--shadow-color)"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:ec?"1.5rem":"0"},children:[(0,r.jsxs)("h2",{style:{fontSize:"1.5rem",margin:0,color:"var(--primary)",display:"flex",alignItems:"center",gap:"8px"},children:["📋 本次执行记录详情",(0,r.jsx)("span",{style:{fontSize:"0.85rem",background:"var(--primary)",color:"#ffffff",padding:"2px 12px",borderRadius:"999px",fontWeight:"bold"},children:eD(es.timestamp)})]}),(0,r.jsx)("button",{onClick:()=>ep(!ec),style:{background:"transparent",border:"1px solid var(--primary)",color:"var(--primary)",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:ec?"▼ 折叠":"▶ 展开"})]}),ec&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{style:{background:"var(--background)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1.5rem",marginBottom:"1.5rem"},children:[(0,r.jsx)("h3",{style:{fontSize:"1.2rem",marginBottom:"1rem",color:"var(--warning)",borderBottom:"1px solid var(--border)",paddingBottom:"0.5rem"},children:"📊 原始采集数据"}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem",marginBottom:"1.5rem",minHeight:"400px"},children:[(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"1.5rem"},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:z,children:"用户输入"}),E===eW?(0,r.jsxs)("div",{children:[(0,r.jsx)("textarea",{value:H,onChange:e=>q(e.target.value),rows:3,style:{width:"100%",padding:"0.75rem",background:"var(--input-bg)",border:"1px solid var(--input-border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"monospace",fontSize:"0.9rem",resize:"vertical"},placeholder:"输入 query"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("button",{onClick:()=>eI(eW,es.upload_id),disabled:J?.id===eW&&J?.status==="saving",style:{padding:"6px 14px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",cursor:J?.id===eW&&J?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:J?.id===eW&&J?.status==="saving"?"保存中...":"保存"}),(0,r.jsx)("button",{onClick:()=>{K(null),q(""),U(null)},style:{padding:"6px 14px",background:"var(--border)",color:"var(--foreground-secondary)",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),J?.id===eW&&J?.status==="ok"&&(0,r.jsx)("span",{style:{color:"var(--success)",fontSize:"0.9rem"},children:J.msg}),J?.id===eW&&J?.status==="error"&&(0,r.jsx)("span",{style:{color:"var(--error)",fontSize:"0.9rem"},children:J.msg})]})]}):(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[(0,r.jsx)("div",{style:C,children:es.query||"(空)"}),(0,r.jsx)("button",{onClick:e=>{var r;e.stopPropagation(),r=es.query||"",K(eW),q(r||""),U(null)},style:{padding:"4px 10px",background:"transparent",color:"var(--primary)",border:"1px solid var(--primary)",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.8rem",whiteSpace:"nowrap",alignSelf:"flex-start"},children:"✏️ 编辑"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:z,children:"使用 Skills"}),(0,r.jsx)("div",{style:{...C,padding:"0.5rem"},children:(0,r.jsx)(d.SkillLinks,{skills:es.skills,skill:es.skill,skillVersion:es.skill_version,user:es.user})})]}),(null!=es.llm_call_count||null!=es.tool_call_count||null!=es.input_tokens||null!=es.output_tokens||null!=es.tool_call_error_count)&&(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:z,children:"运行时指标"}),(0,r.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(120px, 1fr))",gap:"0.75rem",marginTop:"0.5rem"},children:[{label:"大模型调用次数",value:es.llm_call_count,color:"var(--primary)"},{label:"工具调用次数",value:es.tool_call_count,color:"var(--primary)"},{label:"工具报错次数",value:es.tool_call_error_count??0,color:es.tool_call_error_count?"var(--error)":"var(--success)"},{label:"输入 Tokens",value:es.input_tokens,color:"var(--primary)"},{label:"输出 Tokens",value:es.output_tokens,color:"var(--primary)",tooltip:es.reasoning_tokens?`Reasoning: ${es.reasoning_tokens.toLocaleString()}, Response: ${((es.output_tokens||0)-es.reasoning_tokens).toLocaleString()}`:void 0},{label:"上下文窗口 %",value:es.context_window_pct,color:null!=es.context_window_pct?es.context_window_pct>90?"var(--error)":"var(--success)":"var(--primary)",format:e=>`${e.toFixed(1)}%`,fallback:null==es.context_window_pct&&null!=es.max_single_call_tokens?"N/A":void 0,tooltip:null!=es.context_window_pct?`max_single_call_tokens (${es.max_single_call_tokens?.toLocaleString()}) / context_window_limit (${es.context_window_limit?.toLocaleString()}) \xd7 100`+(es.model?` (${es.model})`:"")+`. Source: ${es.context_window_source||"default"}.`:es.model?`此模型未配置: ${es.model}.`:"Model unknown. Context window % cannot be calculated."},{label:"预估成本",value:es.cost,color:"var(--primary)",format:e=>`$${0===e?"0.00":e<.01?e.toFixed(4):e<1?e.toFixed(3):e.toFixed(2)}`,fallback:null==es.cost&&null!=es.input_tokens?"N/A":void 0,tooltip:es.cost_pricing?(es.cache_read_input_tokens||es.cache_creation_input_tokens?`Cost = base_input \xd7 $${es.cost_pricing.inputTokenPrice}/M + cache_read \xd7 $${es.cost_pricing.cacheReadInputTokenPrice}/M + cache_create \xd7 $${es.cost_pricing.cacheCreationInputTokenPrice}/M + output \xd7 $${es.cost_pricing.outputTokenPrice}/M`:`Cost = input_tokens \xd7 $${es.cost_pricing.inputTokenPrice}/M + output_tokens \xd7 $${es.cost_pricing.outputTokenPrice}/M`)+(es.model?` (${es.model})`:"")+`. Estimated from ${"custom"===es.cost_pricing.source?"custom":"default"} pricing.`:es.model?`Pricing not available for model: ${es.model}.`:"Model unknown. Cost cannot be estimated."}].map((e,t)=>(0,r.jsxs)("div",{style:{background:"var(--background-secondary)",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.75rem",textAlign:"center"},children:[(0,r.jsx)("div",{style:{fontSize:"1.3rem",fontWeight:"bold",color:e.color},children:null!=e.value?"format"in e&&e.format?e.format(e.value):e.value.toLocaleString():"fallback"in e&&e.fallback?e.fallback:"-"}),(0,r.jsxs)("div",{style:{fontSize:"0.75rem",color:"var(--foreground-muted)",marginTop:"4px"},children:[e.label,"tooltip"in e&&e.tooltip&&(0,r.jsx)(v,{content:e.tooltip})]})]},t))})]})]}),(0,r.jsx)("div",{style:{position:"relative"},children:(0,r.jsxs)("div",{style:{position:"absolute",inset:0,display:"flex",flexDirection:"column"},children:[(0,r.jsx)("h4",{style:{...z,marginBottom:"0.5rem"},children:"最终结果"}),Y===eW?(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,r.jsx)("textarea",{value:V,onChange:e=>X(e.target.value),style:{flex:1,width:"100%",padding:"0.75rem",background:"var(--input-bg)",border:"1px solid var(--input-border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"monospace",fontSize:"0.9rem",resize:"none",marginBottom:"0.5rem"},placeholder:"输入或上传 最终结果"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center",flexShrink:0},children:[(0,r.jsx)("button",{onClick:()=>eM(eW,es.upload_id),disabled:Q?.id===eW&&Q?.status==="saving",style:{padding:"6px 14px",background:"var(--primary)",color:"#ffffff",border:"none",borderRadius:"4px",cursor:Q?.id===eW&&Q?.status==="saving"?"not-allowed":"pointer",fontWeight:"bold"},children:Q?.id===eW&&Q?.status==="saving"?"保存中...":"保存并重评"}),(0,r.jsx)("button",{onClick:()=>{G(null),X(""),Z(null)},style:{padding:"6px 14px",background:"var(--border)",color:"var(--foreground-secondary)",border:"none",borderRadius:"4px",cursor:"pointer"},children:"取消"}),(0,r.jsxs)("label",{style:{padding:"6px 14px",background:"var(--background-secondary)",color:"var(--warning)",border:"1px solid var(--warning)",borderRadius:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"4px",fontSize:"0.85rem"},children:["📄 上传报告",(0,r.jsx)("input",{type:"file",accept:".md,.txt,.pdf,.markdown",style:{display:"none"},onChange:eA})]}),Q?.id===eW&&Q?.status==="ok"&&(0,r.jsx)("span",{style:{color:"var(--success)",fontSize:"0.9rem"},children:Q.msg}),Q?.id===eW&&Q?.status==="error"&&(0,r.jsx)("span",{style:{color:"var(--error)",fontSize:"0.9rem"},children:Q.msg})]})]}):(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",flex:1,minHeight:0},children:[(0,r.jsx)("div",{style:{...C,flex:1,overflowY:"auto",padding:"1rem"},children:es.final_result||"(No Result)"}),(0,r.jsx)("div",{style:{marginTop:"0.5rem",flexShrink:0},children:(0,r.jsx)("button",{onClick:e=>{var r;e.stopPropagation(),r=es.final_result||"",G(eW),X(r||""),Z(null)},style:{padding:"4px 10px",background:"transparent",color:"var(--primary)",border:"1px solid var(--primary)",borderRadius:"4px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"0.8rem"},children:"✏️ 编辑 / 替换结果"})})]})]})})]}),eF?eF.error?(0,r.jsx)("div",{style:{color:"var(--foreground-muted)",fontStyle:"italic"},children:eF.error}):(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"2rem"},children:[(0,r.jsxs)("div",{style:{minWidth:0},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"flex-start",alignItems:"center",gap:"8px",marginBottom:"0.5rem",borderBottom:"1px solid var(--border)",paddingBottom:"4px",minHeight:"34px"},children:[(0,r.jsx)("button",{onClick:()=>em(!eu),style:{background:"transparent",border:"none",color:"var(--primary)",cursor:"pointer",padding:0},children:eu?"▼":"▶"}),(0,r.jsx)("h4",{style:z,children:"会话数据(原始JSON)"})]}),eu&&(0,r.jsx)("div",{style:{background:"var(--code-block-bg)",padding:"1rem",borderRadius:"8px",overflowY:"auto",maxHeight:"600px",border:"1px solid var(--border)"},children:(0,r.jsx)(y,{src:(e=>{if(!e)return e;let r=JSON.parse(JSON.stringify(e));return r.startTime&&(r.startTime=eN(r.startTime)),Array.isArray(r.interactions)&&(r.interactions=r.interactions.map(e=>{let r={...e};return r.timestamp&&(r.timestamp=eN(r.timestamp)),r.message?.timestamp&&(r.message.timestamp=eN(r.message.timestamp)),r.timeInfo?.created&&(r.timeInfo.created=eN(r.timeInfo.created)),r})),r})(eF),theme:B?"monokai":"rjv-default",groupArraysAfterLength:0,shouldCollapse:e=>{let r=[...e.namespace||[],e.name].filter(e=>null!=e&&""!==String(e).trim()).map(String);if(null===ee)return"interactions"===r[0]&&!!(r.length>=2);if("interactions"===r[0]){let e=r[1];if(void 0!==e){let r=Number(e);if(!isNaN(r)&&r!==ee)return!0}}return!1},displayDataTypes:!1,name:null,style:{backgroundColor:"transparent",fontSize:"0.85rem"},enableClipboard:!0},`json-${null!==ee?ee:"default"}`)})]}),(0,r.jsx)("div",{style:{minWidth:0},children:(0,r.jsx)(j,{interactions:eF.interactions,focusedStep:ee,onStepClick:er})})]}):(0,r.jsx)("div",{style:{color:"var(--primary)"},children:"Loading session log..."})]}),(0,r.jsxs)("div",{style:{background:"var(--background-secondary)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1.5rem",marginTop:"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:ex?"1rem":"0",borderBottom:ex?"1px solid var(--border)":"none",paddingBottom:ex?"0.5rem":"0"},children:[(0,r.jsx)("h3",{style:{fontSize:"1.2rem",margin:0,color:"var(--secondary)"},children:"🔍 分析结果"}),(0,r.jsx)("button",{onClick:()=>eg(!ex),style:{background:"transparent",border:"1px solid var(--secondary)",color:"var(--secondary)",padding:"4px 12px",borderRadius:"6px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem"},children:ex?"▼ 折叠":"▶ 展开"})]}),ex&&(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"2rem",marginBottom:"2rem"},children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{style:{...z,marginBottom:"1rem"},children:"评分详情与分析"}),0===(e=function(e){let r=[];if(!e)return r;let t=e.split("\n"),o={rc:0,ka:0};for(let e of t){let t=e.match(/\*\*Root Cause\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(t){r.push({id:`RC-${o.rc++}`,type:"root_cause",content:t[1].replace(/\.{3}$/,""),match_score:parseInt(t[2])/100,explanation:t[3].trim(),weight:parseFloat(t[4])});continue}let n=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(Weight:\s*([\d.]+)\)/);if(n){r.push({id:`KA-${o.ka++}`,type:"key_action",content:n[1].replace(/\.{3}$/,""),match_score:parseInt(n[2])/100,explanation:n[3].trim(),weight:parseFloat(n[4])});continue}let l=e.match(/\*\*Key Action\*\*\s*\[(.*?)\]\s*.*?:\s*(\d+)%\s*match\.\s*(.+?)\s*\(该分支未触发,不计入总分\)/);l&&r.push({id:`KA-${o.ka++}`,type:"key_action",content:l[1].replace(/\.{3}$/,""),match_score:parseInt(l[2])/100,explanation:l[3].trim(),weight:0})}return r}(es.judgment_reason||"")).length?(0,r.jsx)("div",{style:{...C,background:"var(--code-block-bg)",padding:"1rem",borderRadius:"6px",border:"1px solid var(--border)"},children:es.judgment_reason||"-"}):(0,r.jsx)("div",{style:{background:"var(--card-bg)",borderRadius:"6px",border:"1px solid var(--border)",overflowX:"auto",maxHeight:"600px",overflowY:"auto"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem",minWidth:"950px"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:"var(--background-secondary)"},children:[(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"ID"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"180px"},children:"评分标准"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"得分"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"50px",whiteSpace:"nowrap"},children:"权重"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"60px",whiteSpace:"nowrap"},children:"扣分"}),(0,r.jsxs)("th",{style:{padding:"10px 12px",textAlign:"center",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"50px",whiteSpace:"nowrap"},children:["关联",(0,r.jsx)(v,{content:"表示扣分来源。若与skill相关,则体现在“分析依据”和“改进建议”"})]}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"扣分原因"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"分析依据"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",minWidth:"150px"},children:"改进建议"})]})}),(0,r.jsx)("tbody",{children:e.map((e,t)=>{let o=es.skill_issues?.find(r=>{if(r.id===e.id)return!0;let t=(r.content||"").trim().toLowerCase(),o=(e.content||"").trim().toLowerCase();return t&&o&&(t===o||o.includes(t))}),n=0===e.weight,l=n?0:(1-e.match_score)*e.weight;return(0,r.jsxs)("tr",{id:`eval-item-${eW}-${e.id}`,style:{background:n?"rgba(148, 163, 184, 0.1)":t%2==0?"var(--card-bg)":"var(--background-secondary)",transition:"background 0.2s",opacity:n?.7:1},onMouseEnter:e=>{e.currentTarget.style.background=n?"rgba(148, 163, 184, 0.15)":"rgba(56, 189, 248, 0.05)"},onMouseLeave:e=>{e.currentTarget.style.background=n?"rgba(148, 163, 184, 0.1)":t%2==0?"var(--card-bg)":"var(--background-secondary)"},children:[(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:(0,r.jsx)("span",{style:{background:"root_cause"===e.type?"#f472b6":"#38bdf8",color:$.bg,padding:"2px 8px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold",whiteSpace:"nowrap",opacity:n?.6:1},children:e.id})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--foreground)"},children:(0,r.jsx)("div",{style:{fontWeight:500,marginBottom:"4px",wordBreak:"break-word"},children:o?.content||e.content})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:(0,r.jsxs)("span",{style:{color:n?"#94a3b8":e.match_score>=1?"#4ade80":e.match_score>=.5?"#fbbf24":"#f87171",fontWeight:"bold",whiteSpace:"nowrap"},children:[(100*e.match_score).toFixed(0),"%"]})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center",color:"var(--foreground-secondary)"},children:n?(0,r.jsx)("span",{style:{fontSize:"0.75rem",color:"#64748b",fontStyle:"italic"},children:"不计入"}):e.weight.toFixed(1)}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:n?(0,r.jsx)("span",{style:{color:"#64748b",fontSize:"0.8rem"},children:"-"}):(0,r.jsxs)("span",{style:{color:l>0?"#f87171":"#4ade80",fontWeight:"bold",whiteSpace:"nowrap"},children:["-",l.toFixed(2)]})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",textAlign:"center"},children:o&&(0,r.jsx)("span",{style:{background:$.error,color:"#fff",padding:"2px 6px",borderRadius:"4px",fontSize:"0.7rem",whiteSpace:"nowrap"},children:"Skill"})}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--foreground)",fontSize:"0.85rem"},children:o?.explanation||e.explanation||"-"}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--warning)",fontSize:"0.85rem",fontStyle:"italic"},children:o?.reasoning||"-"}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)",color:"var(--success)",fontSize:"0.85rem"},children:o?.improvement_suggestion?(0,r.jsx)("div",{style:{background:$.successSubtle,padding:"4px 8px",borderRadius:"4px"},children:o.improvement_suggestion}):"-"})]},t)})})]})})]}),es.failures&&es.failures.length>0?(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.75rem"},children:[(0,r.jsx)("h4",{style:{...z,color:$.error,borderLeft:"3px solid #f87171",paddingLeft:"8px",borderBottom:"none",margin:0},children:" 执行异常 "}),(0,r.jsx)("div",{style:{display:"flex",gap:"8px"},children:(0,r.jsxs)("select",{value:en,onChange:e=>el(e.target.value),style:{background:"var(--input-bg)",border:"1px solid var(--input-border)",color:"var(--foreground)",borderRadius:"4px",padding:"4px 8px",fontSize:"0.8rem"},children:[(0,r.jsx)("option",{value:"all",children:"全部"}),(0,r.jsx)("option",{value:"failure",children:"失败"}),(0,r.jsx)("option",{value:"anomaly",children:"异常"})]})})]}),(0,r.jsx)("div",{style:{background:"var(--card-bg)",borderRadius:"6px",border:"1px solid var(--border)",overflow:"hidden"},children:(0,r.jsxs)("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:"0.85rem"},children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{style:{background:"var(--background-secondary)"},children:[(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"100px"},children:"类型"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"auto"},children:"描述"}),(0,r.jsx)("th",{style:{padding:"10px 12px",textAlign:"left",color:"var(--foreground-secondary)",borderBottom:"1px solid var(--border)",width:"500px"},children:"恢复措施"})]})}),(0,r.jsx)("tbody",{children:es.failures.filter(e=>{if("all"===en)return!0;let r=e.failure_type.toLowerCase();return"failure"===en?r.includes("fail")||r.includes("error"):"anomaly"!==en||r.includes("anomaly")||r.includes("warn")}).map((e,t)=>(0,r.jsxs)("tr",{style:{background:t%2==0?"var(--card-bg)":"var(--background-secondary)"},children:[(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:(0,r.jsx)("span",{style:{background:e.failure_type.toLowerCase().includes("error")||e.failure_type.toLowerCase().includes("fail")?"#f87171":"#fbbf24",color:$.bg,padding:"2px 8px",borderRadius:"4px",fontSize:"0.75rem",fontWeight:"bold"},children:e.failure_type})}),(0,r.jsxs)("td",{style:{padding:"10px 12px",borderBottom:"1px solid var(--border)"},children:[(0,r.jsx)("div",{style:{color:$.error,fontWeight:500,marginBottom:"4px"},children:e.description}),e.context&&(0,r.jsx)("div",{style:{fontSize:"0.8rem",color:"var(--foreground-secondary)",fontFamily:"monospace",background:"var(--code-block-bg)",padding:"6px 8px",borderRadius:"4px",marginTop:"4px",whiteSpace:"pre-wrap",wordBreak:"break-all"},children:e.context})]}),(0,r.jsx)("td",{style:{padding:"10px 12px",borderBottom:`1px solid ${$.border}`,color:$.success,fontSize:"0.8rem"},children:e.recovery||"-"})]},t))})]})})]}):(0,r.jsx)("div",{style:{padding:"1rem",border:"1px dashed #334155",borderRadius:"6px",color:$.fgSecondary,textAlign:"center",fontSize:"0.9rem",marginBottom:"1.5rem"},children:"No intermediate failures detected."}),(0,r.jsx)(i,{executionId:eW,skillId:es.skill&&es.skill.trim()||(Array.isArray(es.skills)&&es.skills.length>0?es.skills[0]:void 0),user:es.user,onStepClick:er})]})]})]})]}),(0,r.jsxs)("div",{style:{marginBottom:"2rem",display:"flex",gap:"1rem",alignItems:"center",flexWrap:"wrap"},children:[["all","24h","12h","1h"].map(e=>(0,r.jsx)("button",{className:"filter-time-btn","data-tf":e,onClick:()=>P(e),style:{padding:"6px 16px",background:O===e?"#38bdf8":"#1e293b",color:O===e?"#18181b":"#a1a1aa",border:`1px solid ${$.border}`,borderRadius:"4px",cursor:"pointer"},children:e.toUpperCase()},e)),(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.8rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:$.fgMuted,fontSize:"0.9rem"},children:"比较维度:"}),(0,r.jsxs)("div",{style:{display:"flex",background:$.bgSecondary,padding:"2px",borderRadius:"6px",border:`1px solid ${$.border}`},children:[(0,r.jsx)("button",{onClick:()=>e_("label"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"label"===ew?"#38bdf8":"transparent",color:"label"===ew?"#18181b":"#a1a1aa",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"label"===ew?"bold":"normal"},children:"标签"}),(0,r.jsx)("button",{onClick:()=>e_("model"),style:{padding:"4px 12px",borderRadius:"4px",fontSize:"0.85rem",background:"model"===ew?"#38bdf8":"transparent",color:"model"===ew?"#18181b":"#a1a1aa",border:"none",cursor:"pointer",transition:"all 0.2s",fontWeight:"model"===ew?"bold":"normal"},children:"模型"})]})]}),eC.length>0&&(0,r.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:$.fgMuted,fontSize:"0.9rem"},children:"Label:"}),(0,r.jsxs)("div",{style:{position:"relative"},children:[(0,r.jsxs)("button",{id:"label-menu-trigger",onClick:()=>ej(!ev),style:{background:$.bgSecondary,color:$.fg,border:`1px solid ${$.border}`,borderRadius:"4px",padding:"4px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem",minWidth:"120px",justifyContent:"space-between"},children:[(0,r.jsx)("span",{id:"label-trigger-text",children:0===ef.size?"全部筛选":`已选 ${ef.size} 个`}),(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,r.jsxs)("div",{id:"label-menu-dropdown",style:{display:ev?"block":"none",position:"absolute",top:"100%",left:0,marginTop:"4px",background:$.bgSecondary,border:`1px solid ${$.border}`,borderRadius:"4px",padding:"0.5rem",zIndex:50,minWidth:"200px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.5)",flexDirection:"column",gap:"0.5rem",maxHeight:"300px",overflowY:"auto"},children:[(0,r.jsx)("div",{id:"filter-label-clear",onClick:()=>{eh(new Set),ej(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===ef.size?"#38bdf8":"#a1a1aa",borderBottom:`1px solid ${$.border}`,marginBottom:"4px"},children:"Show All (Clear Filter)"}),eC.map(e=>{let t=ef.has(e),o=e===ez?"(None)":String(e),n=e===ez?"__no_label__":String(e);return(0,r.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,r.jsx)("input",{type:"checkbox",className:"filter-label-checkbox",value:n,checked:t,onChange:()=>{let r=new Set(ef);r.has(e)?r.delete(e):r.add(e),eh(r)}}),(0,r.jsx)("span",{style:{color:t?"#fff":"#d4d4d8"},children:o})]},String(e))})]}),ev&&(0,r.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>ej(!1)})]})]}),eT.length>0&&(0,r.jsxs)("div",{style:{position:"relative",display:"flex",alignItems:"center",gap:"0.5rem",marginLeft:"1rem",borderLeft:"1px solid #334155",paddingLeft:"1rem"},children:[(0,r.jsx)("span",{style:{color:$.fgMuted,fontSize:"0.9rem"},children:"Model:"}),(0,r.jsxs)("div",{style:{position:"relative"},children:[(0,r.jsxs)("button",{onClick:()=>eS(!ek),style:{background:$.bgSecondary,color:$.fg,border:`1px solid ${$.border}`,borderRadius:"4px",padding:"4px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",fontSize:"0.9rem",minWidth:"120px",justifyContent:"space-between"},children:[(0,r.jsx)("span",{children:0===eb.size?"所有模型":`已选 ${eb.size} 个`}),(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:"▼"})]}),(0,r.jsxs)("div",{style:{display:ek?"block":"none",position:"absolute",top:"100%",left:0,marginTop:"4px",background:$.bgSecondary,border:`1px solid ${$.border}`,borderRadius:"4px",padding:"0.5rem",zIndex:50,minWidth:"200px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.5)",flexDirection:"column",gap:"0.5rem",maxHeight:"300px",overflowY:"auto"},children:[(0,r.jsx)("div",{onClick:()=>{ey(new Set),eS(!1)},style:{cursor:"pointer",padding:"4px 8px",fontSize:"0.9rem",color:0===eb.size?"#38bdf8":"#a1a1aa",borderBottom:`1px solid ${$.border}`,marginBottom:"4px"},children:"Show All (Clear Filter)"}),eT.map(e=>{let t=eb.has(e),o=e===ez?"(None)":String(e);return(0,r.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",fontSize:"0.9rem",padding:"2px 8px"},children:[(0,r.jsx)("input",{type:"checkbox",checked:t,onChange:()=>{let r=new Set(eb);r.has(e)?r.delete(e):r.add(e),ey(r)}}),(0,r.jsx)("span",{style:{color:t?"#fff":"#d4d4d8"},children:o})]},String(e))})]}),ek&&(0,r.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:40},onClick:()=>eS(!1)})]})]})]}),eB.some(e=>null!=e.context_window_pct)&&(0,r.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,r.jsxs)("button",{onClick:()=>eo(!et),style:{background:"transparent",border:"1px solid var(--border)",color:"var(--foreground-secondary)",padding:"6px 14px",borderRadius:"4px",cursor:"pointer",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"6px",marginBottom:"0.5rem"},children:[(0,r.jsx)("span",{style:{fontSize:"0.7rem"},children:et?"▲":"▼"}),"上下文窗口利用率趋势 (%)"]}),et&&(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["上下文窗口利用率趋势 (%)",(0,r.jsx)(v,{content:"单次 LLM 调用中最大 token 数 / 模型上下文窗口限制 × 100。超过 90% 时推理质量可能下降。"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eB.filter(e=>null!=e.context_window_pct),children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,100]}),(0,r.jsx)(f,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),(0,r.jsx)(h,{y:90,stroke:"var(--error)",strokeDasharray:"4 4",label:{value:"90%",fill:"var(--error)",fontSize:11}}),es&&null!=es.context_window_pct&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"context_window_pct",stroke:"#a78bfa",dot:!0,strokeWidth:2})]})})]})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"1rem",marginBottom:"2rem"},children:[(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["时延趋势 (秒)",(0,r.jsx)(v,{content:"从请求发出到收到最终完整回复的总耗时"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eB,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(f,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),es&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["令牌消耗趋势",(0,r.jsx)(v,{content:"输入 Prompt 与输出 Completion 的 Token 总和"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eB,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(f,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),es&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["准确率趋势 (0-1)",(0,r.jsx)(v,{content:"基于 AI 裁判对执行结果的自动评分 (1.0=通过, 0.0=失败)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eB,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,1]}),(0,r.jsx)(f,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),es&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["技能召回率趋势",(0,r.jsx)(v,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eB,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,domain:[0,1]}),(0,r.jsx)(f,{contentStyle:{background:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),es&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),eR.length>0&&(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["CPSR 趋势",(0,r.jsx)(v,{content:"Cost Per Successful Resolution: Average cost per successful task resolution.\nFormula: (total cost) / (number of runs with successful resolutions)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:eR,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"var(--border)"}),(0,r.jsx)(m,{dataKey:"timestamp",tickFormatter:eL,stroke:"var(--foreground-secondary)",fontSize:11}),(0,r.jsx)(x,{stroke:"var(--foreground-secondary)",fontSize:11,tickFormatter:e=>`$${e.toFixed(3)}`}),(0,r.jsx)(f,{formatter:(e,r)=>"CPSR"===r?[`$${e?.toFixed(4)||"N/A"}`,"CPSR"]:[e,String(r)],contentStyle:{backgroundColor:"var(--dropdown-bg)",borderColor:"var(--border)",color:"var(--foreground)"}}),es&&null!=es.cost&&(0,r.jsx)(h,{x:es.timestamp,stroke:"var(--warning)",strokeDasharray:"5 5",strokeWidth:2,label:{value:"本次",fill:"var(--warning)",fontSize:11,position:"insideTopLeft"}}),(0,r.jsx)(p,{type:"monotone",dataKey:"cpsr",name:"CPSR",stroke:"#a78bfa",strokeWidth:2,dot:!0})]})})]})]}),e$.latency.length>0&&(0,r.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,r.jsxs)("h2",{style:{fontSize:"1.25rem",marginBottom:"1rem"},children:["按 ","label"===ew?"标签":"模型"," 对比(平均值)"]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},children:[(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均时延 - ","label"===ew?"标签":"模型",(0,r.jsx)(v,{content:"平均延迟时间"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:e$.latency,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(m,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,r.jsx)(f,{contentStyle:{background:"#1e292b",borderColor:$.border}}),(0,r.jsx)(p,{type:"monotone",dataKey:"latency",stroke:"#38bdf8",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均 Token - ","label"===ew?"标签":"模型",(0,r.jsx)(v,{content:"平均 Token 使用量"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:e$.tokens,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(m,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11}),(0,r.jsx)(f,{contentStyle:{background:"#1e292b",borderColor:$.border}}),(0,r.jsx)(p,{type:"monotone",dataKey:"tokens",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["平均准确率 - ","label"===ew?"标签":"模型",(0,r.jsx)(v,{content:"平均准确率 (0-1)"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:e$.accuracy,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(m,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,r.jsx)(f,{contentStyle:{background:"#1e292b",borderColor:$.border}}),(0,r.jsx)(p,{type:"monotone",dataKey:"answer_score",stroke:"#4ade80",dot:!0,strokeWidth:2})]})})]}),(0,r.jsxs)("div",{className:"card",style:w,children:[(0,r.jsxs)("h3",{style:_,children:["技能召回率 - ","label"===ew?"标签":"模型",(0,r.jsx)(v,{content:"基于执行结果是否使用了预期技能计算出的值 (0-1),表示正确调用技能的比例"})]}),(0,r.jsx)(b,{width:"100%",height:200,children:(0,r.jsxs)(u,{data:e$.skillRecallRate,children:[(0,r.jsx)(g,{strokeDasharray:"3 3",stroke:"#334155"}),(0,r.jsx)(m,{dataKey:"name",tickFormatter:e=>String(e),stroke:"#64748b",fontSize:11}),(0,r.jsx)(x,{stroke:"#64748b",fontSize:11,domain:[0,1]}),(0,r.jsx)(f,{contentStyle:{background:"#1e292b",borderColor:$.border}}),(0,r.jsx)(p,{type:"monotone",dataKey:"skill_recall_rate",stroke:"#f472b6",dot:!0,strokeWidth:2})]})})]})]})]}),(0,r.jsxs)("div",{style:{marginTop:"2rem",background:$.cardBg,border:`1px solid ${$.cardBorder}`,borderRadius:"8px",overflow:"hidden"},children:[(0,r.jsxs)("div",{style:{marginBottom:"1rem",padding:"1rem 1rem 0"},children:[(0,r.jsx)("h2",{style:{fontSize:"1.25rem",marginBottom:"0.5rem",color:$.fg},children:"同问题执行记录"}),(0,r.jsx)("p",{style:{fontSize:"0.9rem",color:$.fgMuted},children:"点击记录可查看详细信息"})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr 1fr 1fr",padding:"1rem",borderBottom:`1px solid ${$.border}`,color:$.fgMuted,fontSize:"0.9rem",background:$.bgSecondary,fontWeight:500},children:[(0,r.jsx)("div",{children:"时间 / ID"}),(0,r.jsx)("div",{children:"标签"}),(0,r.jsx)("div",{children:"时延"}),(0,r.jsx)("div",{children:"消耗"}),(0,r.jsx)("div",{children:"技能召回率"}),(0,r.jsx)("div",{children:"窗口%"}),(0,r.jsx)("div",{children:"评分"})]}),eB.slice().reverse().map(e=>{let t=e.task_id||e.upload_id||`temp-${e.timestamp}`,o=t===eW;return(0,r.jsx)("div",{className:"record-row","data-timestamp":new Date(e.timestamp).getTime(),"data-label":e.label||"__no_label__",style:{borderBottom:`1px solid ${$.border}`,background:o?$.primarySubtle:$.bgSecondary,marginBottom:"1px",cursor:"pointer",transition:"background 0.2s"},onClick:()=>{if(!o){let r=new URLSearchParams;r.set("query",e.query),e.framework&&r.set("framework",e.framework),r.set("expandTaskId",t),window.open(`/details?${r.toString()}`,"_blank")}},onMouseOver:e=>{o||(e.currentTarget.style.background=B?"#3f3f46":"#e4e4e7")},onMouseOut:e=>{o||(e.currentTarget.style.background=B?"#18181b":"#f4f4f5")},children:(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr 1fr 1fr 1fr 1fr 1fr",padding:"1rem",alignItems:"center"},children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{fontWeight:"bold",fontSize:"0.95rem",display:"flex",alignItems:"center",gap:"8px"},children:[eD(e.timestamp),o&&(0,r.jsx)("span",{style:{background:$.primary,color:$.bg,padding:"2px 8px",borderRadius:"4px",fontSize:"0.7rem",fontWeight:"bold"},children:"当前"})]}),(0,r.jsx)("div",{style:{fontSize:"0.8rem",color:$.fgSecondary},children:t})]}),(0,r.jsx)("div",{style:{fontSize:"0.9rem",color:$.fgSecondary},children:e.label||"-"}),(0,r.jsx)("div",{children:e.latency?e.latency<1?(1e3*e.latency).toFixed(0)+"ms":e.latency.toFixed(2)+"s":"-"}),(0,r.jsx)("div",{children:e.tokens}),(0,r.jsx)("div",{style:{color:null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate?1===e.skill_recall_rate?$.success:e.skill_recall_rate>0?$.warning:$.error:$.fgMuted,fontWeight:"bold"},children:null!==e.skill_recall_rate&&void 0!==e.skill_recall_rate?(100*e.skill_recall_rate).toFixed(0)+"%":"--"}),(0,r.jsx)("div",{style:{color:null!=e.context_window_pct?e.context_window_pct>90?$.error:$.success:$.fgMuted},children:null!=e.context_window_pct?`${e.context_window_pct.toFixed(1)}%`:"-"}),(0,r.jsx)("div",{style:{color:null===e.answer_score?$.fgMuted:(e.answer_score||0)>.8?$.success:$.error},children:null===e.answer_score?"--":e.answer_score?.toFixed(2)})]})},e.upload_id||t)})]})]})}let w={background:"var(--card-bg)",border:"1px solid var(--border)",borderRadius:"8px",padding:"1rem",display:"flex",flexDirection:"column"},_={margin:"0 0 1rem 0",fontSize:"0.9rem",color:"var(--foreground-secondary)",fontWeight:"normal"},z={color:"var(--primary)",margin:0,fontSize:"0.95rem"},C={fontFamily:"monospace",fontSize:"0.9rem",lineHeight:"1.5",whiteSpace:"pre-wrap",color:"var(--foreground)",background:"var(--code-block-bg)",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--border)"};e.s(["default",()=>k],18819)}]);
|
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -99,6 +99,7 @@ model Config {
|
|
|
99
99
|
standardAnswer String
|
|
100
100
|
rootCauses String? // JSON array
|
|
101
101
|
keyActions String? // JSON array
|
|
102
|
+
extractedKeyActions String? // JSON array of ExtractedKeyAction (auto-extracted from Skill)
|
|
102
103
|
user String? // Added for user isolation
|
|
103
104
|
parseStatus String @default("completed") // parsing | completed | failed
|
|
104
105
|
|
|
@@ -131,8 +132,8 @@ model ParsedFlow {
|
|
|
131
132
|
version Int
|
|
132
133
|
user String?
|
|
133
134
|
|
|
134
|
-
flowJson String
|
|
135
|
-
mermaidCode String
|
|
135
|
+
flowJson String? // JSON: { steps, branches }
|
|
136
|
+
mermaidCode String? // Generated Mermaid code
|
|
136
137
|
|
|
137
138
|
parsedAt DateTime @default(now())
|
|
138
139
|
|
|
@@ -149,7 +150,7 @@ model ExecutionMatch {
|
|
|
149
150
|
mode String @default("compare") // "compare" or "dynamic"
|
|
150
151
|
matchJson String? // JSON: { matches, summary }
|
|
151
152
|
staticMermaid String? // Static flow Mermaid code
|
|
152
|
-
dynamicMermaid String
|
|
153
|
+
dynamicMermaid String? // Dynamic flow Mermaid code
|
|
153
154
|
analysisText String? // LLM analysis text
|
|
154
155
|
extractedSteps String? // JSON: extracted steps from interactions
|
|
155
156
|
|