| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090 |
- {
- "wiki_repo": {
- "id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "zsjz-ai",
- "progress_status": "completed",
- "wiki_present_status": "COMPLETED",
- "recovery_checkpoint": "wiki_generation_completed",
- "last_commit_id": "40b9d70f24ec9a84b3fb73eb5db0c27d5f7ea60d",
- "last_commit_update": "2026-10-28T07:55:29Z",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "extend_info": "{\"language\":\"zh\",\"active\":true,\"branch\":\"dev_4\"}"
- },
- "wiki_catalogs": [
- {
- "id": "156aa516-49d6-4670-b3cf-453dbd239227",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关管理接口",
- "description": "gateway-admin-api",
- "prompt": "创建清鉴 AI 调查工具网关管理接口的 API 文档,覆盖 AdminController 暴露的 REST 接口。说明服务注册、节点增删改查、状态查看等接口的 HTTP 方法、URL 模式、请求参数、响应体结构和错误码。说明这些接口由运维或部署脚本调用,用于维护 StickyRouteFilter 使用的 gateway_service 与 gateway_node 数据。补充认证方式(通常绕过 x-token 校验)、跨域策略、限流和访问控制建议。给出 curl 示例,并说明当节点 DOWN 时客户端返回 503 的行为如何排查。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminController.java"
- ]
- },
- {
- "id": "353e0550-ef39-4028-9f2f-c3733cbe4fcc",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Sa-Token 认证与会话管理",
- "description": "sa-token-auth",
- "prompt": "编写 Sa-Token 认证与会话管理的详细文档。说明后端如何初始化 Sa-Token、用户登录后 token 的生成与存储方式,以及前端如何通过 x-token 携带会话访问后端接口。解释登录前校验账号是否正在使用的逻辑,账号被顶下线/踢下线后如何释放其全部案件数据源,以及 Gateway 中如何解析并透传 token。包含典型登录请求、会话失效处理、重复登录冲突的处理流程,并提供常见问题排查方法:token 不一致、401/403、账号被顶下线等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-gateway/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-gateway/pom.xml"
- ]
- },
- {
- "id": "4096358f-33de-4fc0-96f5-52e05a503884",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "代码风格与规范",
- "description": "coding-standards",
- "prompt": "创建清鉴 AI 调查工具的代码风格与规范文档。说明 Java、TypeScript/Vue、SQL、Shell/Batch 的命名约定、目录组织、注释和格式化规则。重点解释前端 Prettier、ESLint、Stylelint 配置及其忽略规则,以及 Electron 主进程、preload、渲染进程的代码边界。给出后端 Spring Boot 模块划分、controller/service/mapper/entity 的组织方式,MyBatis-Plus 实体与 SQL 脚本编写约定。提供具体示例:一个新增后端模块的包结构、一个 Vue 组件的写法、一条建表 SQL 的格式。补充常见违规问题和自动修复命令。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/.prettierrc.mjs,ai-electron/frontend/eslint.config.mjs,ai-electron/frontend/stylelint.config.mjs,ai-electron/frontend/.editorconfig,ai-electron/frontend/.prettierignore,ai-electron/frontend/.stylelintignore",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-electron/frontend/.prettierrc.mjs",
- "ai-electron/frontend/eslint.config.mjs",
- "ai-electron/frontend/stylelint.config.mjs",
- "ai-electron/frontend/.editorconfig",
- "ai-electron/frontend/.prettierignore",
- "ai-electron/frontend/.stylelintignore"
- ]
- },
- {
- "id": "47bd7bc4-2fae-423e-971a-778154ccb8e0",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "项目概览",
- "description": "project-overview",
- "prompt": "为清鉴 AI 调查工具创建项目概览文档。说明产品的核心目标、适用场景(公安/审计/风控调查)、系统边界与部署形态(Electron 桌面客户端 + Spring Cloud Gateway + Spring Boot 多模块后端)。解释整体架构:前端 Vue 3 + Electron,网关负责粘性路由,后端按业务域拆分为 agent、aiclean、knowledge、graph、person、call、trans、track、govern、search、dm、otg、external 等模块,数据层使用 PostgreSQL/pgvector、Redis、DuckDB。给出从启动客户端到发起 Agent 对话、导入清洗数据、查看图谱与业务查询的高层流程图。面向初学者解释关键概念(Agent、RAG、pgvector、粘性路由、许可证),同时为有经验的开发者提供模块关系图和扩展点概览。使用代码库中的术语,避免虚构未实现功能。",
- "progress_status": "completed",
- "dependent_files": "readme.md,pom.xml,ai-electron/package.json,ai-server/pom.xml,ai-gateway/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "kk_dependent_files": [
- "readme.md",
- "pom.xml",
- "ai-electron/package.json",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml"
- ]
- },
- {
- "id": "4980a173-ddc7-4a67-841d-a8708fe3d5dc",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "知识库管理",
- "description": "knowledge-base-management",
- "prompt": "创建知识库管理功能的详细文档。说明知识库的内置库与自建库模型、权限边界(管理员 vs 普通用户)、创建/编辑/删除流程,以及知识库与 Agent/RAG Schema Catalog、清洗模板之间的关联关系。重点解释后端如何按登录用户过滤知识库列表、对 is_builtin 字段做双重拒绝保护、级联清理文档与向量索引并解绑引用该知识库的方案。给出创建知识库、列出我的知识库、绑定/解绑知识库的 API 示例和前端交互流程。补充知识库命名规范、容量限制、并发操作安全、事务一致性和常见问题排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/service/KnowledgeBaseService.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeBase.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/mapper/KnowledgeBaseMapper.java,ai-electron/frontend/src/ai/views/aiKnowledge/index.vue,ai-electron/frontend/src/ai/components/KnowledgeDocModal.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/service/KnowledgeBaseService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeBase.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/mapper/KnowledgeBaseMapper.java",
- "ai-electron/frontend/src/ai/views/aiKnowledge/index.vue",
- "ai-electron/frontend/src/ai/components/KnowledgeDocModal.ts"
- ]
- },
- {
- "id": "51426ffe-15ab-4186-b1a9-75d4fdbf3c6f",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "人员模块 person",
- "description": "business-person",
- "prompt": "为人员模块 person 创建详细文档。说明该模块在调查场景中的职责:维护人员基本信息、分组、号码库、亲密度、常住人口等实体,并解释其如何与通话 call、交易 trans、轨迹 track、治理 govern 等模块关联。梳理核心数据模型、字段含义、主外键关系和索引策略。描述 MyBatis-Plus 的 mapper/service/controller 组织方式,以及基于 CaseDataSource/CaseInfo 的案件隔离机制。给出典型查询示例:按姓名/号码查人员、按分组筛选、通过亲密度分析社交关系。补充分页、模糊搜索、批量导入、性能优化建议和常见问题排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/table_data_1.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/table_data_1.sql"
- ]
- },
- {
- "id": "7c424667-c8c7-4f7a-bbd7-af27a21ef237",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Agent 对话总览与 SSE 流式交互",
- "description": "agent-overview",
- "prompt": "为 Agent 对话总览与 SSE 流式交互创建详细文档。说明前端如何发起对话请求、后端 AgentChatController 与 AgentChatService 的职责分工,以及 SSE 流式返回消息的完整链路:从前端 chatApi.ts 发起连接,到 sse.ts 处理 EventSource 或 fetch stream,再到 chatStream store 聚合增量消息并渲染 UI。解释 AgentChatSession、AgentMessage、Insight 会话在对话生命周期中的关系。给出典型调用示例:选择模型后发送文本消息、查看工具调用日志、中断或重连 SSE。补充常见问题:SSE 断连与心跳、token 过期、服务端 503、大响应导致内存增长等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentChatController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentChatService.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentChatServiceImpl.java,ai-electron/frontend/src/ai/api/chatApi.ts,ai-electron/frontend/src/ai/api/sse.ts,ai-electron/frontend/src/ai/store/chatStream.ts,ai-electron/frontend/src/ai/composables/useAiChatPage.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentChatController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentChatService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentChatServiceImpl.java",
- "ai-electron/frontend/src/ai/api/chatApi.ts",
- "ai-electron/frontend/src/ai/api/sse.ts",
- "ai-electron/frontend/src/ai/store/chatStream.ts",
- "ai-electron/frontend/src/ai/composables/useAiChatPage.ts"
- ]
- },
- {
- "id": "806c0f96-05b8-473c-968e-d617c7a8bea4",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "系统架构总览",
- "description": "system-architecture-overview",
- "prompt": "创建清鉴 AI 调查工具的系统架构总览文档。用一张高层图展示 Electron 桌面客户端、Preload Bridge、Spring Cloud Gateway、ai-server 业务模块、PostgreSQL/pgvector、Redis、DuckDB、文件系统之间的边界和交互关系。解释产品目标(公安/审计/风控调查)、部署形态(Windows/macOS/Linux 桌面应用 + Java 服务)以及各层职责:客户端负责 UI、会话、地图与授权;网关负责粘性路由和用户绑定;服务端按 plat/agent/aiclean/knowledge/graph/person/call/trans/track/govern/dm/otg/external 等模块划分能力。说明本章节为后续桌面客户端、网关、后端服务、数据流等子文档的入口,不深入实现细节。",
- "progress_status": "completed",
- "dependent_files": "readme.md,pom.xml,ai-electron/package.json,ai-gateway/pom.xml,ai-server/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "layer_level": 1,
- "kk_dependent_files": [
- "readme.md",
- "pom.xml",
- "ai-electron/package.json",
- "ai-gateway/pom.xml",
- "ai-server/pom.xml"
- ]
- },
- {
- "id": "ab6a7934-379d-4064-ab15-60187c9fb4ab",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Spring Boot 应用入口与启动流程",
- "description": "spring-boot-application",
- "prompt": "编写 ai-server Spring Boot 应用入口与启动流程文档。说明应用主类、包扫描范围、模块依赖加载方式,以及 Spring Boot 3.5 + Java 25 的运行环境要求。描述启动阶段的关键横切能力:多数据源初始化、Redis 连接、Agent 工作区清理、索引或缓存预热等 ApplicationRunner/ApplicationListener 行为。解释配置文件组织方式(application.yml 与业务配置分离),以及如何通过环境变量覆盖后端配置。补充常见启动问题排查,例如端口冲突、数据库不可达、Redis 连接失败、向量库未启用等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/,ai-server/src/main/resources/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/",
- "ai-server/src/main/resources/"
- ]
- },
- {
- "id": "bbe3d5c7-9708-45a5-9b0e-155f8a79506b",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "StickyRouteFilter 粘性路由核心逻辑",
- "description": "sticky-route-filter",
- "prompt": "创建 StickyRouteFilter 的详细实现文档。重点解释其作为 Spring Cloud Gateway GlobalFilter(order=10001)的职责:在 RouteToRequestUrlFilter 之后重写 GATEWAY_REQUEST_URL_ATTR,将请求转发到已绑定的 ai-server 节点,并在响应头追加 X-Gateway-Node。详细说明登录请求与普通请求的不同分支:登录时按 username 查找已绑定节点或轮询候选节点;普通请求从 x-token 解析 userId,再查用户绑定,未绑定时用 service.defaultNodeId 兜底绑定,匿名请求走健康节点轮询。说明 buildTargetUri 为什么使用 baseUrl + rawPath + rawQuery 字符串拼接而不是多参 URI 构造器。补充 NodeSelector、TokenResolver、UserRouteService 的协作关系,以及当绑定节点停用/DOWN 时返回 503 且不自动切换的设计原因。包含常见错误场景和调试方法。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/route/GatewayAttributes.java,ai-gateway/src/main/java/com/zsjz/gateway/support/StickyUnavailableException.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/route/GatewayAttributes.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/support/StickyUnavailableException.java"
- ]
- },
- {
- "id": "bd014943-9fdc-41c3-aeda-440568e4a340",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "测试总览与分层策略",
- "description": "testing-overview",
- "prompt": "编写测试总览文档,说明清鉴 AI 调查工具的测试分层策略和质量保证体系。重点解释 A/B/C/D/E 五类测试:A 类离线匹配规则(JUnit、确定性)、B 类绑定与计划、C 类 E2E 真链路(HTTP API + dev 库核验)、D 类异常容错、E 类全量模板覆盖。说明 Electron 主进程 Vitest 配置如何只跑 electron/**/*.test.ts,以及前端 ESLint 和 Stylelint 在代码质量检查中的作用。给出新增测试用例的推荐位置、命名约定、执行命令和结果记录方式,并补充覆盖率、持续集成和发布前检查建议。",
- "progress_status": "completed",
- "dependent_files": "docs/testing/ai-template-match-test-cases.md,ai-electron/vitest.config.mts,ai-electron/frontend/eslint.config.mjs,ai-electron/frontend/stylelint.config.mjs",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "layer_level": 1,
- "kk_dependent_files": [
- "docs/testing/ai-template-match-test-cases.md",
- "ai-electron/vitest.config.mts",
- "ai-electron/frontend/eslint.config.mjs",
- "ai-electron/frontend/stylelint.config.mjs"
- ]
- },
- {
- "id": "c9a620a7-1b3c-4d58-85b0-2a21724b19d2",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "环境准备与初始化",
- "description": "deployment-environment-setup",
- "prompt": "创建部署前的环境准备与初始化指南。说明 PostgreSQL + pgvector、Redis、Elasticsearch、Neo4j、DuckDB 等外部依赖的安装要求、端口和版本兼容性,并给出最小可用环境的安装命令示例。详细说明 deploy/env.sh 中关键变量的含义与生产修改项:数据库连接、Redis、本地文件存储路径 STORAGE_LOCAL_ROOT_PATH/STORAGE_LOCAL_BASE_URL、Agent RAG、DuckDB 资源预算、向量模型路径 ZSJZ_EMBEDDING_MODEL_PATH、AI 清洗向量索引、聊天附件解析、登录安全窗口等。补充 SQL 初始化步骤:gateway_service/gateway_node 表、业务主库表结构、pgvector 扩展启用。说明 Spring Profile 切换方式(SPRING_PROFILES_ACTIVE)以及 dev/pro 配置差异。包含常见环境问题排查:端口冲突、pgvector 未启用、Redis 不可用导致登录异常、ES/Neo4j 可选依赖缺失时的降级行为。",
- "progress_status": "completed",
- "dependent_files": "deploy/env.sh,sql/gateway.sql,sql/create_table_2.sql,ai-server/pom.xml,ai-server/src/main/resources/application-dev.yaml,ai-server/src/main/resources/application-pro.yaml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "kk_dependent_files": [
- "deploy/env.sh",
- "sql/gateway.sql",
- "sql/create_table_2.sql",
- "ai-server/pom.xml",
- "ai-server/src/main/resources/application-dev.yaml",
- "ai-server/src/main/resources/application-pro.yaml"
- ]
- },
- {
- "id": "dfcc2c4e-4392-42f2-9bab-4f652761f880",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关路由表结构",
- "description": "gateway-schema",
- "prompt": "创建网关数据库设计文档,重点说明 gateway_service、gateway_node、gateway_user_route(或实际使用的服务注册与用户绑定表)的表结构。详细描述每个字段的数据类型、主键、外键、索引和业务含义,包括服务标识、节点地址、健康状态、用户名与 ai-server 节点的绑定关系。结合 StickyRouteFilter 和 LoginResponseFilter 的逻辑,解释这些表如何支撑粘性路由、登录绑定、503 异常处理和服务/节点管理接口。补充建表 SQL 示例、关键字段约束、查询性能建议,以及多节点部署下的数据一致性注意事项。",
- "progress_status": "completed",
- "dependent_files": "sql/gateway.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "kk_dependent_files": [
- "sql/gateway.sql"
- ]
- },
- {
- "id": "e6253e7f-3ead-4cd2-84c5-bd9c93288a0e",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Electron 主进程与生命周期",
- "description": "electron-main-process",
- "prompt": "为 Electron 主进程与生命周期编写详细文档。说明 ai-electron/electron/main.ts 如何通过 ee-core.ElectronEgg 创建应用、注册 ready / electron-app-ready / window-ready / before-close 等生命周期钩子,并调用 app.run() 启动。解释 preload/lifecycle.ts 中各生命周期钩子的执行顺序和职责边界,以及 preload/index.ts 的 preload() 函数如何在预加载阶段创建托盘服务(trayService)和安全服务(securityService)。说明主进程与渲染进程的职责划分:主进程负责窗口、系统能力、安全初始化;渲染进程只负责 UI 和业务逻辑。给出新增生命周期钩子、自定义 preload 初始化的步骤示例,并包含常见问题排查:主进程未启动、生命周期钩子未执行、preload 加载失败、托盘或安全服务异常等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/main.ts,ai-electron/electron/preload/lifecycle.ts,ai-electron/electron/preload/index.ts,ai-electron/package.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "kk_dependent_files": [
- "ai-electron/electron/main.ts",
- "ai-electron/electron/preload/lifecycle.ts",
- "ai-electron/electron/preload/index.ts",
- "ai-electron/package.json"
- ]
- },
- {
- "id": "f5ed2513-391a-4b75-8007-bb3d5216e4df",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "清洗模板与字段映射",
- "description": "ai-clean-templates",
- "prompt": "编写 AI 数据清洗中清洗模板与字段映射的详细文档。说明 AiCleanTemplate、AiCleanField、RuleBind、AiRulePlan 等实体的字段定义、主外键关系和业务含义,解释清洗模板如何描述目标表结构、字段短名、规则计划以及字段到目标列的映射关系。详细说明模板加载流程:从数据库读取模板、构建 TemplateCandidate、由 AiTemplateMatcher 结合表头指纹和 HeaderNormalizer 进行匹配。给出创建模板、绑定规则、定义字段短名和字段映射的完整示例,包括 CSV 表头、Excel 列名与目标字段的对应关系。说明字段短名(field short names)在智能匹配中的作用,以及与 Synonym 的区别。补充常见问题:模板未命中、字段映射错位、短名冲突、规则计划类型不匹配等,并给出排查建议。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean.sql,sql/ai_clean_field_short_names.sql,ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanTemplate.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanField.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/RuleBind.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/rule/AiRulePlan.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/AiTemplateMatcher.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/TemplateCandidateLoader.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "layer_level": 1,
- "kk_dependent_files": [
- "sql/ai_clean.sql",
- "sql/ai_clean_field_short_names.sql",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanTemplate.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanField.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/RuleBind.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/rule/AiRulePlan.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/AiTemplateMatcher.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/TemplateCandidateLoader.java"
- ]
- },
- {
- "id": "114b42fc-097d-4ff9-b78a-b1f128492359",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "快速开始",
- "description": "getting-started",
- "prompt": "编写清鉴 AI 调查工具的快速开始指南,覆盖开发机环境准备、依赖安装、服务启动顺序和首次运行步骤。说明需要 Java 25、Maven、Node.js、pnpm/npm、PostgreSQL、pgvector、Redis、DuckDB 等前置条件;描述如何初始化 sql/*.sql 脚本,启动 ai-gateway 和 ai-server,再通过 pnpm dev 或构建命令启动 Electron 客户端。说明首次运行时输入服务端地址、登录绑定、激活/授权单元和水印的基本流程。包含常见启动失败排查项,如端口冲突、数据库连接、向量扩展未启用、regInfo.exe 权限问题等。内容应简洁明了,适合第一次接触项目的开发者在 10–20 分钟内跑通本地环境。",
- "progress_status": "completed",
- "dependent_files": "readme.md,deploy/env.sh,cmd/uninstall.bat,cmd/uninstall.sh,ai-electron/package.json,ai-electron/frontend/package.json,ai-server/pom.xml,ai-gateway/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 1,
- "kk_dependent_files": [
- "readme.md",
- "deploy/env.sh",
- "cmd/uninstall.bat",
- "cmd/uninstall.sh",
- "ai-electron/package.json",
- "ai-electron/frontend/package.json",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml"
- ]
- },
- {
- "id": "1acb4aac-20b1-4e60-9d3a-4d49412f11ef",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "文档上传、解析与索引生命周期",
- "description": "knowledge-doc-lifecycle",
- "prompt": "创建文档上传、解析、向量化、存储和重试生命周期的详细文档。说明 KnowledgeDocService.upload 如何处理 multipart 文件、调用 KnowledgeDocParser 提取文本、通过事件或异步任务触发 KnowledgeDocIndexer 进行向量化并写入 pgvector;解释 reindex 重试机制、仅上传者权限校验、下载时写 KnowledgeDocDownloadLog 的流程。文档应包含上传、删除、重试、下载的 REST API 接口定义,包括请求参数、响应结构、错误码和 x-token 鉴权要求。补充支持的文档格式、文件大小限制、大文档分块策略、索引失败状态、去重逻辑、文件存储路径、性能优化建议和常见异常处理方案。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/service/KnowledgeDocService.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/KnowledgeDocParser.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/KnowledgeDocIndexer.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/event/KnowledgeDocIndexEvent.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDoc.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDocDownloadLog.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/vo/KnowledgeDocVO.java,ai-electron/frontend/src/ai/components/KnowledgeDocModal.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/service/KnowledgeDocService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/KnowledgeDocParser.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/KnowledgeDocIndexer.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/event/KnowledgeDocIndexEvent.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDoc.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDocDownloadLog.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/vo/KnowledgeDocVO.java",
- "ai-electron/frontend/src/ai/components/KnowledgeDocModal.ts"
- ]
- },
- {
- "id": "21342d52-98e3-4654-9724-072359e1c6f2",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "后端服务部署",
- "description": "deployment-backend-services",
- "prompt": "创建 ai-gateway 与 ai-server 的生产部署指南。说明 Maven 父工程编译顺序、打包产物和启动命令;分别描述 GatewayApplication 网关服务和 ai-server 业务服务的启动流程、依赖加载顺序、健康检查行为和日志位置。解释环境变量导入方式:`set -a; source deploy/env.sh; set +a` 与 systemd EnvironmentFile 两种用法,并强调数据库口令权限控制。说明 ai-gateway 的粘性路由职责:服务注册、节点选择、CORS、登录绑定转发,以及 ai-server 的模块化启动(plat、agent、aiclean、knowledge、graph、person、call、trans、track、govern、search、dm、otg、external)。给出典型部署拓扑:单节点开发环境、多节点 ai-server + 单网关、多网关高可用场景。补充性能参数调优建议:Spring 调度池、HTTP codecs、multipart 大小、DuckDB 内存比例、线程数、RAG top_k 等,并结合 deploy/env.sh 给出生产推荐值。包含故障排查:Gateway 503、跨域失败、登录态丢失、Redis 断开、ES/Neo4j 连接超时、文件上传超限等。",
- "progress_status": "completed",
- "dependent_files": "deploy/env.sh,ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java,ai-gateway/pom.xml,ai-server/pom.xml,pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "deploy/env.sh",
- "ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java",
- "ai-gateway/pom.xml",
- "ai-server/pom.xml",
- "pom.xml"
- ]
- },
- {
- "id": "22ed1e10-d4ca-42c7-801c-8bda48b58052",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "登录请求与响应过滤链",
- "description": "login-binding-filters",
- "prompt": "创建登录相关过滤链的详细文档,说明 LoginRequestFilter 和 LoginResponseFilter 如何配合 StickyRouteFilter 完成用户与服务节点的绑定。解释 LoginRequestFilter 如何识别登录请求并将 username 写入 GatewayAttributes.LOGIN_USERNAME 与 LOGIN_REQUEST,使 StickyRouteFilter 能进入 decideForLogin 分支。说明 LoginResponseFilter 如何在登录成功后根据 LOGIN_CHOSEN_NODE_ID 把用户绑定到具体 ai-server 节点,并持久化到数据库。对比登录前后 token 解析结果的变化,解释“登录时不立即写库、由响应过滤器落库”的原因。给出典型登录流程时序图,包括客户端、Gateway、ai-server、PostgreSQL 之间的交互。补充用户名冲突、重复登录、强制踢下线等边界情况的处理。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/route/GatewayAttributes.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/route/GatewayAttributes.java"
- ]
- },
- {
- "id": "30a9faef-23f4-406d-8889-3da2c96ba102",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "LLM Provider 管理与模型工厂",
- "description": "agent-model-provider",
- "prompt": "为 LLM Provider 管理与模型工厂创建详细文档。说明 pom.xml 中 agentscope-harness、agentscope-extensions-model-dashscope、ollama、openai、mem0、redis 等依赖的作用;解释 AgentEntity、AgentModelService、AgentModelFactory 如何注册和管理 DashScope/Ollama/OpenAI 三种 Provider。描述模型配置项(如 base_url、api_key、model_name)、模型枚举、可用性与健康检查策略。给出示例:新增一个 LLM Provider、切换默认模型、通过 AgentModelController 查询模型列表和状态。补充问题排查:DashScope Key 无效、Ollama 服务不可达、OpenAI 代理超时、模型枚举不生效等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentEntity.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentModelFactory.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentModelService.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentModelServiceImpl.java,ai-server/src/main/java/com/zsjz/ai/module/agent/converter/AgentModelConverter.java,ai-server/src/main/java/com/zsjz/ai/module/agent/converter/AgentModelProviderConverter.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentModelController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentEntity.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentModelFactory.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentModelService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentModelServiceImpl.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/converter/AgentModelConverter.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/converter/AgentModelProviderConverter.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentModelController.java"
- ]
- },
- {
- "id": "41e369d2-9662-4e1b-b62f-21de646b34c9",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Gateway Token 一致性与登录绑定",
- "description": "gateway-token-consistency",
- "prompt": "编写 Gateway 层 token 一致性、登录绑定与粘性路由交互的详细文档。说明 LoginRequestFilter 如何从请求中提取 username/token,StickyRouteFilter 如何根据 userId 选择 ai-server 节点并重写目标 URL,LoginResponseFilter 如何在登录成功后将用户名与服务节点绑定写入数据库。解释为什么 token 必须在客户端、Gateway、ai-server 之间保持一致,以及节点 DOWN 时返回 503 不自动切换的原因。给出登录流程时序图、常见失败场景(未绑定节点、token 过期、节点不可用)及排查步骤。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java"
- ]
- },
- {
- "id": "48ee09b6-d73e-4c97-ab30-872d6271b0d5",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "桌面客户端架构",
- "description": "desktop-client-architecture",
- "prompt": "创建 Electron 桌面客户端架构文档。重点解释主进程与渲染进程的职责分离:main.ts 基于 ee-core.ElectronEgg 注册生命周期钩子和 preload,preload 桥接暴露 Node/Electron API 给渲染进程,App.vue 初始化主题、国际化、水印和授权单元。说明前端工程结构(Vite + Vue 3 + Ant Design Vue + TypeScript),如何动态绑定 ai-server 地址、加载离线地图 china.pmtiles、调用 SSE Agent 对话、管理本地缓存与服务端地址。补充 IPC 安全模型、构建打包脚本、自动更新配置和常见问题排查。提供从启动到登录、发起 Agent 请求的最小代码路径示例。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/main.ts,ai-electron/electron/preload/index.ts,ai-electron/electron/preload/bridge.ts,ai-electron/electron/preload/lifecycle.ts,ai-electron/frontend/src/App.vue,ai-electron/frontend/src/env.d.ts,ai-electron/frontend/src/main.ts,ai-electron/package.json,ai-electron/frontend/package.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-electron/electron/main.ts",
- "ai-electron/electron/preload/index.ts",
- "ai-electron/electron/preload/bridge.ts",
- "ai-electron/electron/preload/lifecycle.ts",
- "ai-electron/frontend/src/App.vue",
- "ai-electron/frontend/src/env.d.ts",
- "ai-electron/frontend/src/main.ts",
- "ai-electron/package.json",
- "ai-electron/frontend/package.json"
- ]
- },
- {
- "id": "4b666607-23fd-418b-926a-f561218179c6",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "构建命令与脚本",
- "description": "build-and-scripts",
- "prompt": "创建构建命令与脚本参考文档。说明 Maven 父工程与 ai-server、ai-gateway 子模块的构建命令;pnpm dev、build、start 等前端开发命令;Electron 打包命令和 electron-builder 输出产物;安装、启动、卸载脚本的作用和使用方式。解释 deploy/env.sh 环境变量脚本如何覆盖后端配置,以及 Linux/macOS 下执行权限要求。给出典型工作流:拉取代码、安装依赖、启动 Gateway 和 ai-server、启动 Electron 客户端、打包 Windows/macOS/Linux 安装包。列出常见错误如端口冲突、依赖缺失、打包失败和解决方法。",
- "progress_status": "completed",
- "dependent_files": "pom.xml,ai-server/pom.xml,ai-gateway/pom.xml,ai-electron/package.json,ai-electron/frontend/package.json,ai-electron/frontend/bin/install.sh,ai-electron/frontend/bin/install.bat,ai-electron/frontend/bin/build.sh,ai-electron/frontend/bin/build.bat,ai-electron/frontend/bin/startup.sh,ai-electron/frontend/bin/startup.bat,cmd/uninstall.bat,cmd/uninstall.sh,deploy/env.sh",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "pom.xml",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml",
- "ai-electron/package.json",
- "ai-electron/frontend/package.json",
- "ai-electron/frontend/bin/install.sh",
- "ai-electron/frontend/bin/install.bat",
- "ai-electron/frontend/bin/build.sh",
- "ai-electron/frontend/bin/build.bat",
- "ai-electron/frontend/bin/startup.sh",
- "ai-electron/frontend/bin/startup.bat",
- "cmd/uninstall.bat",
- "cmd/uninstall.sh",
- "deploy/env.sh"
- ]
- },
- {
- "id": "5b47e58f-5090-4cfd-8288-e866003e9231",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "LLM 模板匹配测试与夹具",
- "description": "llm-template-matching-tests",
- "prompt": "编写 LLM 模板匹配测试的详细文档。基于 docs/testing/ai-template-match-test-cases.md,解释被测对象“AI 清洗模板匹配链路(三腿匹配 → 绑定 → 计划 → 落库)+ 既有匹配器对照”,并说明测试环境要求(PG/Redis、本地 Ollama qwen、bge-m3 嵌入、DuckDB 案件库、仓库根为工作目录)。逐项介绍锚定模板(车辆登记、银行交易流水、通信记录)和 A/E 类场景(指纹、归一化、同义词、模糊词、打分、必填覆盖、形状闸门、列序、无关表头、全量 table_info 362 个模板)。详细说明 fixtures/ai-llm-match-20261026 下 run_tests.py、generate.py、manifest.json 的职责:如何用 manifest 描述测试清单、用 generate.py 生成 xlsx CSV 夹具、用 run_tests.py 调用 HTTP API 上传并比对 matched_by/exit/llm 等结果。给出运行命令、失败排查步骤、NEED_REVIEW 行为解读,以及 F1–F6 发现项对应的修复或观察建议。",
- "progress_status": "completed",
- "dependent_files": "docs/testing/ai-template-match-test-cases.md,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/run_tests.py,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/generate.py,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/manifest.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "docs/testing/ai-template-match-test-cases.md",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/run_tests.py",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/generate.py",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/manifest.json"
- ]
- },
- {
- "id": "5c689d53-7384-4633-95ad-b40096e9b00b",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "平台基础与用户授权表",
- "description": "plat-user-schema",
- "prompt": "创建平台基础与用户授权相关表的数据库设计文档。说明 plat 模块中的系统配置、表信息、授权单元、会话、缓存、日历等表,以及 user 表的用户信息、账号状态、设备或机器码相关信息。详细列出主键、外键、唯一约束、索引和关键字段语义;解释 Sa-Token 会话、客户端 token、许可证校验、水印与授权单元之间的关系。给出典型查询场景,例如按用户查会话、查绑定 ai-server 节点、查授权有效期。补充数据安全要求、敏感字段保护、备份恢复建议和常见运维问题排查方法。",
- "progress_status": "completed",
- "dependent_files": "sql/plat.sql,sql/user.sql,sql/create_table_2.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "sql/plat.sql",
- "sql/user.sql",
- "sql/create_table_2.sql"
- ]
- },
- {
- "id": "9ca9022c-45b9-4e6b-89d3-34eac1d4ee30",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "同义词管理",
- "description": "ai-clean-synonyms",
- "prompt": "编写 AI 数据清洗中同义词管理功能的详细文档。说明 AiCleanSynonym 实体结构、字段含义、数据来源及初始化脚本 ai_clean_synonym_init.sql 的作用。解释同义词与清洗模板字段短名的区别:同义词用于增强表头识别和语义匹配,字段短名用于模板侧的标准命名。详细描述增删改查接口(AiCleanSynonymController)和服务层逻辑(AiCleanSynonymService),包括同义词分组、别名、标准字段之间的关系。给出添加同义词、批量导入、查询生效范围的实际示例。说明同义词如何被 AiTemplateMatcher 或表头匹配链路使用,以及在多用户/多案件场景下的隔离策略。补充常见问题:新增同义词未生效、别名冲突、初始化脚本重复执行、同义词未参与匹配等。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean_synonym_init.sql,ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanSynonym.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanSynonymController.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiCleanSynonymService.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/mapper/AiCleanSynonymMapper.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "sql/ai_clean_synonym_init.sql",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanSynonym.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanSynonymController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiCleanSynonymService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/mapper/AiCleanSynonymMapper.java"
- ]
- },
- {
- "id": "b474a118-2219-4f66-863d-a7f18d59e5df",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "模块化架构与统一分层",
- "description": "module-architecture",
- "prompt": "编写 ai-server 模块化架构文档,聚焦 module/* 下的业务域划分和统一分层模式。说明每个模块通常包含 controller、service、mapper/entity 的职责边界,以及跨模块调用应通过 Service 接口而非直接依赖实现。解释模块间耦合原则:避免循环依赖、通过领域事件或共享 DTO 传递数据、网关只感知 ai-server 整体而不感知内部模块。给出新增业务模块的标准步骤:创建 module、定义 entity、Mapper、Service、Controller,注册路由,并维护对应 SQL 脚本。补充代码风格、命名约定和可测试性建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "c52c7b80-86ea-4f92-8179-6a86a77494a3",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "认证与系统基础接口",
- "description": "auth-and-system-api",
- "prompt": "创建认证与系统基础接口的 API 文档,覆盖 /auth、/user、/sys、/case、/tpl、/tower 等 plat 模块控制器。重点说明登录流程:前端如何调用认证接口获取 token,x-token 如何随后续请求携带,Sa-Token 如何与 Gateway 粘性路由配合完成用户绑定。记录用户信息、授权单元、系统信息、案件数据源、表模板、塔台相关接口的 HTTP 方法、URL、请求参数、响应字段、分页格式和错误码。说明登录失效、账号被顶下线、强制登录后清理缓存的行为对前端的影响。提供 curl 和前端调用示例,并给出 401、403、503 等错误的排查步骤。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/AuthController.java,ai-server/src/main/java/com/zsjz/ai/module/plat/controller/UserController.java,ai-server/src/main/java/com/zsjz/ai/module/plat/controller/SystemController.java,ai-server/src/main/java/com/zsjz/ai/module/plat/controller/CaseInfoController.java,ai-server/src/main/java/com/zsjz/ai/module/plat/controller/TableInfoController.java,ai-server/src/main/java/com/zsjz/ai/module/plat/controller/TowerController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/AuthController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/UserController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/SystemController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/CaseInfoController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/TableInfoController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/plat/controller/TowerController.java"
- ]
- },
- {
- "id": "c5c9d701-000d-421e-80cd-170bb6739623",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "通话模块 call",
- "description": "business-call",
- "prompt": "为通话模块 call 创建详细文档。说明该模块负责通话记录、夜间通话、连续通话、敏感通话、开放信息等调查相关实体的存储与查询。解释通话记录与人员 person 的关系(主叫/被叫),以及与交易、轨迹、治理树之间的交叉分析价值。梳理通话实体字段、时间范围过滤、号码匹配、去重规则、分页和聚合统计方式。给出常用查询示例:查找某人的所有通话、夜间通话分析、连续通话识别、敏感通话预警、通话双方关系图。说明数据量较大时的索引优化、分区策略和查询性能注意事项。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/testSql/通话相互.sql,sql/testSql/全部交易关系.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/testSql/通话相互.sql",
- "sql/testSql/全部交易关系.sql"
- ]
- },
- {
- "id": "f77992a3-a80c-4ebc-9f77-8faf081f3420",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Preload 桥接与安全模型",
- "description": "electron-preload-bridge",
- "prompt": "为 Electron preload 桥接与安全模型编写详细文档。解释启用 contextIsolation 后渲染进程无法直接使用 Electron API,因此通过 bridge.ts 中的 contextBridge.exposeInMainWorld('electron', {...}) 暴露受控接口,当前仅暴露 ipcRenderer。说明 preload/index.ts 的 preload() 函数在渲染进程上下文之前运行,用于创建 trayService 和 securityService,避免将 Node/Electron 能力直接泄露给渲染进程。文档应覆盖 IPC 通道设计原则、最小权限暴露策略、跨进程通信的安全边界,以及为什么不应把 BrowserWindow、fs、child_process 等危险 API 暴露到 window.electron。给出新增安全 IPC 接口的示例,包括主进程 service、preload 桥注册、前端调用方式。包含常见问题:contextBridge 报错、window.electron 为 undefined、IPC 事件无响应、权限不足等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/preload/index.ts,ai-electron/electron/preload/bridge.ts,ai-electron/electron/service/os/tray.ts,ai-electron/electron/service/os/security.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 1,
- "kk_dependent_files": [
- "ai-electron/electron/preload/index.ts",
- "ai-electron/electron/preload/bridge.ts",
- "ai-electron/electron/service/os/tray.ts",
- "ai-electron/electron/service/os/security.ts"
- ]
- },
- {
- "id": "02425a89-4f3c-4fcb-8125-016b7cc6e537",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "RAG Schema、向量检索与知识库集成",
- "description": "agent-rag-schema-vector",
- "prompt": "为 RAG Schema、向量检索与知识库集成创建详细文档。结合 agentscope-extensions-rag-simple、pgvector 和 Spring AI Tika,说明 Schema Catalog 如何描述业务表结构,RAG 如何在 Agent 对话时根据意图对问题进行向量检索,并将上下文注入提示词。解释 RagIndexStatus 表示的索引状态,以及知识库下载日志、嵌入调试接口与 RAG 的关系。给出示例:开启 RAG 后发送调查类问题、查看命中片段、重新构建向量索引。补充常见问题:pgvector 未初始化、向量索引为空、相似检索召回率低、Schema 字段名不一致等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-electron/frontend/src/ai/,ai-electron/frontend/src/graph/insight/api.ts,docs/testing/ai-template-match-test-cases.md",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-electron/frontend/src/ai/",
- "ai-electron/frontend/src/graph/insight/api.ts",
- "docs/testing/ai-template-match-test-cases.md"
- ]
- },
- {
- "id": "034e56aa-57ff-407a-ae4c-7eb6f78922e0",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Agent 对话与 RAG 接口",
- "description": "agent-chat-and-rag-api",
- "prompt": "创建 Agent 对话与 RAG 接口的 API 文档,覆盖 /chat、/models、/agents、/tool-packs、/capability、/agent/artifact、/py/files 以及 Insight 相关控制器。重点说明 Agent 对话 SSE 接口:连接建立方式、请求头中的 x-token、消息体格式、SSE 事件类型、增量内容字段、结束事件、心跳保活机制和中断重连策略。同时文档化模型列表、专家目录、工具包、能力枚举、Artifacts 和 Python 文件管理等 REST 接口,包括 URL、HTTP 方法、请求参数、响应体结构和错误码。说明 AgentScope、LLM Provider、RAG Schema、向量检索与 Python 执行器在对话流程中的作用。提供 curl 和前端 fetch/SSE 示例,并给出 LLM 不可用、RAG 无结果、SSE 断流、Token 过期等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentChatController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentModelController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentExpertController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentToolPackController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentCapabilityController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentArtifactController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentPythonFileController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/insight/controller/InsightController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentChatController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentModelController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentExpertController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentToolPackController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentCapabilityController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentArtifactController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentPythonFileController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/controller/InsightController.java"
- ]
- },
- {
- "id": "087bb53b-235b-4be4-8619-c4f233ed71e3",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Agent、专家、工具与聊天附件表",
- "description": "agent-schemas",
- "prompt": "创建 Agent 相关数据库设计文档,涵盖 agent_expert、agent_tool、chat_attachment、insight_agent_tables 等表。说明 Agent 专家目录、工具定义、聊天附件存储、Insight 数据模型之间的关联关系。详细描述每条表的主键、外键、JSON/文本字段、文件路径或二进制引用字段、状态字段及业务规则。解释这些表如何支撑 Agent 对话、RAG Schema、Workspace Catalog、Artifact、Python 执行器和 Insight 功能。提供 ER 关系图、典型插入/查询示例,并说明大附件、向量检索元数据和会话数据的生命周期管理与清理策略。",
- "progress_status": "completed",
- "dependent_files": "sql/agent_expert.sql,sql/agent_tool.sql,sql/chat_attachment.sql,sql/insight_agent_tables.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "sql/agent_expert.sql",
- "sql/agent_tool.sql",
- "sql/chat_attachment.sql",
- "sql/insight_agent_tables.sql"
- ]
- },
- {
- "id": "2430cac4-9893-4fa5-b51c-2d967e0f4e01",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "regInfo.exe 许可证校验流程",
- "description": "reginfo-license-validation",
- "prompt": "编写 regInfo.exe 许可证校验流程的详细文档。说明客户端如何调用或集成 regInfo.exe,如何获取机器码、过期时间、单位信息,以及如何将这些信息与授权单元进行比对。解释许可证有效、即将过期、已过期等不同状态下的系统行为;说明授权单元在 `/sys/info` 或相关接口返回后的展示位置、水印渲染机制。提供 regInfo.exe 命令行用法、参数说明、返回值约定、错误码含义,以及许可证失效时的回退策略和用户提示。包含部署时安装 regInfo.exe、首次激活、更新许可证的操作示例。",
- "progress_status": "completed",
- "dependent_files": "readme.md,ai-electron/package.json,ai-electron/frontend/package.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "readme.md",
- "ai-electron/package.json",
- "ai-electron/frontend/package.json"
- ]
- },
- {
- "id": "279bf8ac-c655-4c5d-9be4-0653f70965fd",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "交易模块 trans",
- "description": "business-trans",
- "prompt": "为交易模块 trans 创建详细文档。说明该模块覆盖资金流水、固定存款、现金、大额、频率、敏感、金融等调查场景下的交易相关实体。解释交易记录如何与人员、账户、通话、轨迹关联,以及如何用于资金流向分析和可疑交易识别。梳理核心表结构、关键字段(如金额、时间、对方账户、交易类型)、约束和业务规则。给出典型查询示例:按账户/人员查资金流水、大额交易筛选、共同交易分析、相互转账检测、高频交易统计。补充大数据量下的查询优化、事务一致性、敏感字段脱敏和审计日志建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/testSql/交易共同.sql,sql/testSql/全部交易关系.sql,sql/testSql/相互交易.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/testSql/交易共同.sql",
- "sql/testSql/全部交易关系.sql",
- "sql/testSql/相互交易.sql"
- ]
- },
- {
- "id": "2d92cc7b-fcdd-4353-a322-09eae0d8e610",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "服务注册中心与健康检查",
- "description": "gateway-registry-and-health",
- "prompt": "创建网关服务注册与健康检查机制的详细文档。解释 GatewayRegistry 如何以 PostgreSQL gateway_service / gateway_node 表为事实来源,维护内存中的 ServiceInfo 列表快照,并在启动阶段通过 seedFromYamlIfNeeded 播种 YAML 配置。说明 reload() 的同步加载、initialized 标志避免初始循环发布 RefreshRoutesEvent,以及 @Scheduled(fixedDelayString=\"${gateway.registry-poll-interval:10s}\") 的多实例对账机制。介绍 ServiceInfo 与 NodeInfo 的数据模型、pathPrefix 匹配、defaultNodeId 的作用。说明 HealthChecker 与 NodeHealthRegistry 如何维护节点 up/down 状态,以及 StickyRouteFilter 如何结合 healthRegistry.isUp 拒绝不可用节点。补充多实例部署时的配置变更传播、性能考虑和故障排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/registry/GatewayRegistry.java,ai-gateway/src/main/java/com/zsjz/gateway/registry/GatewayConfigRepository.java,ai-gateway/src/main/java/com/zsjz/gateway/registry/ServiceInfo.java,ai-gateway/src/main/java/com/zsjz/gateway/registry/NodeInfo.java,ai-gateway/src/main/java/com/zsjz/gateway/registry/HealthChecker.java,ai-gateway/src/main/java/com/zsjz/gateway/registry/NodeHealthRegistry.java,ai-gateway/src/main/java/com/zsjz/gateway/config/GatewayProperties.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/GatewayRegistry.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/GatewayConfigRepository.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/ServiceInfo.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/NodeInfo.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/HealthChecker.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/registry/NodeHealthRegistry.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/config/GatewayProperties.java"
- ]
- },
- {
- "id": "3cf3d4f3-856a-4d13-acb8-3aa2bf286c04",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "技术栈与依赖",
- "description": "technology-stack",
- "prompt": "整理清鉴 AI 调查工具的技术栈与依赖矩阵,分别说明后端、前端和桌面层的框架与核心库。后端使用 Spring Boot 3.5.16、Spring Cloud Gateway WebFlux、MyBatis-Plus、Dynamic Datasource、Sa-Token、Redis、PostgreSQL/pgvector、DJL HuggingFace Tokenizers + ONNX Runtime、DuckDB JDBC、Spring AI Tika、AgentScope。前端使用 Vue 3、Ant Design Vue、Pinia、Vue Router、Vue I18n、Monaco Editor、CodeMirror、VDitor、Markdown-it、ECharts、AntV G6/X6、Relation Graph、MapLibre GL、PMTiles、Dexie、xlsx、crypto-js、dayjs、lodash-es。桌面层使用 Electron 37、electron-builder、ee-core、electron-updater。列出主要依赖版本、用途和兼容性注意事项,说明 Maven 父工程 pom.xml 与前端 package.json 的依赖管理方式,并指出升级依赖时需要注意的风险点。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-gateway/pom.xml,ai-electron/frontend/package.json,ai-electron/package.json,ai-electron/frontend/tsconfig.json,ai-electron/tsconfig.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 2,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-gateway/pom.xml",
- "ai-electron/frontend/package.json",
- "ai-electron/package.json",
- "ai-electron/frontend/tsconfig.json",
- "ai-electron/tsconfig.json"
- ]
- },
- {
- "id": "645f94c6-f003-4b68-b55f-8ed08d10ce69",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关与粘性路由架构",
- "description": "gateway-sticky-routing-architecture",
- "prompt": "创建 Spring Cloud Gateway 粘性路由架构文档。详细解释 StickyRouteFilter 的设计目标:为什么用户会话必须固定到同一 ai-server 节点,过滤器如何在 RouteToRequestUrlFilter 之后重写 GATEWAY_REQUEST_URL_ATTR,并追加 X-Gateway-Node 响应头。说明 LoginRequestFilter 与 LoginResponseFilter 如何配合完成登录前标识和登录后写库绑定;GatewayRegistry、NodeHealthRegistry 等组件如何维护服务/节点注册表与健康状态。画出用户请求经过网关转发到指定 ai-server 的数据流图,说明跨节点切换策略、节点 DOWN 返回 503 的原因,以及 gateway_service / gateway_node 表的作用。补充 CORS、RequestId、错误处理等横切关注点和运维排查要点。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/config/CorsConfig.java,ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java,ai-gateway/pom.xml,sql/gateway.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/config/CorsConfig.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java",
- "ai-gateway/pom.xml",
- "sql/gateway.sql"
- ]
- },
- {
- "id": "7ed47ff0-8933-4302-ac7f-15ef5c824483",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "添加新模块与新功能",
- "description": "adding-new-module",
- "prompt": "创建添加新模块与新功能的实操指南。说明如何在 ai-server 中添加新的 Spring Boot 业务模块(controller、service、mapper、entity),如何注册到应用上下文,以及如何通过 MyBatis-Plus 访问数据库。说明在 ai-gateway 中新增网关管理接口或过滤器的步骤。说明在前端 App.vue 或路由中注册新页面、新增 IPC 接口时如何修改 preload bridge 和 Electron main.ts。给出完整示例:新增一个查询外部表的后端模块 + 前端页面 + 对应 SQL 初始化脚本。包含 API 版本兼容、配置项扩展、日志记录和测试建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java,ai-electron/frontend/src/App.vue,ai-electron/electron/main.ts,ai-electron/electron/preload/index.ts,sql/gateway.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java",
- "ai-electron/frontend/src/App.vue",
- "ai-electron/electron/main.ts",
- "ai-electron/electron/preload/index.ts",
- "sql/gateway.sql"
- ]
- },
- {
- "id": "82b197df-b35b-47fc-8bef-78cdebd2c2f8",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "批量清洗任务",
- "description": "ai-clean-batch-jobs",
- "prompt": "编写 AI 数据清洗中批量清洗任务的详细文档。说明 AiCleanBatch、AiCleanJob、AiRecordCleaner、AiDuckDb、AiRowReader、SheetProbe 等组件的职责和调用关系,解释用户上传 CSV/Excel 后如何解析 Sheet、读取行、匹配清洗模板、执行清洗规则、写入 DuckDB 临时表或目标表,以及如何生成清洗结果和错误记录。详细说明批量任务的生命周期:创建任务、分配 Job、读取数据、执行清洗、收集拒绝记录、更新状态、完成或失败。给出完整的端到端示例:前端上传文件 → 后端创建批量任务 → 选择或自动匹配模板 → 执行清洗 → 查看进度和结果。说明任务状态枚举、失败重试机制、超时处理和并发限制。补充常见问题:批量任务卡住、大文件内存不足、DuckDB 写入失败、模板中途变更、任务状态不一致等。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean_row_stats.sql,ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanBatch.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanJob.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiCleanService.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiSmartCleanService.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiRecordCleaner.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiDuckDb.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/probe/AiRowReader.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/probe/SheetProbe.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "sql/ai_clean_row_stats.sql",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanBatch.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/entity/AiCleanJob.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiCleanService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/service/AiSmartCleanService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiRecordCleaner.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiDuckDb.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/probe/AiRowReader.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/probe/SheetProbe.java"
- ]
- },
- {
- "id": "8b970997-124e-46b3-86f0-da34175ae365",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "向量存储与检索",
- "description": "knowledge-vector-storage",
- "prompt": "创建知识与向量存储层的详细文档。说明知识文档向量在 pgvector 中的表结构设计、主键与外键关系、向量维度来源、索引类型和查询语句。解释 KnowledgeVectorMapper 提供的插入、更新、删除和相似检索接口,以及它如何被 Agent 的 KnowledgeSearchTool 或 RAG Schema 检索使用。给出向量插入、按相似度 TopK 检索、按文档 ID 删除向量的 SQL/Java 示例。补充向量归一化、余弦距离计算、批量写入、索引刷新策略、向量维度不匹配问题、召回率调优、pgvector 扩展安装和性能监控建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/knowledge/mapper/KnowledgeVectorMapper.java,ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDoc.java,ai-server/src/main/java/com/zsjz/ai/module/agent/rag/EmbeddingProvider.java,ai-server/src/main/java/com/zsjz/ai/module/agent/tools/KnowledgeSearchTool.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndex.java,sql/gateway.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/mapper/KnowledgeVectorMapper.java",
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/entity/KnowledgeDoc.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/rag/EmbeddingProvider.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/tools/KnowledgeSearchTool.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndex.java",
- "sql/gateway.sql"
- ]
- },
- {
- "id": "d4244f4c-2490-44b5-b0da-669fa5f4ff93",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Electron 客户端构建与发布",
- "description": "deployment-electron-client",
- "prompt": "创建 Electron 桌面客户端的构建、打包与发布文档。说明 ai-electron/package.json 中的 scripts:dev、build、start、build-frontend、build-electron、build-w、build-m、build-m-arm64、build-l 等命令的作用和执行顺序,包括前端构建、Electron 构建、ee-bin 加密和 electron-updater 集成。解释 Windows、Linux、macOS 三端打包产物的差异,以及如何通过 pnpm/npm 在 CI 或本地生成安装包。说明前端 bin 目录下的 build.sh、install.sh、startup.*、install.bat、build.bat 脚本用途,以及与 ee-core/electron-builder 的关系。补充客户端自动更新配置、版本号管理、增量更新和回滚注意事项。包含常见问题:Node 版本不匹配、better-sqlite3 重建、前端构建失败、签名/公证失败、更新服务器地址配置错误等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/package.json,ai-electron/frontend/bin/build.sh,ai-electron/frontend/bin/install.sh,ai-electron/frontend/bin/startup.sh,ai-electron/frontend/bin/startup.bat,ai-electron/frontend/bin/install.bat,ai-electron/frontend/bin/build.bat",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-electron/package.json",
- "ai-electron/frontend/bin/build.sh",
- "ai-electron/frontend/bin/install.sh",
- "ai-electron/frontend/bin/startup.sh",
- "ai-electron/frontend/bin/startup.bat",
- "ai-electron/frontend/bin/install.bat",
- "ai-electron/frontend/bin/build.bat"
- ]
- },
- {
- "id": "e5327e25-d642-48b6-a00b-3ee3df9a45fc",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "多数据源配置与切换",
- "description": "multi-datasource-config",
- "prompt": "编写 MyBatis-Plus + Dynamic Datasource 多数据源配置文档。说明 PostgreSQL/pgvector 作为主业务数据源、DuckDB 作为临时/本地计算数据源的用途差异;解释如何在配置中声明多个数据源,以及在 Service 层按场景切换数据源的方式。描述 pgvector 向量表的使用约束、索引策略和性能注意事项。给出典型用法示例:普通 CRUD 使用默认数据源,批量清洗或临时分析切换到 DuckDB。补充常见问题:数据源选择错误、pgvector 扩展未安装、DuckDB JDBC 连接失败、事务跨数据源限制等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "efa5573e-0743-4e8b-adba-e6efadecc9f2",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "单元测试与 E2E 测试",
- "description": "unit-testing",
- "prompt": "编写单元测试与 E2E 测试指南。说明后端 JUnit 测试的组织方式,包括 HeaderScorerTest、AiTemplateMatcherTest、AiTemplateMatchEdgeTest、AiCleanSupportTest 等与模板打分、绑定、边缘场景相关的用例;说明 C/D 类 E2E 如何通过 HTTP API 在案件 A=16/B=17 上执行真实清洗链路,并通过 target/aitest_*.py 和 target/aitest/*.json 记录结果。说明 Electron 侧 vitest.config.mts 中 include=['electron/**/*.test.ts'] 和 passWithNoTests=true 的含义,指导如何在主进程新增 .test.ts 单测。补充测试数据隔离、数据库清理、登录态处理、重复上传去重、损坏文件容错等常见测试模式,并给出调试断言失败和定位真实链路问题的步骤。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/vitest.config.mts,docs/testing/ai-template-match-test-cases.md",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-electron/vitest.config.mts",
- "docs/testing/ai-template-match-test-cases.md"
- ]
- },
- {
- "id": "ffe7bd4f-414d-489a-92fa-f265405a7add",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "窗口控制与跨窗口状态同步",
- "description": "electron-window-control",
- "prompt": "为 Electron 窗口控制与跨窗口状态同步编写详细文档。重点说明 ai-electron/electron/controller/windowCtl.ts 中的 WindowCtl 类如何作为主进程控制器,提供 openSmartWindow、closeSmartWindow、isSmartWindowOpen、focusMainWindow、getWindowRole、syncState 等 IPC 方法。解释智能工作台窗口与普通主窗口的角色区分(main vs smart),以及 syncState 如何通过 SYNC_EVENT_CHANNEL='app:state' 向除发送者外的所有窗口广播语义事件。说明这些方法与前端 appWindow.ts 的 closeSmartWindow、focusMainWindow、initWindowRole、isSmartWindow 之间的调用关系。给出新增窗口控制方法的示例:后端 controller 方法、前端调用、跨窗口事件监听。包含常见问题:多窗口状态不同步、智能窗口未关闭、主窗口未聚焦、getWindowRole 返回错误角色等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/controller/windowCtl.ts,ai-electron/electron/service/window/smartWindow.ts,ai-electron/frontend/src/core/logics/appWindow.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 2,
- "kk_dependent_files": [
- "ai-electron/electron/controller/windowCtl.ts",
- "ai-electron/electron/service/window/smartWindow.ts",
- "ai-electron/frontend/src/core/logics/appWindow.ts"
- ]
- },
- {
- "id": "03a0099f-84a3-433f-972a-b9d3b4ad8a03",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "AI 数据清洗接口",
- "description": "ai-clean-api",
- "prompt": "创建 AI 数据清洗接口的 API 文档,覆盖 /aiClean、/aiClean/synonym 以及 CleanErrorLogController 暴露的接口。说明清洗模板匹配、智能清洗任务、同义词与字段短名映射、批量清洗、清洗结果与错误日志等功能的 REST 接口。对每个接口记录 HTTP 方法、URL、请求参数、响应体、分页字段和错误码;对上传 CSV/Excel 和下载清洗结果的接口,说明文件类型、大小限制、字符编码和进度反馈方式。说明清洗流程与 pgvector、DuckDB 临时数据源的关系,以及清洗失败时如何通过错误日志定位问题。提供 curl 或前端 FormData 调用示例,并给出模板不匹配、字段映射错误、任务失败、向量索引异常等常见问题的排查步骤。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanController.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiSmartCleanController.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanSynonymController.java,ai-server/src/main/java/com/zsjz/ai/module/dm/controller/CleanErrorLogController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiSmartCleanController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/api/AiCleanSynonymController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/dm/controller/CleanErrorLogController.java"
- ]
- },
- {
- "id": "0b5c5236-0103-4f16-b57a-56e7e7be9713",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "前端代码规范与质量工具",
- "description": "frontend-code-quality",
- "prompt": "编写前端代码规范与质量工具文档。基于 eslint.config.mjs 说明 ESLint 对 Vue、TypeScript、JavaScript 文件的解析器、插件和规则配置,包括忽略 node_modules/dist/public/build/.git 等路径、Vue 组件规则、TS 宽松规则、Prettier 集成(printWidth=120、semi=true、singleQuote=true、trailingComma=all)。基于 stylelint.config.mjs 说明 Stylelint 对 HTML/Vue/Less/SCSS 的处理,包括 postcss-html、stylelint-config-standard、less/scss 扩展、v-deep/global/deep 伪类伪元素白名单、rpx 单位白名单、inset 禁用和 top/right/bottom/left 允许列表。给出常用命令、IDE 集成建议、常见报错修复方法,以及新增样式语言或 Vue 规则时的扩展方式。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/eslint.config.mjs,ai-electron/frontend/stylelint.config.mjs",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-electron/frontend/eslint.config.mjs",
- "ai-electron/frontend/stylelint.config.mjs"
- ]
- },
- {
- "id": "0e2872d4-dad7-4efb-ade8-a2e5f8e13a86",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "目录结构与代码组织",
- "description": "directory-structure",
- "prompt": "说明仓库顶层目录和各子工程的职责划分。解释 ai-electron 下 electron(主进程、preload、controller、service)、frontend(Vue 3 渲染进程)、public、out、logs、docs 等目录的作用;说明 ai-gateway 中 src/main/java/com/zsjz/gateway 下的路由、过滤器、注册中心和管理接口;说明 ai-server 中 module/* 按业务域划分的 controller/service/mapper/entity 组织结构。结合 pom.xml 和 package.json 解释模块入口文件:ai-electron/electron/main.ts、ai-electron/frontend/src/App.vue、ai-gateway 和 ai-server 的 Spring Boot 入口。补充 SQL、docs、deploy、cmd、data 等非源码目录的使用规范,帮助新成员快速定位代码。",
- "progress_status": "completed",
- "dependent_files": "pom.xml,ai-electron/electron/main.ts,ai-electron/frontend/src/App.vue,ai-server/pom.xml,ai-gateway/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 3,
- "kk_dependent_files": [
- "pom.xml",
- "ai-electron/electron/main.ts",
- "ai-electron/frontend/src/App.vue",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml"
- ]
- },
- {
- "id": "258ef8d6-d1f0-4ec5-86c4-67200e3f8c37",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "前端根应用与启动流程",
- "description": "frontend-root-application",
- "prompt": "为前端根应用与启动流程编写详细文档。说明 ai-electron/frontend/src/main.ts 如何初始化 UnoCSS、Ant Design Vue reset 样式、全局设计样式、AI 模块样式,然后创建 Vue 应用、注册全局组件、国际化、路由、Store、错误处理、Tab 监听补丁和弹窗行为补丁。解释启动探测逻辑 waitForBackendReady:最多重试 10 次、每次间隔约 3 秒,调用 healthApi 探测后端是否就绪,并在 loading 页显示重试提示、重连按钮和服务地址设置入口。说明 App.vue 如何配置 Ant Design Vue 主题、语言、AppProvider,并通过 authorizationInfoApi 获取授权单元,写入水印。解释 isServerSetupMissing、getApiOrigin、PageEnum.BASE_AUTHORIZATION、PageEnum.BASE_SERVER_SETUP 在启动路由和授权判断中的作用。给出新增全局初始化逻辑、启动探测扩展、授权缓存处理的示例。包含常见问题:后端连接失败、loading 卡住、授权信息不显示、路由跳转到 404、服务地址为空等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/src/App.vue,ai-electron/frontend/src/main.ts,ai-electron/frontend/src/core/settings/serverSetting.ts,ai-electron/frontend/src/core/api/sys/login.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-electron/frontend/src/App.vue",
- "ai-electron/frontend/src/main.ts",
- "ai-electron/frontend/src/core/settings/serverSetting.ts",
- "ai-electron/frontend/src/core/api/sys/login.ts"
- ]
- },
- {
- "id": "5352975b-7714-4098-a0f1-a8f2946e68b3",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "安装包卸载与清理",
- "description": "deployment-uninstallation",
- "prompt": "创建清鉴客户端卸载与数据清理指南。说明 cmd/uninstall.bat(Windows)和 cmd/uninstall.sh(Linux/macOS)卸载脚本的功能:强制终止 qingjian-client 进程、递归删除 ~/.config/qingjian-client、~/.local/share/QingJian、~/.qingjian-client 等用户数据目录。解释 Linux 脚本的安全检查逻辑($HOME 判空、pkill 返回值、rm -rf 权限问题提示),以及 Windows 批处理对应的清理范围。提供管理员权限执行方法、卸载前备份建议和数据恢复注意事项。补充手动清理清单:浏览器缓存中的服务地址、Electron AppData、临时文件、残留进程和注册表项(如适用)。包含常见问题:进程无法终止、权限不足、部分目录未被删除、卸载后仍显示旧授权信息等的处理方法。",
- "progress_status": "completed",
- "dependent_files": "cmd/uninstall.bat,cmd/uninstall.sh",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "cmd/uninstall.bat",
- "cmd/uninstall.sh"
- ]
- },
- {
- "id": "652c39da-67ee-45ba-ad92-262987cc74c1",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "调试与问题排查",
- "description": "debugging-and-troubleshooting",
- "prompt": "创建开发者调试与问题排查指南。覆盖常见问题定位路径:Gateway 粘性路由无法绑定用户、登录成功后仍 503、Agent SSE 断连或心跳异常、pgvector 向量检索无结果、地图加载失败、许可证校验失败、Electron 主进程崩溃、前端资源加载异常。说明如何查看服务端日志、网关日志、Electron 控制台和网络请求。给出 StickyRouteFilter 中 token/username 解析、节点选择、URL 重写和 X-Gateway-Node 响应头的检查方法。说明如何验证 Agent LLM 调用、RAG Schema 检索、Python 执行器和附件上传。提供诊断清单、复现步骤和恢复建议。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-electron/electron/main.ts,ai-electron/frontend/src/App.vue,readme.md,ai-electron/electron/config/config.default.ts,ai-electron/electron/config/windowOptions.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-electron/electron/main.ts",
- "ai-electron/frontend/src/App.vue",
- "readme.md",
- "ai-electron/electron/config/config.default.ts",
- "ai-electron/electron/config/windowOptions.ts"
- ]
- },
- {
- "id": "684b1d01-a312-48fb-87c4-3e103deb4f35",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Electron 安全边界与本地文件保护",
- "description": "electron-security-boundaries",
- "prompt": "编写 Electron 桌面端安全边界与本地文件保护文档。说明主进程、preload 桥接、渲染进程之间的权限隔离模型,preload bridge 暴露给前端的能力边界,以及为什么不应直接暴露 Node/Electron API。说明敏感配置、服务地址、token、工作区目录、地图资源、PMTiles 文件的本地存储位置和访问控制。结合窗口控制器 windowCtl 说明窗口创建、URL 白名单、弹窗限制等安全措施。给出本地文件泄露、恶意 HTML 视图加载、跨域读取等安全风险及防护建议。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/main.ts,ai-electron/electron/preload/index.ts,ai-electron/electron/preload/bridge.ts,ai-electron/electron/controller/windowCtl.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-electron/electron/main.ts",
- "ai-electron/electron/preload/index.ts",
- "ai-electron/electron/preload/bridge.ts",
- "ai-electron/electron/controller/windowCtl.ts"
- ]
- },
- {
- "id": "84773149-8223-4a20-a62c-5319d4527d3f",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "工具包、Python 执行器与 Artifact",
- "description": "agent-tools-python-artifacts",
- "prompt": "为工具包、Python 执行器与 Artifact 创建详细文档。说明 AgentTool、AgentToolPackEntity、AgentToolRegistry 构成的工具目录体系,AgentToolCatalogService 如何加载和匹配工具,以及 AgentPythonFileController 提供的 Python 文件上传与管理能力。解释 AgentArtifactController 如何管理 Agent 生成的附件、中间文件或可视化结果,以及前端 artifacts.ts 如何展示这些产物。给出示例:注册新工具、调用 Python 脚本、上传数据文件、查看工具调用结果和 Artifact 预览。补充常见问题:Python 执行权限不足、脚本超时、工具未注册、Artifact 路径不存在、并发访问冲突等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/agent/tools/AgentToolRegistry.java,ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentTool.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentToolCatalogService.java,ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentToolCatalogServiceImpl.java,ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentToolPackEntity.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentToolPackController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentPythonFileController.java,ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentArtifactController.java,ai-electron/frontend/src/ai/api/capabilityApi.ts,ai-electron/frontend/src/ai/utils/artifacts.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/agent/tools/AgentToolRegistry.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentTool.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/AgentToolCatalogService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/service/impl/AgentToolCatalogServiceImpl.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/entity/AgentToolPackEntity.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentToolPackController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentPythonFileController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/controller/AgentArtifactController.java",
- "ai-electron/frontend/src/ai/api/capabilityApi.ts",
- "ai-electron/frontend/src/ai/utils/artifacts.ts"
- ]
- },
- {
- "id": "971bd1ce-217d-4f0c-a6ad-29840ae2639f",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "轨迹模块 track",
- "description": "business-track",
- "prompt": "为轨迹模块 track 创建详细文档。说明该模块管理快递、同行、同住、同城、基站、火车票等轨迹类调查数据,帮助还原目标人员的时间线和空间活动。解释轨迹数据与人员 person、通话 call、交易 trans 的关联方式,以及在案件串并、行踪追踪中的作用。梳理各轨迹类型的实体结构、时间戳、地理位置字段、来源系统标识和清洗规则。给出查询示例:按人员和时间范围查轨迹、同行/同住关系挖掘、基站热点分析、跨系统轨迹合并。补充地理信息查询优化、时间窗口过滤、轨迹去重和可视化对接建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/testSql/轨迹测试.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/testSql/轨迹测试.sql"
- ]
- },
- {
- "id": "9d19f6ee-79cd-4e4a-9a0d-dea1880bbf9c",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "认证与会话管理",
- "description": "authentication-session",
- "prompt": "编写基于 Sa-Token 的认证与会话管理文档。说明用户登录流程、Token 生成与校验、会话状态在 Redis 中的存储方式,以及客户端 x-token 如何与服务端会话关联。解释与网关 StickyRouteFilter 的协作关系:Gateway 负责按用户名绑定节点,ai-server 负责实际 Token 校验。描述账号被顶下线/踢下线后释放案件数据源的行为,以及登录失效时前端清理缓存的注意事项。补充安全建议:Token 泄露处理、会话超时配置、敏感接口鉴权模式和调试方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "bba68a9f-bcb3-4c71-a2eb-1f56005e29f1",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "清洗结果与统计",
- "description": "ai-clean-results-and-stats",
- "prompt": "编写 AI 数据清洗中清洗结果与统计的详细文档。说明 AiRowCleanResult、AiRejectRecord、ColumnError、AiRejectReason 等模型的结构和用途,解释成功行、拒绝行、列级错误、拒绝原因分类之间的关系。详细说明清洗结果如何持久化、如何统计行数、成功数、拒绝数和各类错误分布,以及 ai_clean_row_stats.sql 对应的统计设计。给出查看清洗结果、导出成功数据和错误数据的示例,包括前端 case 目录中与清洗结果展示相关的界面交互。说明结果数据的保留策略、清理时机和性能考虑。补充常见问题:结果为空但任务成功、拒绝记录缺失、错误列信息不准确、统计数据延迟、导出文件过大等。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean_row_stats.sql,ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/AiRowCleanResult.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/AiRejectRecord.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/ColumnError.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiRejectCollector.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/enums/AiRejectReason.java,ai-electron/frontend/src/case/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "sql/ai_clean_row_stats.sql",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/AiRowCleanResult.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/AiRejectRecord.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/model/ColumnError.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/exec/AiRejectCollector.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/enums/AiRejectReason.java",
- "ai-electron/frontend/src/case/"
- ]
- },
- {
- "id": "be260c76-7452-4c32-b391-518638e55800",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "嵌入调试接口",
- "description": "embedding-debug-interface",
- "prompt": "创建嵌入调试接口的详细文档。说明 EmbeddingDebugController.debug 如何通过 EmbeddingService 调用本地 ONNX 推理引擎 OnnxEmbeddingEngine,对一批输入文本生成向量、计算两两余弦相似度矩阵,并返回维度、耗时、向量数组和相似度矩阵。明确该接口只用于验证本地 embedding 模型是否正常,不参与业务路由。提供 EmbeddingDebugDTO 和 EmbeddingDebugVO 的请求/响应 JSON 示例,说明 dimension、embedMillis、vectors[]、similarity[][] 的含义。补充 ONNX 模型加载、向量维度配置、归一化行为、批量大小、内存占用、CPU/GPU 性能、调试结果解读和模型部署故障排查指南。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/embedding/controller/EmbeddingDebugController.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/service/EmbeddingService.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/core/OnnxEmbeddingEngine.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/config/EmbeddingProperties.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/vo/EmbeddingDebugVO.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/dto/EmbeddingDebugDTO.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/controller/EmbeddingDebugController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/service/EmbeddingService.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/core/OnnxEmbeddingEngine.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/config/EmbeddingProperties.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/vo/EmbeddingDebugVO.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/dto/EmbeddingDebugDTO.java"
- ]
- },
- {
- "id": "ca6be081-bf0b-43f8-8325-ae3d860af297",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关管理接口",
- "description": "admin-api",
- "prompt": "创建网关管理接口的 API 文档。覆盖 /gateway/admin/status、/services、/nodes、/routes/bind、/routes/unbind、/routes/import-existing、/reload 等端点,说明 HTTP 方法、URL 模式、请求体结构、响应格式 ApiResult<Object> 和管理员认证要求(AdminAuthWebFilter)。解释 AdminService 如何封装 createService/updateService/deleteService、createNode/updateNode/deleteNode、checkNode、pageRoutes、bindRoute、unbind、importExisting、reload 等操作,并说明这些操作如何通过 GatewayRegistry.reload() 触发路由刷新。补充 IP 白名单控制、阻塞 JDBC 调用通过 Schedulers.boundedElastic 保护 Netty 事件循环的原因,以及 AdminApiException 和 WebExchangeBindException 的错误响应格式。提供典型运维场景示例,如新增 ai-server 节点、绑定路由、导入已有路由、手动重载配置。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminController.java,ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminService.java,ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminAuthWebFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/support/ApiResult.java,ai-gateway/src/main/java/com/zsjz/gateway/support/AdminApiException.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminController.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminService.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/admin/AdminAuthWebFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/support/ApiResult.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/support/AdminApiException.java"
- ]
- },
- {
- "id": "d27f0c5a-2dec-48e1-9bdd-d640386cd8ac",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "后端服务架构",
- "description": "backend-service-architecture",
- "prompt": "创建 ai-server 后端服务架构文档。说明 Spring Boot 应用入口、模块化组织原则(plat/agent/aiclean/knowledge/graph/person/call/trans/track/govern/search/dm/otg/external/embedding),以及每个模块在调查场景中的职责。重点描述多数据源配置:MyBatis-Plus + Dynamic Datasource 如何同时连接 PostgreSQL/pgvector、Redis、DuckDB 等业务与临时数据源;Sa-Token 认证流程、SSE 心跳保活机制、定时任务与工作空间清理。结合 AgentScope RAG、向量检索、Python 执行器、附件与 Workspace Catalog,说明 agent 模块与其他模块的协作方式。补充异常处理、日志、性能考虑和多节点扩展建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/App.java,ai-server/src/main/resources/application.yml,ai-server/src/main/resources/application-dev.yml,ai-server/src/main/resources/application-prod.yml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/App.java",
- "ai-server/src/main/resources/application.yml",
- "ai-server/src/main/resources/application-dev.yml",
- "ai-server/src/main/resources/application-prod.yml"
- ]
- },
- {
- "id": "e9ff4b7b-abcf-42ad-b5f1-3c1cd72bbcf1",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "AI 数据清洗模板、同义词与行统计表",
- "description": "ai-clean-schemas",
- "prompt": "创建 AI 数据清洗功能的数据库设计文档,重点说明 ai_clean 清洗模板、ai_clean_field_short_names 字段短名映射、ai_clean_row_stats 清洗行统计、ai_clean_synonym_init 同义词初始化等相关表。详细描述模板定义、字段映射规则、同义词词库、清洗结果统计字段的数据类型、主外键、索引和业务约束。解释清洗流程中的数据来源、模板匹配、同义词替换、字段映射和结果落库的数据流。提供清洗任务查询、统计聚合、模板维护的典型 SQL 示例,并说明批量清洗的性能优化、重复执行去重和数据回滚方案。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean.sql,sql/ai_clean_field_short_names.sql,sql/ai_clean_row_stats.sql,sql/ai_clean_synonym_init.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "order": 3,
- "kk_dependent_files": [
- "sql/ai_clean.sql",
- "sql/ai_clean_field_short_names.sql",
- "sql/ai_clean_row_stats.sql",
- "sql/ai_clean_synonym_init.sql"
- ]
- },
- {
- "id": "13f6442b-ca39-47c8-a5ad-c1ea01c7f014",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "关键数据流与应用生命周期",
- "description": "data-flow-and-lifecycle",
- "prompt": "创建清鉴 AI 调查工具的关键数据流与应用生命周期文档。以典型用户工作流为主线,逐步说明:客户端启动 → 读取 localStorage 中的服务地址 → 调用 /sys/info 获取授权单元 → 用户登录 → Gateway 解析 username/token 选择并绑定 ai-server 节点 → 后续请求通过 StickyRouteFilter 稳定转发 → ai-server 校验 Sa-Token 会话 → Agent 调用 LLM 与 pgvector 向量检索 → 图谱/统计结果返回前端渲染。绘制时序图和状态图,标注跨进程、跨网络、跨服务的边界。解释 SSE 心跳保活、登录失效、节点不可用、Agent 流式响应等异常情况下的数据流变化,并给出排查思路。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/main.ts,ai-electron/frontend/src/App.vue,ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java,ai-server/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-electron/electron/main.ts",
- "ai-electron/frontend/src/App.vue",
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java",
- "ai-server/pom.xml"
- ]
- },
- {
- "id": "28e5b517-e9ac-4377-979e-5f881a6ab9e1",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "SSE 心跳与长连接保活",
- "description": "sse-heartbeat",
- "prompt": "编写 SSE Server-Sent Events 心跳与长连接保活文档。说明 Agent 流式对话、心跳任务、服务端定时保活机制的工作流程,以及客户端如何处理断连、重连和消息乱序。解释 SSE 与 WebSocket 的区别在本项目中的选型原因,并说明长连接对服务器资源的影响。提供调试技巧:查看服务端日志、检查心跳间隔、确认防火墙/Nginx 是否支持 SSE。补充性能优化建议:连接池控制、超时清理、背压处理和异常恢复策略。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "2a0b927e-ea46-48b8-b14d-c57615de3c4d",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关基础设施与异常处理",
- "description": "gateway-infrastructure",
- "prompt": "创建网关基础设施层文档,覆盖 GatewayApplication 应用入口、CorsConfig 跨域配置、WebClientConfig 响应式 WebClient 配置、RequestIdFilter 的请求 ID 注入、GatewayErrorHandler 的全局异常处理,以及 StickyUnavailableException 的统一错误语义。说明这些组件如何支撑粘性路由、管理接口和业务转发,特别是 503 错误在不同场景下的含义:服务不存在、服务停用、无可用节点、绑定节点不可用、用户未绑定节点等。补充 Netty/WebFlux 环境下的注意事项,例如避免阻塞 IO、合理使用调度器、SSE 心跳与长连接兼容性。提供排障清单,帮助定位 CORS 拦截、WebClient 超时、全局异常未捕获、请求 ID 缺失等问题。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/support/RequestIdFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/support/GatewayErrorHandler.java,ai-gateway/src/main/java/com/zsjz/gateway/support/StickyUnavailableException.java,ai-gateway/src/main/java/com/zsjz/gateway/config/CorsConfig.java,ai-gateway/src/main/java/com/zsjz/gateway/config/WebClientConfig.java,ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/support/RequestIdFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/support/GatewayErrorHandler.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/support/StickyUnavailableException.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/config/CorsConfig.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/config/WebClientConfig.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java"
- ]
- },
- {
- "id": "47af0185-c942-40f5-97c0-6bb492b91be9",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "授权单元与水印",
- "description": "desktop-authorization-watermark",
- "prompt": "为桌面客户端授权单元与水印机制编写详细文档。说明 App.vue 如何通过 authorizationInfoApi 获取服务端授权信息,使用 extractAuthorizationCache 解析 authorizationLabel、overDateTime、authorizationUnit,并写入 userStore 页面缓存。解释 useWatermark 如何根据 authorizationUnit 动态设置页面水印,并在授权信息为空时清除水印。说明 license.ts 中授权缓存提取、过期判断和过期消息生成逻辑,以及与 login.ts 中 checkAuthApi、authorizationInfoApi 的关系。给出新增授权字段、扩展水印内容、处理授权过期的示例。包含常见问题:授权信息未加载、水印不显示、授权过期仍可使用、localStorage 缓存不一致、授权信息与网关 token 不一致等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/src/App.vue,ai-electron/frontend/src/core/utils/license.ts,ai-electron/frontend/src/core/store/modules/case.ts,ai-electron/frontend/src/core/hooks/web/useWatermark.ts,ai-electron/frontend/src/core/api/sys/login.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-electron/frontend/src/App.vue",
- "ai-electron/frontend/src/core/utils/license.ts",
- "ai-electron/frontend/src/core/store/modules/case.ts",
- "ai-electron/frontend/src/core/hooks/web/useWatermark.ts",
- "ai-electron/frontend/src/core/api/sys/login.ts"
- ]
- },
- {
- "id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "系统架构设计",
- "description": "system-architecture",
- "prompt": "创建清鉴 AI 调查工具的系统架构文档,描述高层分层模型:Electron 客户端 → Preload Bridge → Spring Cloud Gateway → ai-server 业务模块 → PostgreSQL/pgvector/Redis/文件系统。重点解释粘性路由的设计目标:为什么用户会话必须固定到同一 ai-server 节点,StickyRouteFilter 如何在 RouteToRequestFilter 之后重写目标 URL,以及 LoginResponseFilter 如何实现登录成功后写库绑定。画出客户端、网关、服务、数据库之间的交互图和数据流向图。说明跨进程安全隔离、SSE 心跳保活、动态数据源切换、AgentScope RAG 调用等横切关注点。讨论可扩展性(多 ai-server 节点)、容错策略(节点 DOWN 返回 503)和部署拓扑。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-electron/electron/main.ts,ai-electron/frontend/src/App.vue,ai-server/pom.xml,ai-gateway/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 4,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-electron/electron/main.ts",
- "ai-electron/frontend/src/App.vue",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml"
- ]
- },
- {
- "id": "b637c759-edca-43f8-9a98-8c1657165061",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "知识库与嵌入调试接口",
- "description": "knowledge-and-embedding-api",
- "prompt": "创建知识库与嵌入调试接口的 API 文档,覆盖 KnowledgeBaseController 和 EmbeddingDebugController。说明知识库文档的创建、查询、更新、删除、向量入库、下载日志等接口,以及嵌入调试接口的输入输出格式。记录每个接口的 HTTP 方法、URL、请求参数、响应体、错误码和权限要求。说明知识库与 Agent RAG 中向量检索的关系,以及 embedding 调试接口如何辅助排查向量化质量。提供 curl 示例,并说明文档解析失败、向量入库失败、相似度检索为空等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java,ai-server/src/main/java/com/zsjz/ai/module/embedding/controller/EmbeddingDebugController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/knowledge/controller/KnowledgeBaseController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/embedding/controller/EmbeddingDebugController.java"
- ]
- },
- {
- "id": "bea97b99-9c66-427b-b57b-754f086ecbbe",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "清洗模板向量索引",
- "description": "ai-clean-vector-index",
- "prompt": "编写 AI 数据清洗中清洗模板向量索引的详细文档。说明 AiCleanTemplateVectorIndex、AiCleanVectorProperties 的职责,解释模板如何通过向量化进入 pgvector 或向量检索链路,并与 AiTemplateMatcher、HeaderScorer 协同提升模板匹配准确率。详细说明向量索引的构建时机、刷新策略、元数据字段、相似度阈值和回退逻辑。给出向量索引配置、重建索引、验证匹配效果的示例。说明向量索引与传统规则匹配的优先级关系,以及在模板数量增长时的性能影响。补充常见问题:向量索引缺失、相似度阈值过高或过低、模板变更后索引未更新、pgvector 不可用时降级行为等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndex.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanVectorProperties.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/AiTemplateMatcher.java,ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/HeaderScorer.java,ai-server/src/test/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndexTest.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndex.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/index/AiCleanVectorProperties.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/AiTemplateMatcher.java",
- "ai-server/src/main/java/com/zsjz/ai/module/aiclean/match/HeaderScorer.java",
- "ai-server/src/test/java/com/zsjz/ai/module/aiclean/index/AiCleanTemplateVectorIndexTest.java"
- ]
- },
- {
- "id": "c7297910-8fdc-4dc5-b7c9-9a6e1564d183",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "治理模块 govern",
- "description": "business-govern",
- "prompt": "为治理模块 govern 创建详细文档。说明该模块负责治理树、治理配置和结果处理器,支撑调查场景中的人员关系治理、实体归一、标签体系和分析结果结构化。解释治理树如何作为业务分类或关系拓扑,驱动下游 agent、图谱、清洗和外部表的处理逻辑。梳理治理树节点结构、父子关系、状态、扩展字段及配置项。给出使用示例:定义治理树、绑定治理规则、执行治理任务、查看治理结果。说明治理结果如何被 search、dm、otg 和其他业务模块消费,并提供扩展新治理规则和结果处理器的指导。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/insight_agent_tables.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/insight_agent_tables.sql"
- ]
- },
- {
- "id": "dc3bc6ae-89fd-4a5e-bbf7-cb1b905401ea",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "多节点扩展与负载均衡",
- "description": "deployment-multi-node-scaling",
- "prompt": "创建多节点 ai-server 扩展与负载均衡方案。说明粘性路由的设计目标:同一用户请求始终路由到同一 ai-server 节点,避免跨节点访问本地磁盘和会话状态不一致。解释 StickyRouteFilter 如何从 token/username 解析 userId,查找绑定节点并重写目标 URL,同时附加 X-Gateway-Node 响应头。说明服务注册中心、节点健康检查、LoginResponseFilter 登录绑定机制,以及节点 DOWN 时返回 503 不自动切换到其他节点的约束。给出多节点部署拓扑图:多个 ai-server 实例共享 PostgreSQL/pgvector/Redis,单个或集群式 ai-gateway 做粘性转发。补充水平扩展建议:节点扩容策略、登录顶号与会话释放、DuckDB 最大案件数与内存比例调整、向量索引重建成本、ES/Neo4j 共享配置。包含监控与排障:节点健康状态查询、粘性路由失效、登录绑定错乱、Redis 热点键、数据库连接池耗尽等问题的定位方法。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/pom.xml,deploy/env.sh",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/pom.xml",
- "deploy/env.sh"
- ]
- },
- {
- "id": "dee4a153-cf45-4a55-b54e-bd97481f466f",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "许可证与认证问题排查",
- "description": "license-troubleshooting",
- "prompt": "编写许可证与认证问题的综合排查指南。涵盖以下场景:regInfo.exe 无法执行或返回异常、机器码不一致、许可证过期、授权单元为空;x-token 丢失或与其他节点不一致导致 401/403;Gateway 未绑定节点或节点健康检查失败;账号被顶下线后仍持有旧 token;服务端重启后会话丢失。对每个场景给出复现步骤、关键日志位置、需要检查的配置项、数据库表字段、网关转发结果和修复方案。提供快速诊断清单和常见问题 FAQ。",
- "progress_status": "completed",
- "dependent_files": "readme.md,ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-electron/frontend/src/App.vue",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "readme.md",
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-electron/frontend/src/App.vue"
- ]
- },
- {
- "id": "e6796b01-1250-4a7d-b39c-d05e413d8e30",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "案件表与外部表结构",
- "description": "case-and-external-tables",
- "prompt": "创建案件表和外部表结构的数据库设计文档。说明 case_table、case_table_1、table_data_1 等案件数据源表,以及 external_tables、external_table_field 等外部表定义和字段映射表。详细描述表之间的关系:用户/案件、案件与表、表与字段、表数据快照之间的关系。解释外部表在调查场景中如何承载通话、交易、轨迹、人员、车辆违法、罪犯等扩展实体。给出 ER 图、关键字段定义、索引设计和查询模式,包括按案件查询、按外部表查询、字段枚举值查询等。补充数据版本、迁移规范、删除策略和安全访问控制建议。",
- "progress_status": "completed",
- "dependent_files": "sql/case_table.sql,sql/case_table_1.sql,sql/table_data_1.sql,sql/external_tables.sql,sql/external_table_field.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/table_data_1.sql",
- "sql/external_tables.sql",
- "sql/external_table_field.sql"
- ]
- },
- {
- "id": "ea5fee6a-6052-49e8-9a6b-f0faf9c050b0",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Insight 工作区与 Workspace Catalog",
- "description": "agent-insight-workspace",
- "prompt": "为 Insight 工作区与 Workspace Catalog 创建详细文档。说明 AgentInsightSession 与 AgentInsightMessage 的数据模型,InsightAgentFactory 如何启动分析型 Agent,以及前端 useInsightStream 如何通过 SSE 消费 Insight 流式输出。解释 Workspace Catalog 与案件数据源、用户会话之间的关系,说明 Insight 与普通 Agent 对话的区别:是否持久化、是否承载图谱分析结果、是否与 graph/insight API 联动。给出示例:创建 Insight 会话、关联图谱或外部数据、查看 Insight 消息流、清理工作区。补充常见问题:Insight 会话丢失、消息未落库、工作区跨节点不一致、SSE 流被网关切断等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/entity/AgentInsightMessage.java,ai-server/src/main/java/com/zsjz/ai/module/agent/insight/entity/AgentInsightSession.java,ai-server/src/main/java/com/zsjz/ai/module/agent/insight/mapper/AgentInsightMessageMapper.java,ai-server/src/main/java/com/zsjz/ai/module/agent/insight/mapper/AgentInsightSessionMapper.java,ai-server/src/main/java/com/zsjz/ai/module/agent/insight/agent/InsightAgentFactory.java,ai-electron/frontend/src/graph/insight/hooks/useInsightStream.ts,ai-electron/frontend/src/graph/insight/types.ts,ai-electron/frontend/src/graph/insight/api.ts",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "layer_level": 1,
- "order": 4,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/entity/AgentInsightMessage.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/entity/AgentInsightSession.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/mapper/AgentInsightMessageMapper.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/mapper/AgentInsightSessionMapper.java",
- "ai-server/src/main/java/com/zsjz/ai/module/agent/insight/agent/InsightAgentFactory.java",
- "ai-electron/frontend/src/graph/insight/hooks/useInsightStream.ts",
- "ai-electron/frontend/src/graph/insight/types.ts",
- "ai-electron/frontend/src/graph/insight/api.ts"
- ]
- },
- {
- "id": "0f6dfa6f-d969-4087-bed4-1f6522b67faa",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "图谱与图表接口",
- "description": "graph-and-chart-api",
- "prompt": "创建图谱与图表接口的 API 文档,覆盖 GraphController 暴露的 REST 接口。说明关系图数据的查询、生成、导出等接口的 HTTP 方法、URL、请求参数、响应体结构和错误码。描述图谱数据与人员、通话、交易、轨迹等业务实体之间的关系,以及 AntV G6/X6、Relation Graph、ECharts 在前端的渲染方式。说明大数据量图谱的性能注意事项,例如分页、过滤条件和导出格式。提供 curl 和前端调用示例,并给出图谱数据为空、节点过多导致卡顿、导出失败等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/graph/controller/GraphController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/graph/controller/GraphController.java"
- ]
- },
- {
- "id": "6afb3e73-9114-4b47-82f0-025afb9cbdf3",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "日志、监控与故障排查",
- "description": "deployment-monitoring-troubleshooting",
- "prompt": "创建部署后的日志收集、监控指标与故障排查手册。说明 ai-gateway 和 ai-server 的标准日志位置、输出格式、按模块分类的建议,以及 Electron 客户端主进程日志、渲染进程控制台和 electron-updater 日志。列出关键监控指标:PostgreSQL/pgvector 连接数与慢查询、Redis 命中率与内存、Elasticsearch 索引状态、Neo4j 连接、DuckDB 打开案件数、向量模型加载时间、Agent SSE 心跳、文件上传大小、登录成功率。说明如何使用 Spring Actuator、系统监控工具或外部 APM 采集这些指标。提供常见故障排查清单:登录后 503、跨域失败、Agent 对话无响应、RAG 向量检索为空、清洗模板匹配失败、离线地图 PMTiles 加载失败、许可证校验失败、自动更新失败、进程卡死等。对每个问题给出现象、可能原因、定位步骤和修复建议,并关联 deploy/env.sh 中相关配置项。补充备份与恢复建议:PostgreSQL/pgvector 全量与增量备份、Redis 持久化、本地文件存储归档、客户端用户数据目录迁移。",
- "progress_status": "completed",
- "dependent_files": "deploy/env.sh,ai-electron/package.json,ai-electron/electron/main.ts,ai-gateway/pom.xml,ai-server/pom.xml",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "deploy/env.sh",
- "ai-electron/package.json",
- "ai-electron/electron/main.ts",
- "ai-gateway/pom.xml",
- "ai-server/pom.xml"
- ]
- },
- {
- "id": "9114554a-942e-43cd-86b4-e40384923260",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "搜索模块 search",
- "description": "business-search",
- "prompt": "为搜索模块 search 创建详细文档。说明该模块提供文档索引、全文检索、查询服务和初始化器,用于加速对案件数据、Agent 内容、清洗结果和知识库的检索。解释搜索服务与 PostgreSQL/pgvector 的关系,以及是否结合向量检索或传统全文索引。梳理索引模型、分词策略、查询语法、权重和分页机制。给出示例:关键词搜索、按案件/用户维度过滤、搜索结果高亮、增量索引更新。补充搜索性能调优、索引重建、缓存策略和与 Agent RAG 集成的注意事项。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/insight_agent_tables.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/insight_agent_tables.sql"
- ]
- },
- {
- "id": "9b97082f-66c1-4878-9a7d-5e920d6b45a0",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "pgvector 向量表与 DuckDB 临时数据源",
- "description": "vector-and-temporary-data-sources",
- "prompt": "创建 pgvector 向量表与 DuckDB 临时数据源的数据库设计说明。说明项目中哪些表使用 PostgreSQL + pgvector 存储向量嵌入,用于 Agent RAG、知识库相似检索和意图识别;哪些场景使用 DuckDB JDBC 作为临时数据源进行本地分析或测试。对比两种数据源的设计目标、数据类型、索引策略和生命周期。给出向量维度、相似度检索参数、更新与重建索引的注意事项。说明临时数据与持久化业务数据的边界,以及清理策略、备份恢复和性能调优建议。若仓库中存在具体的 pgvector 建表脚本或向量表命名约定,应一并记录。",
- "progress_status": "completed",
- "dependent_files": "sql/*.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "sql/*.sql"
- ]
- },
- {
- "id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "桌面客户端",
- "description": "desktop-client",
- "prompt": "为 Electron 桌面客户端编写详细文档。说明主进程生命周期(ai-electron/electron/main.ts)、preload 桥接的安全模型(bridge.ts、index.ts)、窗口控制器(windowCtl.ts)和服务封装。解释前端根组件 App.vue 如何初始化主题、国际化、水印和授权单元,以及 main.ts 如何挂载应用。说明客户端与服务端地址绑定、localStorage 缓存、自动更新(electron-updater)、离线地图(MapLibre GL + PMTiles china.pmtiles)和 regInfo.exe 许可证校验的基本流程。给出新增页面、组件、IPC 接口和 Electron service 的示例。包含常见问题:主进程崩溃、preload 权限不足、地图加载失败、授权信息不显示等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/electron/main.ts,ai-electron/electron/preload/index.ts,ai-electron/electron/preload/bridge.ts,ai-electron/electron/controller/windowCtl.ts,ai-electron/electron/service/window/,ai-electron/frontend/src/App.vue,ai-electron/frontend/src/main.ts,ai-electron/package.json,ai-electron/frontend/package.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 5,
- "kk_dependent_files": [
- "ai-electron/electron/main.ts",
- "ai-electron/electron/preload/index.ts",
- "ai-electron/electron/preload/bridge.ts",
- "ai-electron/electron/controller/windowCtl.ts",
- "ai-electron/electron/service/window/",
- "ai-electron/frontend/src/App.vue",
- "ai-electron/frontend/src/main.ts",
- "ai-electron/package.json",
- "ai-electron/frontend/package.json"
- ]
- },
- {
- "id": "ea4e0532-760a-4956-9200-cd6202cba1a3",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "离线地图与 PMTiles 配置",
- "description": "desktop-offline-map",
- "prompt": "为离线地图与 PMTiles 配置编写详细文档。说明前端如何使用 MapLibre GL 和 PMTiles 加载本地 china.pmtiles,offlineMap.ts 中如何构建瓦片源、加载 style(如 behavior-spacetime-style.json),以及 MapLocalSettingModal.vue 如何管理地图本地路径、样式切换和配置保存。结合 readme.md 中关于栅格地图配置、激活命令和 regInfo.exe 的说明,解释许可证校验与地图加载之间的关系:只有许可证有效时才允许加载离线地图数据。说明地图服务的初始化时机、资源目录 public/resource/map 的结构、以及如何替换其他 PMTiles 文件或样式。给出新增地图图层、更换离线地图源、调试地图加载失败的示例。包含常见问题:china.pmtiles 无法加载、样式 JSON 报错、地图空白、许可证无效导致地图禁用、PMTiles 路径错误等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/src/core/utils/map/offlineMap.ts,ai-electron/frontend/src/core/layouts/default/setting/components/MapLocalSettingModal.vue,ai-electron/frontend/public/resource/map/behavior-spacetime-style.json,readme.md",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "ai-electron/frontend/src/core/utils/map/offlineMap.ts",
- "ai-electron/frontend/src/core/layouts/default/setting/components/MapLocalSettingModal.vue",
- "ai-electron/frontend/public/resource/map/behavior-spacetime-style.json",
- "readme.md"
- ]
- },
- {
- "id": "f42a38f1-89eb-4f42-a87f-26d81c3aaf9b",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "定时任务与工作空间清理",
- "description": "scheduled-tasks-workspace-cleanup",
- "prompt": "编写定时任务与工作空间清理文档。说明系统启动后用于清理 Agent Workspace、临时文件、下载日志、索引残留等任务的调度策略和执行频率。解释工作空间的目录结构、生命周期、与用户/会话的关系,以及清理失败时的重试或告警策略。给出运维操作建议:调整清理周期、监控磁盘占用、定位无法删除的文件。补充故障排查:任务未执行、权限不足、路径不存在、清理过于激进导致正在使用的文件丢失等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "layer_level": 1,
- "order": 5,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "198e92ee-5762-48f9-835d-17889a315be1",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "网关粘性路由",
- "description": "gateway-sticky-routing",
- "prompt": "创建网关粘性路由的详细文档。解释 StickyRouteFilter 的核心逻辑:如何从请求 token/username 解析 userId,查找已绑定的 ai-server 节点,重写 GATEWAY_REQUEST_URL_ATTR 并追加 X-Gateway-Node 响应头。说明 LoginResponseFilter 在登录成功后如何将用户绑定到具体服务节点,LoginRequestFilter 如何标记登录请求。介绍 GatewayRegistry 的服务/节点注册表内存快照与定时对账机制、NodeHealthRegistry 的健康检查、CORS 配置、RequestIdFilter 和 GatewayErrorHandler。补充网关管理接口、503 错误处理、节点下线时的行为,以及调试粘性路由问题的方法。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java,ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java,sql/gateway.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 6,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/route/StickyRouteFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginResponseFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/filter/LoginRequestFilter.java",
- "ai-gateway/src/main/java/com/zsjz/gateway/GatewayApplication.java",
- "sql/gateway.sql"
- ]
- },
- {
- "id": "1a07a3c6-8227-4d21-afb1-f36b3131bb56",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "数据建模模块 dm",
- "description": "business-dm",
- "prompt": "为数据建模模块 dm 创建详细文档。说明该模块负责数据建模、文件识别、AI 画像、边配置和清理错误日志,是连接原始数据与业务查询的重要中间层。解释 dm 如何通过文件识别推断表结构、生成 AI 画像、定义实体间边关系,并将结果持久化供 graph、agent、aiclean 等模块使用。梳理建模元数据模型、文件上传识别流程、画像字段映射、边配置结构和错误日志格式。给出示例:上传 CSV/Excel 进行自动建模、配置实体边、查看 AI 画像、导出建模结果。补充大文件识别性能优化、字段类型推断准确率提升和与外部表 external 的协作方式。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/external_tables.sql,sql/table_data_1.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 6,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/external_tables.sql",
- "sql/table_data_1.sql"
- ]
- },
- {
- "id": "4816f0d4-6e83-43f7-837f-f13d946b1d37",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "人员数据接口",
- "description": "person-api",
- "prompt": "创建人员数据接口的 API 文档,覆盖人员基本信息、人员分组、亲密度、常住人口和数据画像等控制器。记录每个接口的 HTTP 方法、URL、请求参数、响应字段、分页格式和错误码。说明人员实体与通话、交易、轨迹、治理树等业务数据之间的关联查询方式,以及敏感字段的安全处理。提供查询某人员及其关系的 curl 示例,并说明人员不存在、分组为空、亲密度数据缺失等常见问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/person/controller/PersonBasicInfoController.java,ai-server/src/main/java/com/zsjz/ai/module/person/controller/PersonGroupController.java,ai-server/src/main/java/com/zsjz/ai/module/person/controller/IntimacyController.java,ai-server/src/main/java/com/zsjz/ai/module/person/controller/ResidentPopulationController.java,ai-server/src/main/java/com/zsjz/ai/module/person/controller/DataProfileController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 6,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/person/controller/PersonBasicInfoController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/person/controller/PersonGroupController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/person/controller/IntimacyController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/person/controller/ResidentPopulationController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/person/controller/DataProfileController.java"
- ]
- },
- {
- "id": "6ac2d682-f759-41c6-8a1d-82b6a1b11135",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "构建、打包与自动更新",
- "description": "desktop-build-packaging-updater",
- "prompt": "为 Electron 桌面客户端的构建、打包与自动更新编写详细文档。说明 ai-electron/package.json 中的 scripts:dev、build、start、dev-frontend、dev-electron、build-frontend、build-electron、icon、build-w/m/l 等命令分别做什么,以及 ee-bin、electron-builder、vitest、electron-rebuild 的作用。解释 build 流程如何先构建前端,再构建 Electron 包,最后执行加密;说明 win64、win_e、mac_arm64、mac、linux 等平台构建目标的区别。说明 electron-updater 依赖如何参与客户端自动更新,以及 README.md 和 README.zh-CN.md 中关于安装、卸载、regInfo.exe、激活命令的使用说明。给出新增平台构建脚本、修改打包产物、接入更新服务器的示例。包含常见问题:前端构建失败、Electron 原生模块编译失败、图标缺失、安装包签名失败、自动更新服务器不可达等。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/package.json,ai-electron/frontend/package.json,ai-electron/README.md,ai-electron/README.zh-CN.md",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "layer_level": 1,
- "order": 6,
- "kk_dependent_files": [
- "ai-electron/package.json",
- "ai-electron/frontend/package.json",
- "ai-electron/README.md",
- "ai-electron/README.zh-CN.md"
- ]
- },
- {
- "id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "后端服务架构",
- "description": "backend-service",
- "prompt": "编写后端服务架构文档,聚焦 ai-server 的 Spring Boot 应用组织方式。说明模块化原则:plat、agent、aiclean、knowledge、graph、person、call、trans、track、govern、search、dm、otg、external 等业务模块各自负责的领域对象、Controller/Service/Mapper 分层结构。解释多数据源配置(MyBatis-Plus + Dynamic Datasource)如何切换 PostgreSQL/DuckDB/pgvector;说明 Sa-Token 认证、SSE 心跳保活、定时任务与工作空间清理等横切能力。给出新增业务模块的标准模板:新建 module、定义 entity/mapper/service/controller,注册路由,并在数据库脚本中维护表结构。补充性能与可观测性建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-server/src/main/java/com/zsjz/ai/,ai-server/src/main/resources/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 7,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-server/src/main/java/com/zsjz/ai/",
- "ai-server/src/main/resources/"
- ]
- },
- {
- "id": "27d63566-5248-4f8a-8128-45e41b2cde9e",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "通话数据接口",
- "description": "call-data-api",
- "prompt": "创建通话数据接口的 API 文档,覆盖通话记录、夜间通话、连续通话和敏感通话控制器。记录每个接口的 HTTP 方法、URL、请求参数(如号码、时间范围、案件号)、响应字段、分页和排序方式。说明通话数据在调查场景中的用途,以及与人员、轨迹、治理树的关联关系。提供典型查询示例,并说明时间范围过大、号码为空、数据缺失等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallRecordController.java,ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallNightController.java,ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallContinuousController.java,ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallSensitiveController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 7,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallRecordController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallNightController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallContinuousController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/call/controller/CallSensitiveController.java"
- ]
- },
- {
- "id": "ad0de49b-7550-43d1-b3ec-7c96d17a3729",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "时序与特殊日期模块 otg",
- "description": "business-otg",
- "prompt": "为时序与特殊日期模块 otg 创建详细文档。说明该模块管理时序数据、特殊日期配置和搜索控制器,为通话、交易、轨迹等业务提供时间维度的增强能力。解释什么是特殊日期(节假日、工作日、自定义事件日)以及它们如何影响行为分析和异常检测。梳理时序实体结构、时间粒度、特殊日期表、控制器路由和处理管道。给出示例:按工作日/节假日筛选通话或交易、标记特殊日期、结合时序趋势做异常报警。补充时序数据写入性能、时间索引优化和与其他模块共享时间上下文的最佳实践。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/insight_agent_tables.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 7,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/insight_agent_tables.sql"
- ]
- },
- {
- "id": "4dfe4a9e-9c32-4f75-8314-3b06172b0d57",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "交易数据接口",
- "description": "trans-data-api",
- "prompt": "创建交易数据接口的 API 文档,覆盖资金流水、快速流水、固定存款、金融、现金、大额、频率、连续、卡持、敏感及对应 Key 配置等控制器。对每个接口说明 HTTP 方法、URL、请求参数、响应字段、分页、排序和错误码。说明交易数据与人员、账户、交易对手、治理树的关系,以及高频、大额、敏感交易在调查分析中的作用。提供按账户或人员查询交易的示例,并说明数据量大、时间范围过长、金额或时间格式错误等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransRecordController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFundFlowController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFastFundFlowController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFixedDepositController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFinancialController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransCashFlowController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransBigController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFrequencyController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransContinuousController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransCardHoldController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransSensitiveController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/FixedDepositKeyController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/FinancialKeyController.java,ai-server/src/main/java/com/zsjz/ai/module/trans/controller/CashKeyController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 8,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransRecordController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFundFlowController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFastFundFlowController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFixedDepositController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFinancialController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransCashFlowController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransBigController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransFrequencyController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransContinuousController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransCardHoldController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/TransSensitiveController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/FixedDepositKeyController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/FinancialKeyController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/trans/controller/CashKeyController.java"
- ]
- },
- {
- "id": "78886141-b043-4c17-a6c6-a2e7b67aea9a",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "外部表模块 external",
- "description": "business-external",
- "prompt": "为外部表模块 external 创建详细文档。说明该模块用于管理外部表、EntryRec 映射、协居、车辆违法、罪犯等第三方或外部来源数据,并与内部 person、call、trans、track 等实体打通。解释外部表的注册、字段映射、数据来源标识、权限控制和案件隔离机制。梳理 external_tables、external_table_field 等核心表结构,以及 EntryRec 映射如何把外部记录转换为内部可用对象。给出示例:新增外部数据源、配置字段映射、查询协居/车辆违法/罪犯信息、与内部人员匹配。补充外部数据同步策略、脏数据清洗、字段对齐和性能优化建议。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/external_tables.sql,sql/external_table_field.sql,sql/case_table.sql,sql/case_table_1.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "layer_level": 1,
- "order": 8,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/external_tables.sql",
- "sql/external_table_field.sql",
- "sql/case_table.sql",
- "sql/case_table_1.sql"
- ]
- },
- {
- "id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "Agent 与 RAG",
- "description": "agent-rag",
- "prompt": "为 Agent 与 RAG 功能创建详细文档。说明 Agent 对话的整体流程:前端发起 SSE 请求,后端通过 AgentScope 调用 LLM Provider(DashScope/Ollama/OpenAI),并结合 pgvector 做向量检索、Schema Catalog、意图识别、Python 执行器、附件上传、Artifact 管理和 Insight 输出。解释 Workspace Catalog、AgentMessage、AgentChatSession、RagIndexStatus 等关键数据模型之间的关系。给出典型调用示例:发送消息、选择模型、开启 RAG、查看工具调用结果。说明向量索引状态、嵌入调试接口和知识库集成。补充常见问题:SSE 断连、模型不可用、向量检索无结果、Python 执行器权限或超时等。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-electron/frontend/src/ai/,ai-electron/frontend/src/call/,ai-electron/frontend/src/core/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 8,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-electron/frontend/src/ai/",
- "ai-electron/frontend/src/call/",
- "ai-electron/frontend/src/core/"
- ]
- },
- {
- "id": "af886b13-8d59-4e6e-b5ea-40ddd68ef0a5",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "轨迹数据接口",
- "description": "track-data-api",
- "prompt": "创建轨迹数据接口的 API 文档,覆盖同行、同住、见面、同城、基站、快递信息等控制器。记录每个接口的 HTTP 方法、URL、请求参数、响应字段、分页和错误码。说明轨迹数据如何支持人员关联分析和时空调查,以及与人员、通话、交易、治理树的关系。提供按人员或时间范围查询轨迹的示例,并说明数据缺失、坐标无效、时间范围异常等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackTogetherTravelController.java,ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackTogetherLiveController.java,ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackMeetController.java,ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackEnLocalController.java,ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackCellTowerController.java,ai-server/src/main/java/com/zsjz/ai/module/track/controller/ExpressInfoController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 9,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackTogetherTravelController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackTogetherLiveController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackMeetController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackEnLocalController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/TrackCellTowerController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/track/controller/ExpressInfoController.java"
- ]
- },
- {
- "id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "AI 数据清洗",
- "description": "ai-data-cleaning",
- "prompt": "编写 AI 数据清洗功能的详细文档。说明清洗模板、同义词、字段短名映射、批量清洗任务和清洗结果统计的数据模型与业务流程。解释 AiCleanTemplate、Synonym、FieldMapping、AiCleanRowStats 等实体之间的关系,以及清洗任务如何通过向量索引或规则匹配完成智能清洗。给出用户上传 CSV/Excel、匹配模板、执行清洗、查看结果和导出结果的完整示例。说明清洗任务的执行状态、错误日志和重试策略。补充常见问题:字段映射不准确、同义词未生效、批量任务卡住、向量索引缺失等。",
- "progress_status": "completed",
- "dependent_files": "sql/ai_clean.sql,sql/ai_clean_field_short_names.sql,sql/ai_clean_row_stats.sql,sql/ai_clean_synonym_init.sql,ai-electron/frontend/src/case/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 9,
- "kk_dependent_files": [
- "sql/ai_clean.sql",
- "sql/ai_clean_field_short_names.sql",
- "sql/ai_clean_row_stats.sql",
- "sql/ai_clean_synonym_init.sql",
- "ai-electron/frontend/src/case/"
- ]
- },
- {
- "id": "8c232144-b2f6-4c52-b4c6-5b9bf7ea9ffa",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "治理与其他业务接口",
- "description": "govern-and-other-business-api",
- "prompt": "创建治理与其他业务接口的 API 文档,覆盖治理树、治理配置、搜索、时序、特殊日期和数据建模等控制器。记录各接口的 HTTP 方法、URL、请求参数、响应字段、分页和错误码。说明治理树在调查组织关系建模中的作用,搜索与时间序列在 otg 模块中的用途,以及 dm 数据建模接口如何辅助外部表和清洗流程。提供典型调用示例,并说明治理树结构异常、搜索结果为空、时序数据不完整、建模配置错误等问题的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-server/src/main/java/com/zsjz/ai/module/govern/controller/GovernController.java,ai-server/src/main/java/com/zsjz/ai/module/govern/controller/GovernTreeController.java,ai-server/src/main/java/com/zsjz/ai/module/otg/controller/SearchController.java,ai-server/src/main/java/com/zsjz/ai/module/otg/controller/TimeSeriesController.java,ai-server/src/main/java/com/zsjz/ai/module/otg/controller/SpecialDateController.java,ai-server/src/main/java/com/zsjz/ai/module/dm/controller/DmController.java",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "parent_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "layer_level": 1,
- "order": 10,
- "kk_dependent_files": [
- "ai-server/src/main/java/com/zsjz/ai/module/govern/controller/GovernController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/govern/controller/GovernTreeController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/otg/controller/SearchController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/otg/controller/TimeSeriesController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/otg/controller/SpecialDateController.java",
- "ai-server/src/main/java/com/zsjz/ai/module/dm/controller/DmController.java"
- ]
- },
- {
- "id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "知识与向量检索",
- "description": "knowledge-vector-retrieval",
- "prompt": "创建知识与向量检索模块的文档。说明知识库、文档管理、向量库、下载日志和嵌入调试接口的设计与用法。解释文档如何被读取、向量化、存储到 pgvector,并在 Agent/RAG 检索中被召回。说明知识库与清洗模板、Agent Schema Catalog 的关系。给出上传文档、查看索引状态、调试 embedding、进行相似检索的示例。补充向量维度、索引刷新策略、文档去重、检索召回率调优和性能注意事项。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,ai-electron/frontend/src/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 10,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "ai-electron/frontend/src/ai/"
- ]
- },
- {
- "id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "业务数据模块",
- "description": "business-modules",
- "prompt": "汇总业务数据模块的总体文档,说明 person、call、trans、track、govern、search、dm、otg、external 等模块在调查场景中的职责和相互关系。解释这些模块如何围绕案件数据源、CaseDataSource、CaseInfo 和外部表组织数据,并通过 MyBatis-Plus 访问 PostgreSQL/pgvector/DuckDB。给出跨模块查询的典型场景:根据人员查通话、根据通话查交易、结合治理树和轨迹进行分析。说明数据建模 dm、外部表 external、时序 otg 和搜索 search 如何增强调查分析能力。补充性能优化建议和常见查询模式。",
- "progress_status": "completed",
- "dependent_files": "ai-server/pom.xml,sql/case_table.sql,sql/case_table_1.sql,sql/external_tables.sql,sql/table_data_1.sql,sql/insight_agent_tables.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 11,
- "kk_dependent_files": [
- "ai-server/pom.xml",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/external_tables.sql",
- "sql/table_data_1.sql",
- "sql/insight_agent_tables.sql"
- ]
- },
- {
- "id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "数据库设计",
- "description": "database-design",
- "prompt": "创建完整的数据库设计文档。按业务域说明 PostgreSQL 主库表结构,包括 gateway_service/gateway_node、用户与授权、Agent 专家与工具、聊天附件、清洗模板与同义词、行统计、case_table、external_tables、insight_agent_tables、plat、user 等。说明 pgvector 向量表、DuckDB 临时数据源的用途和区别。给出 ER 关系图、关键字段定义、主外键、索引约束和业务规则。说明初始化脚本 sql/*.sql 的执行顺序、迁移规范和回滚注意事项。补充数据安全、访问控制和备份恢复建议。",
- "progress_status": "completed",
- "dependent_files": "sql/gateway.sql,sql/agent_expert.sql,sql/agent_tool.sql,sql/ai_clean.sql,sql/ai_clean_field_short_names.sql,sql/ai_clean_row_stats.sql,sql/ai_clean_synonym_init.sql,sql/case_table.sql,sql/case_table_1.sql,sql/chat_attachment.sql,sql/create_table_2.sql,sql/external_table_field.sql,sql/external_tables.sql,sql/insight_agent_tables.sql,sql/plat.sql,sql/table_data_1.sql,sql/user.sql",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 12,
- "kk_dependent_files": [
- "sql/gateway.sql",
- "sql/agent_expert.sql",
- "sql/agent_tool.sql",
- "sql/ai_clean.sql",
- "sql/ai_clean_field_short_names.sql",
- "sql/ai_clean_row_stats.sql",
- "sql/ai_clean_synonym_init.sql",
- "sql/case_table.sql",
- "sql/case_table_1.sql",
- "sql/chat_attachment.sql",
- "sql/create_table_2.sql",
- "sql/external_table_field.sql",
- "sql/external_tables.sql",
- "sql/insight_agent_tables.sql",
- "sql/plat.sql",
- "sql/table_data_1.sql",
- "sql/user.sql"
- ]
- },
- {
- "id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "API 接口参考",
- "description": "api-reference",
- "prompt": "创建清鉴 AI 调查工具的 API 接口参考文档。按网关接口、系统基础 plat、Agent 对话、AI 清洗、知识检索、图谱、人员、通话、交易、轨迹、治理、外部表、数据建模等分组,说明 REST 接口的 HTTP 方法、URL 模式、请求参数、响应体结构和错误码。对于 Agent 对话,额外说明 SSE 连接建立、事件类型、消息格式和心跳保活协议。说明认证方式(x-token/Sa-Token)、跨域策略、分页、上传下载和速率限制。给出 curl 或前端调用示例,并说明常见错误(401、403、503、SSE 中断)的排查方法。",
- "progress_status": "completed",
- "dependent_files": "ai-gateway/src/main/java/com/zsjz/gateway/controller/AdminController.java,ai-server/src/main/java/com/zsjz/ai/",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 13,
- "kk_dependent_files": [
- "ai-gateway/src/main/java/com/zsjz/gateway/controller/AdminController.java",
- "ai-server/src/main/java/com/zsjz/ai/"
- ]
- },
- {
- "id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "安全与许可证",
- "description": "security-license",
- "prompt": "编写安全与许可证文档。说明 Sa-Token 会话与 token 管理、Gateway 中 token/username 解析一致性、登录绑定与账号顶下线/踢下线后的会话释放机制。详细解释 regInfo.exe 许可证校验流程:机器码、过期时间、单位信息校验,以及客户端如何读取授权单元并写入 watermark。说明本地文件保护、Electron 主进程与渲染进程隔离、敏感配置和环境变量覆盖的安全考虑。给出许可证失效、token 不一致、账号被顶下线等问题的排查步骤。",
- "progress_status": "completed",
- "dependent_files": "readme.md,ai-gateway/pom.xml,ai-electron/package.json",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 14,
- "kk_dependent_files": [
- "readme.md",
- "ai-gateway/pom.xml",
- "ai-electron/package.json"
- ]
- },
- {
- "id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "部署与运维",
- "description": "deployment-operations",
- "prompt": "创建部署与运维指南。说明生产环境搭建步骤:PostgreSQL/pgvector、Redis、DuckDB 初始化,环境变量配置(deploy/env.sh),ai-gateway 和 ai-server 的启动顺序与配置差异。说明 Electron 客户端的构建、打包和自动更新流程,以及 Windows/Linux/macOS 安装包卸载脚本 cmd/uninstall.* 的用法。给出多节点扩展方案:多个 ai-server 节点、负载均衡、粘性路由健康检查和故障转移。补充日志位置、监控指标、备份恢复、性能调优和常见故障排查清单。",
- "progress_status": "completed",
- "dependent_files": "deploy/env.sh,cmd/uninstall.bat,cmd/uninstall.sh,ai-electron/package.json,ai-electron/frontend/bin/build.sh,ai-electron/frontend/bin/install.sh",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 15,
- "kk_dependent_files": [
- "deploy/env.sh",
- "cmd/uninstall.bat",
- "cmd/uninstall.sh",
- "ai-electron/package.json",
- "ai-electron/frontend/bin/build.sh",
- "ai-electron/frontend/bin/install.sh"
- ]
- },
- {
- "id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "测试与质量保证",
- "description": "testing-quality",
- "prompt": "编写测试与质量保证文档。说明单元测试、E2E 测试和 LLM 模板匹配测试的组织方式。重点介绍 docs/testing/ai-template-match-test-cases.md 和 fixtures/ai-llm-match-20261026 下的 run_tests.py、generate.py、manifest.json 等测试夹具,解释如何生成测试数据、运行测试和比对结果。说明前端 ESLint、Stylelint、Vitest 配置,以及后端测试目录的约定。给出新增测试用例、修复回归问题和调试 LLM 匹配失败的步骤。补充代码质量、覆盖率、持续集成和发布前检查建议。",
- "progress_status": "completed",
- "dependent_files": "docs/testing/ai-template-match-test-cases.md,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/run_tests.py,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/manifest.json,docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/generate.py,ai-electron/vitest.config.mts,ai-electron/frontend/eslint.config.mjs,ai-electron/frontend/stylelint.config.mjs",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 16,
- "kk_dependent_files": [
- "docs/testing/ai-template-match-test-cases.md",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/run_tests.py",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/manifest.json",
- "docs/testing/fixtures/docs/testing/fixtures/ai-llm-match-20261026/generate.py",
- "ai-electron/vitest.config.mts",
- "ai-electron/frontend/eslint.config.mjs",
- "ai-electron/frontend/stylelint.config.mjs"
- ]
- },
- {
- "id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "name": "开发者指南",
- "description": "developer-guide",
- "prompt": "创建面向贡献者的开发者指南。说明如何添加新后端模块、新前端页面、新 IPC 接口、新数据库表和变更脚本。给出代码风格要求:Java、TypeScript/Vue、SQL、Shell/Batch 的约定,以及 Prettier、ESLint、Stylelint 配置。列出常用命令:Maven 构建、pnpm dev/build/start、Electron 打包、安装/卸载脚本。说明提交规范、分支策略、常见问题排查和 FAQ。补充调试技巧:Gateway 粘性路由日志、Agent SSE 调试、pgvector 向量检索验证、地图与许可证问题定位。",
- "progress_status": "completed",
- "dependent_files": "ai-electron/frontend/package.json,ai-electron/package.json,ai-server/pom.xml,ai-gateway/pom.xml,ai-electron/frontend/.prettierrc.mjs,ai-electron/frontend/eslint.config.mjs",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z",
- "order": 17,
- "kk_dependent_files": [
- "ai-electron/frontend/package.json",
- "ai-electron/package.json",
- "ai-server/pom.xml",
- "ai-gateway/pom.xml",
- "ai-electron/frontend/.prettierrc.mjs",
- "ai-electron/frontend/eslint.config.mjs"
- ]
- }
- ],
- "wiki_items": [
- {
- "id": "156aa516-49d6-4670-b3cf-453dbd239227",
- "catalog_id": "156aa516-49d6-4670-b3cf-453dbd239227",
- "title": "网关管理接口",
- "description": "gateway-admin-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "353e0550-ef39-4028-9f2f-c3733cbe4fcc",
- "catalog_id": "353e0550-ef39-4028-9f2f-c3733cbe4fcc",
- "title": "Sa-Token 认证与会话管理",
- "description": "sa-token-auth",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "4096358f-33de-4fc0-96f5-52e05a503884",
- "catalog_id": "4096358f-33de-4fc0-96f5-52e05a503884",
- "title": "代码风格与规范",
- "description": "coding-standards",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "47bd7bc4-2fae-423e-971a-778154ccb8e0",
- "catalog_id": "47bd7bc4-2fae-423e-971a-778154ccb8e0",
- "title": "项目概览",
- "description": "project-overview",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "4980a173-ddc7-4a67-841d-a8708fe3d5dc",
- "catalog_id": "4980a173-ddc7-4a67-841d-a8708fe3d5dc",
- "title": "知识库管理",
- "description": "knowledge-base-management",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "51426ffe-15ab-4186-b1a9-75d4fdbf3c6f",
- "catalog_id": "51426ffe-15ab-4186-b1a9-75d4fdbf3c6f",
- "title": "人员模块 person",
- "description": "business-person",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "7c424667-c8c7-4f7a-bbd7-af27a21ef237",
- "catalog_id": "7c424667-c8c7-4f7a-bbd7-af27a21ef237",
- "title": "Agent 对话总览与 SSE 流式交互",
- "description": "agent-overview",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "806c0f96-05b8-473c-968e-d617c7a8bea4",
- "catalog_id": "806c0f96-05b8-473c-968e-d617c7a8bea4",
- "title": "系统架构总览",
- "description": "system-architecture-overview",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ab6a7934-379d-4064-ab15-60187c9fb4ab",
- "catalog_id": "ab6a7934-379d-4064-ab15-60187c9fb4ab",
- "title": "Spring Boot 应用入口与启动流程",
- "description": "spring-boot-application",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "bbe3d5c7-9708-45a5-9b0e-155f8a79506b",
- "catalog_id": "bbe3d5c7-9708-45a5-9b0e-155f8a79506b",
- "title": "StickyRouteFilter 粘性路由核心逻辑",
- "description": "sticky-route-filter",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "bd014943-9fdc-41c3-aeda-440568e4a340",
- "catalog_id": "bd014943-9fdc-41c3-aeda-440568e4a340",
- "title": "测试总览与分层策略",
- "description": "testing-overview",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c9a620a7-1b3c-4d58-85b0-2a21724b19d2",
- "catalog_id": "c9a620a7-1b3c-4d58-85b0-2a21724b19d2",
- "title": "环境准备与初始化",
- "description": "deployment-environment-setup",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "dfcc2c4e-4392-42f2-9bab-4f652761f880",
- "catalog_id": "dfcc2c4e-4392-42f2-9bab-4f652761f880",
- "title": "网关路由表结构",
- "description": "gateway-schema",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "e6253e7f-3ead-4cd2-84c5-bd9c93288a0e",
- "catalog_id": "e6253e7f-3ead-4cd2-84c5-bd9c93288a0e",
- "title": "Electron 主进程与生命周期",
- "description": "electron-main-process",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "f5ed2513-391a-4b75-8007-bb3d5216e4df",
- "catalog_id": "f5ed2513-391a-4b75-8007-bb3d5216e4df",
- "title": "清洗模板与字段映射",
- "description": "ai-clean-templates",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "114b42fc-097d-4ff9-b78a-b1f128492359",
- "catalog_id": "114b42fc-097d-4ff9-b78a-b1f128492359",
- "title": "快速开始",
- "description": "getting-started",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "1acb4aac-20b1-4e60-9d3a-4d49412f11ef",
- "catalog_id": "1acb4aac-20b1-4e60-9d3a-4d49412f11ef",
- "title": "文档上传、解析与索引生命周期",
- "description": "knowledge-doc-lifecycle",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "21342d52-98e3-4654-9724-072359e1c6f2",
- "catalog_id": "21342d52-98e3-4654-9724-072359e1c6f2",
- "title": "后端服务部署",
- "description": "deployment-backend-services",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "22ed1e10-d4ca-42c7-801c-8bda48b58052",
- "catalog_id": "22ed1e10-d4ca-42c7-801c-8bda48b58052",
- "title": "登录请求与响应过滤链",
- "description": "login-binding-filters",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "30a9faef-23f4-406d-8889-3da2c96ba102",
- "catalog_id": "30a9faef-23f4-406d-8889-3da2c96ba102",
- "title": "LLM Provider 管理与模型工厂",
- "description": "agent-model-provider",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "41e369d2-9662-4e1b-b62f-21de646b34c9",
- "catalog_id": "41e369d2-9662-4e1b-b62f-21de646b34c9",
- "title": "Gateway Token 一致性与登录绑定",
- "description": "gateway-token-consistency",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "48ee09b6-d73e-4c97-ab30-872d6271b0d5",
- "catalog_id": "48ee09b6-d73e-4c97-ab30-872d6271b0d5",
- "title": "桌面客户端架构",
- "description": "desktop-client-architecture",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "4b666607-23fd-418b-926a-f561218179c6",
- "catalog_id": "4b666607-23fd-418b-926a-f561218179c6",
- "title": "构建命令与脚本",
- "description": "build-and-scripts",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "5b47e58f-5090-4cfd-8288-e866003e9231",
- "catalog_id": "5b47e58f-5090-4cfd-8288-e866003e9231",
- "title": "LLM 模板匹配测试与夹具",
- "description": "llm-template-matching-tests",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "5c689d53-7384-4633-95ad-b40096e9b00b",
- "catalog_id": "5c689d53-7384-4633-95ad-b40096e9b00b",
- "title": "平台基础与用户授权表",
- "description": "plat-user-schema",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "9ca9022c-45b9-4e6b-89d3-34eac1d4ee30",
- "catalog_id": "9ca9022c-45b9-4e6b-89d3-34eac1d4ee30",
- "title": "同义词管理",
- "description": "ai-clean-synonyms",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "b474a118-2219-4f66-863d-a7f18d59e5df",
- "catalog_id": "b474a118-2219-4f66-863d-a7f18d59e5df",
- "title": "模块化架构与统一分层",
- "description": "module-architecture",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c52c7b80-86ea-4f92-8179-6a86a77494a3",
- "catalog_id": "c52c7b80-86ea-4f92-8179-6a86a77494a3",
- "title": "认证与系统基础接口",
- "description": "auth-and-system-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c5c9d701-000d-421e-80cd-170bb6739623",
- "catalog_id": "c5c9d701-000d-421e-80cd-170bb6739623",
- "title": "通话模块 call",
- "description": "business-call",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "f77992a3-a80c-4ebc-9f77-8faf081f3420",
- "catalog_id": "f77992a3-a80c-4ebc-9f77-8faf081f3420",
- "title": "Preload 桥接与安全模型",
- "description": "electron-preload-bridge",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "02425a89-4f3c-4fcb-8125-016b7cc6e537",
- "catalog_id": "02425a89-4f3c-4fcb-8125-016b7cc6e537",
- "title": "RAG Schema、向量检索与知识库集成",
- "description": "agent-rag-schema-vector",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "034e56aa-57ff-407a-ae4c-7eb6f78922e0",
- "catalog_id": "034e56aa-57ff-407a-ae4c-7eb6f78922e0",
- "title": "Agent 对话与 RAG 接口",
- "description": "agent-chat-and-rag-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "087bb53b-235b-4be4-8619-c4f233ed71e3",
- "catalog_id": "087bb53b-235b-4be4-8619-c4f233ed71e3",
- "title": "Agent、专家、工具与聊天附件表",
- "description": "agent-schemas",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "2430cac4-9893-4fa5-b51c-2d967e0f4e01",
- "catalog_id": "2430cac4-9893-4fa5-b51c-2d967e0f4e01",
- "title": "regInfo.exe 许可证校验流程",
- "description": "reginfo-license-validation",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "279bf8ac-c655-4c5d-9be4-0653f70965fd",
- "catalog_id": "279bf8ac-c655-4c5d-9be4-0653f70965fd",
- "title": "交易模块 trans",
- "description": "business-trans",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "2d92cc7b-fcdd-4353-a322-09eae0d8e610",
- "catalog_id": "2d92cc7b-fcdd-4353-a322-09eae0d8e610",
- "title": "服务注册中心与健康检查",
- "description": "gateway-registry-and-health",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "3cf3d4f3-856a-4d13-acb8-3aa2bf286c04",
- "catalog_id": "3cf3d4f3-856a-4d13-acb8-3aa2bf286c04",
- "title": "技术栈与依赖",
- "description": "technology-stack",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "645f94c6-f003-4b68-b55f-8ed08d10ce69",
- "catalog_id": "645f94c6-f003-4b68-b55f-8ed08d10ce69",
- "title": "网关与粘性路由架构",
- "description": "gateway-sticky-routing-architecture",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "7ed47ff0-8933-4302-ac7f-15ef5c824483",
- "catalog_id": "7ed47ff0-8933-4302-ac7f-15ef5c824483",
- "title": "添加新模块与新功能",
- "description": "adding-new-module",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "82b197df-b35b-47fc-8bef-78cdebd2c2f8",
- "catalog_id": "82b197df-b35b-47fc-8bef-78cdebd2c2f8",
- "title": "批量清洗任务",
- "description": "ai-clean-batch-jobs",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "8b970997-124e-46b3-86f0-da34175ae365",
- "catalog_id": "8b970997-124e-46b3-86f0-da34175ae365",
- "title": "向量存储与检索",
- "description": "knowledge-vector-storage",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "d4244f4c-2490-44b5-b0da-669fa5f4ff93",
- "catalog_id": "d4244f4c-2490-44b5-b0da-669fa5f4ff93",
- "title": "Electron 客户端构建与发布",
- "description": "deployment-electron-client",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "e5327e25-d642-48b6-a00b-3ee3df9a45fc",
- "catalog_id": "e5327e25-d642-48b6-a00b-3ee3df9a45fc",
- "title": "多数据源配置与切换",
- "description": "multi-datasource-config",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "efa5573e-0743-4e8b-adba-e6efadecc9f2",
- "catalog_id": "efa5573e-0743-4e8b-adba-e6efadecc9f2",
- "title": "单元测试与 E2E 测试",
- "description": "unit-testing",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ffe7bd4f-414d-489a-92fa-f265405a7add",
- "catalog_id": "ffe7bd4f-414d-489a-92fa-f265405a7add",
- "title": "窗口控制与跨窗口状态同步",
- "description": "electron-window-control",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "03a0099f-84a3-433f-972a-b9d3b4ad8a03",
- "catalog_id": "03a0099f-84a3-433f-972a-b9d3b4ad8a03",
- "title": "AI 数据清洗接口",
- "description": "ai-clean-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "0b5c5236-0103-4f16-b57a-56e7e7be9713",
- "catalog_id": "0b5c5236-0103-4f16-b57a-56e7e7be9713",
- "title": "前端代码规范与质量工具",
- "description": "frontend-code-quality",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "0e2872d4-dad7-4efb-ade8-a2e5f8e13a86",
- "catalog_id": "0e2872d4-dad7-4efb-ade8-a2e5f8e13a86",
- "title": "目录结构与代码组织",
- "description": "directory-structure",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "258ef8d6-d1f0-4ec5-86c4-67200e3f8c37",
- "catalog_id": "258ef8d6-d1f0-4ec5-86c4-67200e3f8c37",
- "title": "前端根应用与启动流程",
- "description": "frontend-root-application",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "5352975b-7714-4098-a0f1-a8f2946e68b3",
- "catalog_id": "5352975b-7714-4098-a0f1-a8f2946e68b3",
- "title": "安装包卸载与清理",
- "description": "deployment-uninstallation",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "652c39da-67ee-45ba-ad92-262987cc74c1",
- "catalog_id": "652c39da-67ee-45ba-ad92-262987cc74c1",
- "title": "调试与问题排查",
- "description": "debugging-and-troubleshooting",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "684b1d01-a312-48fb-87c4-3e103deb4f35",
- "catalog_id": "684b1d01-a312-48fb-87c4-3e103deb4f35",
- "title": "Electron 安全边界与本地文件保护",
- "description": "electron-security-boundaries",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "84773149-8223-4a20-a62c-5319d4527d3f",
- "catalog_id": "84773149-8223-4a20-a62c-5319d4527d3f",
- "title": "工具包、Python 执行器与 Artifact",
- "description": "agent-tools-python-artifacts",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "971bd1ce-217d-4f0c-a6ad-29840ae2639f",
- "catalog_id": "971bd1ce-217d-4f0c-a6ad-29840ae2639f",
- "title": "轨迹模块 track",
- "description": "business-track",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "9d19f6ee-79cd-4e4a-9a0d-dea1880bbf9c",
- "catalog_id": "9d19f6ee-79cd-4e4a-9a0d-dea1880bbf9c",
- "title": "认证与会话管理",
- "description": "authentication-session",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "bba68a9f-bcb3-4c71-a2eb-1f56005e29f1",
- "catalog_id": "bba68a9f-bcb3-4c71-a2eb-1f56005e29f1",
- "title": "清洗结果与统计",
- "description": "ai-clean-results-and-stats",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "be260c76-7452-4c32-b391-518638e55800",
- "catalog_id": "be260c76-7452-4c32-b391-518638e55800",
- "title": "嵌入调试接口",
- "description": "embedding-debug-interface",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ca6be081-bf0b-43f8-8325-ae3d860af297",
- "catalog_id": "ca6be081-bf0b-43f8-8325-ae3d860af297",
- "title": "网关管理接口",
- "description": "admin-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "d27f0c5a-2dec-48e1-9bdd-d640386cd8ac",
- "catalog_id": "d27f0c5a-2dec-48e1-9bdd-d640386cd8ac",
- "title": "后端服务架构",
- "description": "backend-service-architecture",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "e9ff4b7b-abcf-42ad-b5f1-3c1cd72bbcf1",
- "catalog_id": "e9ff4b7b-abcf-42ad-b5f1-3c1cd72bbcf1",
- "title": "AI 数据清洗模板、同义词与行统计表",
- "description": "ai-clean-schemas",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "13f6442b-ca39-47c8-a5ad-c1ea01c7f014",
- "catalog_id": "13f6442b-ca39-47c8-a5ad-c1ea01c7f014",
- "title": "关键数据流与应用生命周期",
- "description": "data-flow-and-lifecycle",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "28e5b517-e9ac-4377-979e-5f881a6ab9e1",
- "catalog_id": "28e5b517-e9ac-4377-979e-5f881a6ab9e1",
- "title": "SSE 心跳与长连接保活",
- "description": "sse-heartbeat",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "2a0b927e-ea46-48b8-b14d-c57615de3c4d",
- "catalog_id": "2a0b927e-ea46-48b8-b14d-c57615de3c4d",
- "title": "网关基础设施与异常处理",
- "description": "gateway-infrastructure",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "47af0185-c942-40f5-97c0-6bb492b91be9",
- "catalog_id": "47af0185-c942-40f5-97c0-6bb492b91be9",
- "title": "授权单元与水印",
- "description": "desktop-authorization-watermark",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "catalog_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "title": "系统架构设计",
- "description": "system-architecture",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "b637c759-edca-43f8-9a98-8c1657165061",
- "catalog_id": "b637c759-edca-43f8-9a98-8c1657165061",
- "title": "知识库与嵌入调试接口",
- "description": "knowledge-and-embedding-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "bea97b99-9c66-427b-b57b-754f086ecbbe",
- "catalog_id": "bea97b99-9c66-427b-b57b-754f086ecbbe",
- "title": "清洗模板向量索引",
- "description": "ai-clean-vector-index",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c7297910-8fdc-4dc5-b7c9-9a6e1564d183",
- "catalog_id": "c7297910-8fdc-4dc5-b7c9-9a6e1564d183",
- "title": "治理模块 govern",
- "description": "business-govern",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "dc3bc6ae-89fd-4a5e-bbf7-cb1b905401ea",
- "catalog_id": "dc3bc6ae-89fd-4a5e-bbf7-cb1b905401ea",
- "title": "多节点扩展与负载均衡",
- "description": "deployment-multi-node-scaling",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "dee4a153-cf45-4a55-b54e-bd97481f466f",
- "catalog_id": "dee4a153-cf45-4a55-b54e-bd97481f466f",
- "title": "许可证与认证问题排查",
- "description": "license-troubleshooting",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "e6796b01-1250-4a7d-b39c-d05e413d8e30",
- "catalog_id": "e6796b01-1250-4a7d-b39c-d05e413d8e30",
- "title": "案件表与外部表结构",
- "description": "case-and-external-tables",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ea5fee6a-6052-49e8-9a6b-f0faf9c050b0",
- "catalog_id": "ea5fee6a-6052-49e8-9a6b-f0faf9c050b0",
- "title": "Insight 工作区与 Workspace Catalog",
- "description": "agent-insight-workspace",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "0f6dfa6f-d969-4087-bed4-1f6522b67faa",
- "catalog_id": "0f6dfa6f-d969-4087-bed4-1f6522b67faa",
- "title": "图谱与图表接口",
- "description": "graph-and-chart-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "6afb3e73-9114-4b47-82f0-025afb9cbdf3",
- "catalog_id": "6afb3e73-9114-4b47-82f0-025afb9cbdf3",
- "title": "日志、监控与故障排查",
- "description": "deployment-monitoring-troubleshooting",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "9114554a-942e-43cd-86b4-e40384923260",
- "catalog_id": "9114554a-942e-43cd-86b4-e40384923260",
- "title": "搜索模块 search",
- "description": "business-search",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "9b97082f-66c1-4878-9a7d-5e920d6b45a0",
- "catalog_id": "9b97082f-66c1-4878-9a7d-5e920d6b45a0",
- "title": "pgvector 向量表与 DuckDB 临时数据源",
- "description": "vector-and-temporary-data-sources",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "catalog_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "title": "桌面客户端",
- "description": "desktop-client",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ea4e0532-760a-4956-9200-cd6202cba1a3",
- "catalog_id": "ea4e0532-760a-4956-9200-cd6202cba1a3",
- "title": "离线地图与 PMTiles 配置",
- "description": "desktop-offline-map",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "f42a38f1-89eb-4f42-a87f-26d81c3aaf9b",
- "catalog_id": "f42a38f1-89eb-4f42-a87f-26d81c3aaf9b",
- "title": "定时任务与工作空间清理",
- "description": "scheduled-tasks-workspace-cleanup",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "198e92ee-5762-48f9-835d-17889a315be1",
- "catalog_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "title": "网关粘性路由",
- "description": "gateway-sticky-routing",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "1a07a3c6-8227-4d21-afb1-f36b3131bb56",
- "catalog_id": "1a07a3c6-8227-4d21-afb1-f36b3131bb56",
- "title": "数据建模模块 dm",
- "description": "business-dm",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "4816f0d4-6e83-43f7-837f-f13d946b1d37",
- "catalog_id": "4816f0d4-6e83-43f7-837f-f13d946b1d37",
- "title": "人员数据接口",
- "description": "person-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "6ac2d682-f759-41c6-8a1d-82b6a1b11135",
- "catalog_id": "6ac2d682-f759-41c6-8a1d-82b6a1b11135",
- "title": "构建、打包与自动更新",
- "description": "desktop-build-packaging-updater",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "catalog_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "title": "后端服务架构",
- "description": "backend-service",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "27d63566-5248-4f8a-8128-45e41b2cde9e",
- "catalog_id": "27d63566-5248-4f8a-8128-45e41b2cde9e",
- "title": "通话数据接口",
- "description": "call-data-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ad0de49b-7550-43d1-b3ec-7c96d17a3729",
- "catalog_id": "ad0de49b-7550-43d1-b3ec-7c96d17a3729",
- "title": "时序与特殊日期模块 otg",
- "description": "business-otg",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "4dfe4a9e-9c32-4f75-8314-3b06172b0d57",
- "catalog_id": "4dfe4a9e-9c32-4f75-8314-3b06172b0d57",
- "title": "交易数据接口",
- "description": "trans-data-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "78886141-b043-4c17-a6c6-a2e7b67aea9a",
- "catalog_id": "78886141-b043-4c17-a6c6-a2e7b67aea9a",
- "title": "外部表模块 external",
- "description": "business-external",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "catalog_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "title": "Agent 与 RAG",
- "description": "agent-rag",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "af886b13-8d59-4e6e-b5ea-40ddd68ef0a5",
- "catalog_id": "af886b13-8d59-4e6e-b5ea-40ddd68ef0a5",
- "title": "轨迹数据接口",
- "description": "track-data-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "catalog_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "title": "AI 数据清洗",
- "description": "ai-data-cleaning",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "8c232144-b2f6-4c52-b4c6-5b9bf7ea9ffa",
- "catalog_id": "8c232144-b2f6-4c52-b4c6-5b9bf7ea9ffa",
- "title": "治理与其他业务接口",
- "description": "govern-and-other-business-api",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "catalog_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "title": "知识与向量检索",
- "description": "knowledge-vector-retrieval",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "catalog_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "title": "业务数据模块",
- "description": "business-modules",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "catalog_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "title": "数据库设计",
- "description": "database-design",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "catalog_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "title": "API 接口参考",
- "description": "api-reference",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "catalog_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "title": "安全与许可证",
- "description": "security-license",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "catalog_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "title": "部署与运维",
- "description": "deployment-operations",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "catalog_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "title": "测试与质量保证",
- "description": "testing-quality",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "catalog_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "title": "开发者指南",
- "description": "developer-guide",
- "extend": "{}",
- "progress_status": "completed",
- "repo_id": "afcc7ffe-ff4e-4271-8d3c-7a000d6d84ca",
- "reference_count": 0,
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- }
- ],
- "knowledge_relations": [
- {
- "id": 1,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "156aa516-49d6-4670-b3cf-453dbd239227",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 2,
- "source_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "target_id": "353e0550-ef39-4028-9f2f-c3733cbe4fcc",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 3,
- "source_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "target_id": "4096358f-33de-4fc0-96f5-52e05a503884",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 4,
- "source_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "target_id": "4980a173-ddc7-4a67-841d-a8708fe3d5dc",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 5,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "51426ffe-15ab-4186-b1a9-75d4fdbf3c6f",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 6,
- "source_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "target_id": "7c424667-c8c7-4f7a-bbd7-af27a21ef237",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 7,
- "source_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "target_id": "806c0f96-05b8-473c-968e-d617c7a8bea4",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 8,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "ab6a7934-379d-4064-ab15-60187c9fb4ab",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 9,
- "source_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "target_id": "bbe3d5c7-9708-45a5-9b0e-155f8a79506b",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 10,
- "source_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "target_id": "bd014943-9fdc-41c3-aeda-440568e4a340",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 11,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "c9a620a7-1b3c-4d58-85b0-2a21724b19d2",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 12,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "dfcc2c4e-4392-42f2-9bab-4f652761f880",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 13,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "e6253e7f-3ead-4cd2-84c5-bd9c93288a0e",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 14,
- "source_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "target_id": "f5ed2513-391a-4b75-8007-bb3d5216e4df",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 15,
- "source_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "target_id": "1acb4aac-20b1-4e60-9d3a-4d49412f11ef",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 16,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "21342d52-98e3-4654-9724-072359e1c6f2",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 17,
- "source_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "target_id": "22ed1e10-d4ca-42c7-801c-8bda48b58052",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 18,
- "source_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "target_id": "30a9faef-23f4-406d-8889-3da2c96ba102",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 19,
- "source_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "target_id": "41e369d2-9662-4e1b-b62f-21de646b34c9",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 20,
- "source_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "target_id": "48ee09b6-d73e-4c97-ab30-872d6271b0d5",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 21,
- "source_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "target_id": "4b666607-23fd-418b-926a-f561218179c6",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 22,
- "source_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "target_id": "5b47e58f-5090-4cfd-8288-e866003e9231",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 23,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "5c689d53-7384-4633-95ad-b40096e9b00b",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 24,
- "source_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "target_id": "9ca9022c-45b9-4e6b-89d3-34eac1d4ee30",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 25,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "b474a118-2219-4f66-863d-a7f18d59e5df",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 26,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "c52c7b80-86ea-4f92-8179-6a86a77494a3",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 27,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "c5c9d701-000d-421e-80cd-170bb6739623",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 28,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "f77992a3-a80c-4ebc-9f77-8faf081f3420",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 29,
- "source_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "target_id": "02425a89-4f3c-4fcb-8125-016b7cc6e537",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 30,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "034e56aa-57ff-407a-ae4c-7eb6f78922e0",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 31,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "087bb53b-235b-4be4-8619-c4f233ed71e3",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 32,
- "source_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "target_id": "2430cac4-9893-4fa5-b51c-2d967e0f4e01",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 33,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "279bf8ac-c655-4c5d-9be4-0653f70965fd",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 34,
- "source_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "target_id": "2d92cc7b-fcdd-4353-a322-09eae0d8e610",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 35,
- "source_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "target_id": "645f94c6-f003-4b68-b55f-8ed08d10ce69",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 36,
- "source_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "target_id": "7ed47ff0-8933-4302-ac7f-15ef5c824483",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 37,
- "source_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "target_id": "82b197df-b35b-47fc-8bef-78cdebd2c2f8",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 38,
- "source_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "target_id": "8b970997-124e-46b3-86f0-da34175ae365",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 39,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "d4244f4c-2490-44b5-b0da-669fa5f4ff93",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 40,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "e5327e25-d642-48b6-a00b-3ee3df9a45fc",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 41,
- "source_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "target_id": "efa5573e-0743-4e8b-adba-e6efadecc9f2",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 42,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "ffe7bd4f-414d-489a-92fa-f265405a7add",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 43,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "03a0099f-84a3-433f-972a-b9d3b4ad8a03",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 44,
- "source_id": "b7c1dade-a869-4023-920a-f5f527a56403",
- "target_id": "0b5c5236-0103-4f16-b57a-56e7e7be9713",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 45,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "258ef8d6-d1f0-4ec5-86c4-67200e3f8c37",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 46,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "5352975b-7714-4098-a0f1-a8f2946e68b3",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 47,
- "source_id": "922749ea-6307-428f-bfd8-4feb065746a6",
- "target_id": "652c39da-67ee-45ba-ad92-262987cc74c1",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 48,
- "source_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "target_id": "684b1d01-a312-48fb-87c4-3e103deb4f35",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 49,
- "source_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "target_id": "84773149-8223-4a20-a62c-5319d4527d3f",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 50,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "971bd1ce-217d-4f0c-a6ad-29840ae2639f",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 51,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "9d19f6ee-79cd-4e4a-9a0d-dea1880bbf9c",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 52,
- "source_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "target_id": "bba68a9f-bcb3-4c71-a2eb-1f56005e29f1",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 53,
- "source_id": "fde671b0-e5b4-4ff9-9baa-df07ebc75177",
- "target_id": "be260c76-7452-4c32-b391-518638e55800",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 54,
- "source_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "target_id": "ca6be081-bf0b-43f8-8325-ae3d860af297",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 55,
- "source_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "target_id": "d27f0c5a-2dec-48e1-9bdd-d640386cd8ac",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 56,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "e9ff4b7b-abcf-42ad-b5f1-3c1cd72bbcf1",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 57,
- "source_id": "a4b69928-d9a2-469a-8611-d8167311ed51",
- "target_id": "13f6442b-ca39-47c8-a5ad-c1ea01c7f014",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 58,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "28e5b517-e9ac-4377-979e-5f881a6ab9e1",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 59,
- "source_id": "198e92ee-5762-48f9-835d-17889a315be1",
- "target_id": "2a0b927e-ea46-48b8-b14d-c57615de3c4d",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 60,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "47af0185-c942-40f5-97c0-6bb492b91be9",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 61,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "b637c759-edca-43f8-9a98-8c1657165061",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 62,
- "source_id": "fbd0f840-7bf0-40b1-9ae4-01dd991a8752",
- "target_id": "bea97b99-9c66-427b-b57b-754f086ecbbe",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 63,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "c7297910-8fdc-4dc5-b7c9-9a6e1564d183",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 64,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "dc3bc6ae-89fd-4a5e-bbf7-cb1b905401ea",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 65,
- "source_id": "c77f0da0-55bc-4f69-9e32-f4aca699b57c",
- "target_id": "dee4a153-cf45-4a55-b54e-bd97481f466f",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 66,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "e6796b01-1250-4a7d-b39c-d05e413d8e30",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 67,
- "source_id": "ec9a24fa-b5b6-4b28-96ab-06ee3089519f",
- "target_id": "ea5fee6a-6052-49e8-9a6b-f0faf9c050b0",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 68,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "0f6dfa6f-d969-4087-bed4-1f6522b67faa",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 69,
- "source_id": "67aa6a8d-c25c-435e-be2c-9a5fda6668b7",
- "target_id": "6afb3e73-9114-4b47-82f0-025afb9cbdf3",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 70,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "9114554a-942e-43cd-86b4-e40384923260",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 71,
- "source_id": "c1789760-0a39-4847-879e-bd14a1ed7b37",
- "target_id": "9b97082f-66c1-4878-9a7d-5e920d6b45a0",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 72,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "ea4e0532-760a-4956-9200-cd6202cba1a3",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 73,
- "source_id": "1721b548-ae66-4730-9aba-43ab062f7390",
- "target_id": "f42a38f1-89eb-4f42-a87f-26d81c3aaf9b",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 74,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "1a07a3c6-8227-4d21-afb1-f36b3131bb56",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 75,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "4816f0d4-6e83-43f7-837f-f13d946b1d37",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 76,
- "source_id": "d36adb59-0865-4057-ac6b-1a3762816c01",
- "target_id": "6ac2d682-f759-41c6-8a1d-82b6a1b11135",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 77,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "27d63566-5248-4f8a-8128-45e41b2cde9e",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 78,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "ad0de49b-7550-43d1-b3ec-7c96d17a3729",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 79,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "4dfe4a9e-9c32-4f75-8314-3b06172b0d57",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 80,
- "source_id": "8f78a451-8218-40a1-9474-b29ba3fd8dca",
- "target_id": "78886141-b043-4c17-a6c6-a2e7b67aea9a",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 81,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "af886b13-8d59-4e6e-b5ea-40ddd68ef0a5",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- },
- {
- "id": 82,
- "source_id": "14469378-a6de-4dcb-907f-1edc16463b71",
- "target_id": "8c232144-b2f6-4c52-b4c6-5b9bf7ea9ffa",
- "source_type": "WIKI_ITEM",
- "target_type": "WIKI_ITEM",
- "relationship_type": "PARENT_CHILD",
- "gmt_create": "2026-10-28T07:55:29Z",
- "gmt_modified": "2026-10-28T07:55:29Z"
- }
- ]
- }
|