Commit Graph
146 Commits
Author SHA1 Message Date
zhiyuncai 32b6719376 fix(mcp): 合同同步补续约关联字段 renewal_of_contract_id
m2.contract_new 实际存在 renew_source_id 列(新合同单向指向续签前合同),
但 ContractNew 实体未映射该列,ContractsSyncEntity 按'表无此列'将续约字段
从变更流与 current 报文中整体省略,导致下游 CRM 无法识别旧合同已被续约,
R04 到期事项无法自动关闭。

- ContractNew 补映射 renew_source_id
- SyncChangeSchemas.ContractChange 增加 renewal_of_contract_id 输出分量
- ContractsSyncEntity.toItem 输出稳定字符串 id;变更流与 current 共用,一次修好
- SyncEntitiesTest 新增回归:变更流/current 均输出、无续约来源时字段省略

测试:SyncEntitiesTest 9/9,全量 448/448 通过
2026-10-15 15:14:03 +08:00
my_local_kimi_dev2 b7308c836a chore(mcp): agent.user.list.query 工具描述定位为员工查询(代理人员查询) 2026-10-13 13:51:18 +08:00
my_local_kimi_dev2 14f2cd3ea9 docs(agent): 近期需求示例登记 REQ-20261012-0004 空感工具 2026-10-13 11:50:41 +08:00
my_local_kimi_dev2 de71262101 docs: register REQ-20261013-0006 agent.user.list.query in AGENTS.md 2026-10-13 11:45:02 +08:00
my_local_kimi_dev2 5b0e59feb2 feat(mcp): add toilet.airquality list/detail/metrics/statelog query tools (REQ-20261012-0004) 2026-10-13 11:39:32 +08:00
my_local_kimi_dev2 e1fcae2eb1 feat(mcp): add agent.user.list.query for agent-role user listing
查询 m0.user 中 enterprise_type=1 的代理角色用户,返回所属权限组、
dept_user 部门岗位明细与当前站点;行级权限复用 visibleAgentIds
(总部全量/代理商自己+直属下级+代管),mobile 原样不脱敏,
idcard/password/openid 不进白名单,不返回位置字段。
设计:doc/agent-user-list-mcp-tool-design.md(2026-10-13 王恒拍板)
2026-10-13 11:33:19 +08:00
my_local_kimi_dev2 f4eb2387db docs(agent): 近期需求示例登记 REQ-20261012-0002 换纸记录工具 2026-10-12 14:26:59 +08:00
my_local_kimi_dev2 be5f661a41 Merge branch 'feat/paper-trace-list-mcp-tools': 客户换纸记录 MCP 工具 (REQ-20261012-0002) 2026-10-12 14:18:38 +08:00
my_local_kimi_dev2 f55e07f6ec feat(mcp): 新增 district.paper.trace.list.query 客户换纸记录工具 (REQ-20261012-0002)
- ES paperuselog 热/冷索引 + LocalEsDate 云/本地集群路由(复用 statistics 同款)
- 出分页明细(from+size+track_total_hits),不复刻老系统 scroll 轨迹展开
- snCode/rfid 走 .keyword 精确匹配(修老系统 matchQuery 分词坑)
- state 可选(2上纸/4撤纸,不传查所有,修老系统强制覆盖坑);区间硬限 31 天
- applyDistrictRowFilter 站点可见性校验(老系统此接口无鉴权属历史遗漏,MCP 收紧)
- isAssignment 查 m0 rfid_info assignment_flag>=1;v1 不返回满卷标记
- 单测 420/420(新增 gateway 4 例 + 工具 9 例)
2026-10-12 14:18:30 +08:00
my_local_kimi_dev2 8eaadbf527 docs(mcp): 重写人均用纸统计设计文档对齐已发布实现 (REQ-20260922-0004) 2026-10-12 14:18:30 +08:00
wangheng 6878a40ec5 Merge pull request 'fix(district): position.detail 报错透出对齐 ToolCallException (REQ-20261012-0003)' (#29) from feat/REQ-20261012-0003 into main 2026-10-12 14:09:25 +08:00
my_local_kimi_dev2 377145cafe fix(district): position.detail 报错透出对齐 ToolCallException (REQ-20261012-0003)
入参校验/超 31 天/超 StatisticsDays 抛 INVALID_ARGUMENT,站点无权抛
NOT_FOUND_OR_FORBIDDEN,具体文案透出给调用方(对齐 traffic/device_average),
不再被统一掩码成 DATA_INTEGRITY_ERROR。Redis StatisticsDays 缺失维持
IllegalStateException 兜底掩码(服务端配置问题)。
2026-10-12 14:09:10 +08:00
wangheng 744378082a Merge pull request 'feat(district): 新增 district.paper.position.detail.query 客户用纸详情工具 (REQ-20261012-0001)' (#28) from feat/REQ-20261012-0001 into main 2026-10-12 11:55:02 +08:00
my_local_kimi_dev2 3f7a487f38 feat(district): 新增 district.paper.position.detail.query 客户用纸详情工具 (REQ-20261012-0001)
- 纯 MySQL monthly_statistics,位置(厕位/厕墙)×日期分组
- 修复老接口整数除法截断 bug,厕墙人均改 null
- 位置命名直查 positions/toilet,补行级权限
- 扁平 rows[] 输出,seed/文档登记
2026-10-12 11:54:33 +08:00
wangheng c21582eb7f docs(agent): 沉淀新 MCP 工具上线标准流程(设计评审→实现→部署→建需求→submit) 2026-09-24 16:52:07 +08:00
wangheng 3aa74cbcde docs(agent): 记录人流量统计需求的 ai-proj 关联信息 2026-09-24 16:30:22 +08:00
wangheng e41ecf9ea1 feat(mcp): 新增人流量统计工具,统计类工具查询区间统一限一个月
- district.traffic.statistics.query:复刻老 trafficStatistics 饼图与
  trafficStatisticsDetail 折线图,SUM(use_count) 按 gender/日期×gender 聚合,
  view=gender 占比 + view=daily_gender 按日趋势零填充(修正老系统插入错位 bug)
- 行级权限对齐 district.paper.* 系列;gender=null 归「未配置」不再 NPE
- 日期区间硬限 31 天(一个月),超出报错提示修改日期(2026-09-24 拍板);
  district.paper.percapita.query 与 district.paper.device_average.query 同步加限,
  与 Redis StatisticsDays 取更严
- 新增 12 个单测;设计文档 doc/traffic-statistics-mcp-tool-design.md
2026-09-24 16:22:10 +08:00
wangheng 0e7c7e778b docs(agent): 补充 ai-proj submit/review 流转接口契约 2026-09-24 11:05:36 +08:00
wangheng 89af0c45fc docs(agent): 记录设备生命周期需求的 ai-proj 关联信息与 REST 契约实测 2026-09-24 11:01:03 +08:00
wangheng 98a3d3c6e4 fix(mcp): 生命周期列表改为 selectCount+LIMIT 物理分页
项目未注册 MyBatis-Plus 分页拦截器,selectPage 不做物理分页且 total 恒为 0
(2026-09-24 生产冒烟实测),对齐项目内 battery.fault.list.query 的既有做法
2026-09-24 10:21:57 +08:00
wangheng 04f7508062 docs(mcp): 工具参考文档新增设备生命周期两个工具章节 2026-09-24 09:46:56 +08:00
wangheng 1f145e0c57 feat(mcp): 新增设备生命周期查询工具
- hardware.device.lifecycle.query:按 SN 模糊分页查询 device_life_cycle 当前状态,
  含流转/在途/在库/联网/资产五组状态文案、关键日期、在途天数与超期标记
  (阈值取 Redis Dictionary.MaxRoadDays,缺失 fail fast)
- hardware.device.lifecycle.detail.query:按 SN 精确聚合事件时间线,
  覆盖生产档案/质检/出入库(含发货信息)/安装上下线/备用机日志(ES hardwarelog),
  时间倒序,SN 不存在返回 found=false
- 复刻老系统 lifeCycleListByPage 与 lookDetail,按拍板不做权限校验、
  不复制 exchange_state 排除、物流公司名用 mall_order_logistics 冗余列
- ES 备用机日志走低阶 RestClient 云集群,SpecialSncode 集合命中跳过
- 新增 15 个单测(含 ES 请求体断言、排序、null 安全、fail fast 路径)
- 设计文档:doc/device-lifecycle-mcp-tool-design.md
2026-09-24 09:40:06 +08:00
wangheng d95bd4d57c feat(mcp): 工具注册同步支持更新已有工具元数据
- 已存在工具自动更新 category/kind/description,无需手动改库
- status 仍由管理端维护,同步不覆盖;只插不删语义保留
2026-09-23 13:56:01 +08:00
wangheng 31122e25f1 fix(mcp): 用纸统计类工具分类统一调整为 customer 2026-09-23 13:46:08 +08:00
wangheng 51f8639a3a feat(admin): 管理端改为多标签导航
- 菜单点击打开标签页,标签可关闭,关闭当前标签自动切换相邻标签
- 页面面板 v-show 保活,切换标签保留筛选/分页/选中状态
- 激活标签仍刷新数据,登录/退出重置标签
- 补充多标签契约测试
2026-09-23 13:03:16 +08:00
qiudl c1ebb30cce Merge remote-tracking branch 'origin/main' into feat/REQ-20260922-0004-paper-percapita
# Conflicts:
#	xiaoqu-agent-service/README.md
#	xiaoqu-agent-service/doc/agent-mcp-tools-reference.md
2026-09-22 11:30:56 +02:00
qiudl 7385b06bd9 feat(mcp): 新增设备日均用纸统计工具 (REQ-20260922-0007) 2026-09-22 11:29:08 +02:00
qiudl 35d7ad73ed feat(mcp): 新增人均用纸统计工具 (REQ-20260922-0004) 2026-09-22 11:29:08 +02:00
my_local_kimi_dev2 6d76cfd70e docs: 部署前先推 main 的教训(本地领先 origin 导致生产跑旧代码) 2026-09-22 15:03:25 +08:00
my_local_kimi_dev2 a61040e2bc fix(es): paperuselog state terms 过滤结构修正——{"terms":{"state":[2,4]}} 误写成嵌套 terms 对象被 ES 7.7.1 以 400 拒绝(生产实测);补 Gateway impl 层单测锁请求体结构 2026-09-22 14:38:44 +08:00
my_local_kimi_dev2 c7b6f84db4 docs(agent-service): AGENTS.md 补 paperuselog rfid 为 text 类型须用 rfid.keyword 聚合的坑 2026-09-22 13:48:17 +08:00
my_local_kimi_dev2 58d01e9a47 fix(es): paperuselog rfid 去重聚合改 rfid.keyword——rfid 为 text 类型,terms 聚合 text 字段被 7.7.1 以 400 拒绝(生产实测) 2026-09-22 13:47:41 +08:00
my_local_kimi_dev2 dc43920d5c docs(agent-service): AGENTS.md 补充 electricitymessage 字段形态与 curl 直连冒烟坑 2026-09-22 11:39:46 +08:00
my_local_kimi_dev2 267bc59a8f fix(es): 电量消息归一化——value 支持字符串形态、createTime ISO 文本转本地格式
生产 _source 实测:value 索引为文本("28"/"100"),原 isNumber 判空
导致 value 恒 null;createTime 为 ISO 文本(2026-09-21T10:00:00.000+08:00),
原样输出与老系统 yyyy-MM-dd HH:mm:ss 口径不一致,统一归一。
2026-09-22 11:36:54 +08:00
my_local_kimi_dev2 d87a8752a1 fix(es): 电量消息 createTime range 改发 epoch 毫秒
electricitymessage 索引 createTime 是 date 类型
(format strict_date_optional_time||epoch_millis),yyyy-MM-dd HH:mm:ss
字符串会被 400 拒绝;对齐老系统 DateUtils.parseDate 转 Date 后由
transport 序列化为 epoch 毫秒的口径。
2026-09-22 11:30:46 +08:00
my_local_kimi_dev2 7613499dfb docs(agent-service): AGENTS.md 补充生产 ES 7.7.1 与高阶客户端不兼容的坑 2026-09-22 11:24:22 +08:00
my_local_kimi_dev2 6be5169217 fix(es): ES 集群 7.7.1 与高阶客户端 7.17 不兼容,电量消息/换纸日志查询降级低阶 RestClient
生产两个 ES 集群均为 7.7.1:elasticsearch-java 7.17 的 vendor Content-Type
(application/vnd.elasticsearch+json; compatible-with=7) 被 406 拒绝,
且其 X-Elastic-Product 响应头校验(7.14 引入)在 7.7.1 上无法通过。
ElectricityMessageEsGatewayImpl 与 PaperUseLogEsGatewayImpl 改用低阶
RestClient 直连(application/json、无产品头校验),查询语义不变。
修复REQ-20260921-0007上线后 tools/call 406 冒烟失败。
2026-09-22 11:21:46 +08:00
my_local_kimi_dev2 10d618dac2 docs: AGENTS.md 补充 reassignment confirm 一次性 token 注意项与 mcp.json 读取限制 2026-09-22 09:11:58 +08:00
my_local_kimi_dev2 6e7a5da19d docs(agent-service): add AGENTS.md with ai-proj project id 224 and known MCP contract limits 2026-09-21 18:40:10 +08:00
my_local_kimi_dev2 b3b5877e26 feat(hardware): 新增设备电量消息记录查询工具 (REQ-20260921-0007) 2026-09-21 17:59:20 +08:00
wangheng 3e82e76135 Merge pull request '[REQ-20260921-0006] 新增电池故障列表查询 MCP 工具' (#27) from feat/REQ-20260921-0006-battery-fault-list into main
Merge pull request #27 from feat/REQ-20260921-0006-battery-fault-list

[REQ-20260921-0006] 新增电池故障列表查询 MCP 工具
2026-09-21 17:00:53 +08:00
qiudl 315f9bafff feat(hardware): 新增电池故障列表查询工具 (REQ-20260921-0006) 2026-09-21 10:43:30 +02:00
wangheng c47668f6b9 Merge pull request 'feat(open): 服务身份免登录分页查询(REQ-20260921-0004)' (#26) from feat/REQ-20260921-0004 into main 2026-09-21 16:06:37 +08:00
my_local_kimi_dev2 3f46b64218 feat(open): 服务身份免登录分页查询(REQ-20260921-0004)
- agent_scope 新增 service_enabled 标记(Flyway V7 + 回滚),服务 Token 签发
  由 sync 硬编码改为标记驱动,管理后台作用域 CRUD/前端支持该标记
- PermissionService 全部行过滤入口加 tenant_service 分支:服务主体总部视角
  全量可见不做行过滤,用户身份行为不变;非服务主体的 null user 显式拒绝
- warehouse.todo.list.query 按当前登录人统计,服务身份返回 PERMISSION_DENIED
- RateLimitService 新增 SERVICE-QUERY 独立限流档(默认 300/分钟)
- seed-dev.sql 新增 ops-query 作用域并绑定全部在线查询工具
- 文档:tools-reference §0.3、README Open API 服务 Token 段
2026-09-21 15:58:08 +08:00
wangheng 47886fed3e 排除 Spring Boot ES 自动装配(双 RestClient bean 冲突) (#25) 2026-09-20 19:02:04 +08:00
wangheng 4999c79667 修复 elasticsearch-rest-client 被 Boot BOM 顶成 8.x 导致启动失败 (#24) 2026-09-20 18:58:23 +08:00
wangheng 1f433b5275 新增 district.paper.statistics.query 客户用纸统计工具(含 ES 7.17 客户端引入) (#23) 2026-09-20 18:54:30 +08:00
wangheng 68fd71edbb [fix] 出入库工具复查修复:调拨待办漏本人修改/待办行串位/调拨派生入库单凭证回查 (REQ-20260919-0003) (#22) 2026-09-19 22:28:02 +08:00
my_local_kimi_dev2 c9240fa31c [fix] 工单工具审查修复:销售负责人前缀碰撞/装机人员/撤机凭证/送货权限范围 (#22) 2026-09-18 14:30:46 +08:00
wangheng 1ed33ef828 [REQ-20260918-0004] 撤机工单 MCP 查询工具(列表+详情) (#21) 2026-09-18 12:13:02 +08:00