yang

yang pushed to dev_4 at vectorSeek/zsjz-ai

9 hours ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

6 days ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

6 days ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

6 days ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

  • 25165b9888 fix: 稳定性与合规三项修复(PII 日志脱敏 / ES 写入熔断 / 附件 RAG 降级+预算) - 合规:清洗链路姓名/卡号/证件号日志脱敏(maskForLog:保留前4后2), 预处理原文不再打印;GraphService 移除 System.out(SQL 含手机号/卡号节点值) - 稳定:SearchDocIndexService add()/flush() 容错化(ES 故障记日志+丢弃计数, 绝不上抛清洗主链路),连续 3 批失败熔断 60s 期间 add 直接跳过,成功即复位; 缺失检索数据可按案件重建索引补偿 - 稳定:附件 RAG 检索失败降级为"无片段的普通回答"(fail-open,不阻断整条消息); 新增单附件索引总预算 zsjz.chat-attachment.index-budget-seconds(默认 600s), 超预算 chunk 跳过并置 truncated,上传请求不再被嵌入端点故障占住几十分钟 - 测试:新增 SearchDocIndexServiceTest(4 用例)+ AttachmentDocIndexerTest(3 用例)全绿; 全量 370 测试仅剩 HEAD 既有的 8 个过时断言,零新增回归 - 报告与实施记录:docs/design/stability-usability-report.md

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

  • 7bf202f425 1
  • 1450fb7468 fix: 多用户并发问题全量修复(P0 7 项 + P1 9 项 + P2 9 项,审计闭环) 高危: - CleanCache 按 caseId 分桶:消除跨案件人员库串写/丢数据/CME - 清洗回调只删本批次 tmp 目录 + 过期批次 TTL 清扫,不再整树删除 - GlobalCache 快照整体替换(volatile 私有字段+只读访问器,17 个消费方迁移), TableInfoService 重建移到事务提交后 - /chat/stream 会话级互斥;chat/insight 写路径补案件归属 403 校验 - 治理防重入(RUNNING_CASES 原子占位)+ awaitStage 失败即断流 + 脱离 GlobalPool 改虚拟线程 - AiSmartCleanService reviewItems 同步容器被 computeIfAbsent 击穿修复 - CaseDataCache 锁域统一:锁外重建整体替换 + 读路径补读锁 中危: - AgentInstancePool(上限 64 + 空闲 30min LRU,单调序号排序),getOrCreateAgent 的 DB/IO 移出锁 - SystemConfManager ConcurrentHashMap + 原子落盘;附件嵌入全局信号量 - Python 快照按案件互斥导出并去除"回退原库"(原库被写锁持有不可用) - chat 计数/置顶/收藏全部改 SQL 原子操作;LicenseUtil 60s TTL 缓存 - deletedFiles 先删业务表、失败即中止(消除孤儿数据);GOVERN_CONFIG 按案件精确清除 - 调度池 4 线程;CaseActivityProbe 探针接入 reaper/登出释放(在跑案件不回收) 低危: - SseService 两参 remove;TowerUtils CAS;Insight 删会话锁保护;py-out 跳过在途执行; UsageStore 精确修剪;会话创建超限加锁;DuckDB networkTimeout 共享 executor;MCP 槽位有界 FIFO 测试:新增 26 个并发回归用例(4 轮全绿);全量 363 个测试仅剩 8 个 HEAD 既有过时断言(工具注册数,与本批无关) 审计与实施记录:docs/design/concurrency-issues-and-fixes.md
  • View comparison for these 2 commits »

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

  • 49d453ae6b fix: 附件链路多用户并发竞态修复(接口级 check-then-act 清理) 多用户并发访问同一接口时的 5 处竞态: 1. 草稿附件绑定改 CAS 条件更新(session_id 仍为 0 才允许绑): 并发抢绑只有一方成功,失败方重读归属后拒绝 —— 修掉同一附件 被两个会话同时引用的 check-then-act 漏洞 2. purgeOrphans 改 DB 条件删除先行(删行条件 = 仍未关联且超期)、 文件/向量后置清理:与发送并发时不会删掉刚被消息引用的附件 3. AttachmentDocIndexer 并发计数 int[]++ 丢更新 → AtomicInteger 4. 并发首建向量表 PG 报错兜底(CREATE TABLE IF NOT EXISTS 并发撞 pg_class 唯一索引是已知行为):失败后确认表存在即视为成功 5. session.messageCount 读改写丢更新(既有)→ 原子自增 setSql 新增并发单测 2 例(CAS 抢绑互斥:胜者放行/败者 400),18/18 全绿
  • c38cd7fec9 fix: 附件上传竞态补强(长超时 + 孤儿清理放宽) 针对「消息发出但文件未处理完」的竞态审查: - 后端原子性已成立:buildBlocks(校验 READY)在 persistUserMessage 与开流之前, 附件未就绪直接 400,消息不会带着半成品发出;上传同步处理完才返回 id - 补缺口1:附件上传单独 10 分钟超时(默认 3 分钟会误杀大文档 RAG 索引/大表格 流式扫描,用户重试产生重复附件) - 补缺口2:孤儿清理 24h → 7 天(配置 orphan-hours)—— 输入框挂几天再发是正常行为,被清理后发送 400 属误伤
  • 2f83ad83e8 1
  • b701d3d672 feat: 输入框附件问答(内联/RAG/Python直读三路 + 三层数据隔离) 后端 module/agent/attachment: - 三路路由(AttachmentContentRouter):小内容内联进消息(Claude document block 同款);大表格流式扫描(行数/表头/样本)后注入文件路径 + 指引, Agent 用 execute_python pd.read_csv 全量计算(100MB csv 不截断不算错); 大文档 Tika 提取→分块→embedding→pgvector,按用户问题检索 top-8 片段注入 - AttachmentSheetScanner:csv commons-csv 流式(引号/编码对齐 PreTask), xlsx 复用 AiRowReader.forEachRow 顺写 sidecar csv(统一 pandas 读法) - AttachmentDocIndexer:分块(1000/重叠100/上限500) + 并发 embedding (EmbeddingModelFactory 同 RagSchemaService)+ 会话过滤检索 - ChatAttachmentService:上传编排/三重归属校验(userId/caseId/sessionId, 草稿期附件发送时绑定)/孤儿清理(24h);sanitize 文件名防穿越 - doStream 注入「附件块+问题」单条 USER Msg;用户消息落原文+metadata 徽标 - POST /chat/attachments 上传端点;ChatRequestDTO.attachmentIds 前端: - ChatComposer 附件按钮+chips(选择即上传/进度/失败移除),发送载荷带 attachmentIds+徽标;用户气泡附件徽标;hydrate 从 metadata 还原 - 雪花 ID 全链路字符串(修复 Long 序列化精度问题) 其他:sql/chat_attachment.sql DDL(已执行);zsjz.chat-attachment 配置段; 单测 16/16(Router/Scanner/分块/归属隔离/注入块),全仓回归零新增
  • View comparison for these 4 commits »

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

  • 9cdbe50034 test: 修复 GovernTableToolTest 过时引用,解除全仓测试编译阻塞 QuerySpec 已不暴露 orderKey/asc(排序整链下线,注入面随之消失), 删除对应的注入用例与 dto 排序断言;若未来恢复排序, 须连同服务端白名单校验一起恢复。修复后 7/7 通过。
  • 36e167e324 fix: 智能清洗链路加固(评审 P0/P1/P2 全项落地) - P0-1 出口B流式写库:AiRowReader.forEachRow(带真实行号) + AiDuckDb.BatchWriter (2000行攒批),loadViaAiTemplate 重写为建表→流式边洗边写→成功才登记 ONLINE, 失败删空表不登记 —— 消除全量内存物化与幽灵模板写序矛盾 - P0-2 AiCleanWatchdog:启动恢复(非终态批次标FAILED) + 运行时心跳超时看门狗 (Celery visibility timeout 同款),恢复路径=重置计数开新一轮 - P0-3 upsertBatch 撞唯一键回落查询(insertQuiet 同款幂等,等价 ON CONFLICT), 修复并发首点 500 竞态;新批次补 update_time - P1-4 LlmRetry(LiteLLM 同款:429/5xx/网络层重试,指数退避+抖动) 套 askLlm 与 文件识别;批次 token 预算护栏(zsjz.ai-clean.batch-token-budget,超限转人工) - P1-5 遥测落库:LlmService.chatAsDetail 带回用量 + AiMatchOutcome.llm 组件, judge 写 model_name/token_in/token_out/draft/detail/header_row(此前全部未赋值) - P1-6 过程状态机接通:mark(PROBING/MATCHING/VERIFYING/LOADING) 随判定推进落库 - P2-7 NEED_REVIEW 改块级判据:SheetEvidence.primaryMergeCount(主块内合并区), 远处无关合并格不再否决整表 - 测试同步:MatcherTest 桩改 chatAsDetail、LiveTest 适配 LlmAnswer、yaml 增 zsjz.ai-clean 配置段
  • View comparison for these 2 commits »

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

  • d2845e3f97 feat: 新增本地嵌入模块(DJL + ONNX Runtime + bge-m3) - 独立模块 module/embedding,不依赖 agentscope/model 表/RAG 链路 - EmbeddingService 业务门面:embed/embedBatch/cosineSimilarity/预热 - OnnxEmbeddingEngine:DJL 分词 + ORT 推理 + CLS 池化 + L2 归一化, 输入输出名动态探测(兼容 token_embeddings 导出命名) - 配置走 zsjz.embedding.*(application.yaml),引擎懒加载单例 - 调试接口 POST /embedding/debug;手动质量测试 -Dembedding.manual=true - 已验证:1024 维/归一化正确,相关句对 0.85 vs 无关 0.41

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago

yang pushed to dev_4 at vectorSeek/zsjz-ai

1 week ago