xiaoqu-ai
91d8e6e7a8
feat(mcp): hardware.statistics.query 按物业统计设备数/在线/故障/离线
...
背景:CRM 经营画像需要"每客户设备数、离线数"。当前做法同步 devices 全量
(71,034 行,抽样 1000 台仅 13 台绑定物业,其余 property_id="0"),代价远大于收益。
本工具直接返回聚合结果:
- 入参 propertyId 或 propertyIds(≤20,去重),includeUnbound 默认 false
- 返回每物业 total/online/fault/offline + data_cutoff_at + notice
- 口径与 hardware.list.query 一致:hardware_view、soft_delete=0、status 1/2/3
- 行级权限复用 PermissionService.applyHardwareRowFilter
- 每物业 4 次 selectCount(项目未注册分页拦截器;无 clone 先例,重建 wrapper)
测试:DeviceStatisticsToolsTest 5 例(参数校验/超限/计数/权限调用/去重)全过。
设计文档:doc/hardware-statistics-query-mcp-tool-design.md(含待评审三问)。
2026-10-20 16:34:08 +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
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
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
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
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
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
31122e25f1
fix(mcp): 用纸统计类工具分类统一调整为 customer
2026-09-23 13:46:08 +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
b3b5877e26
feat(hardware): 新增设备电量消息记录查询工具 (REQ-20260921-0007)
2026-09-21 17:59:20 +08:00
qiudl
315f9bafff
feat(hardware): 新增电池故障列表查询工具 (REQ-20260921-0006)
2026-09-21 10:43:30 +02: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
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
my_local_kimi_dev2
2c6760ce60
[REQ-20260917-0010] 移机工单 MCP 查询工具(列表+详情) ( #20 )
2026-09-17 18:36:33 +08:00
wangheng
c3aa167403
[REQ-20260917-0003] 取货工单 MCP 查询工具(列表+详情) ( #19 )
2026-09-17 11:44:21 +08:00
my_local_kimi_dev2
4e5ee541e3
docs(mcp): update ops/ai integration docs with prod scope facts
...
- 新增 4.1 生产环境对接现状(MCP 入口、ensure 换签、握手流程)
- operation scope(id=2) 当前绑定 24 个工具;移除未绑定的 agent.count
- xiaoqu-ai scope(id=3) 当前绑定 12 个工具;代理域工具改为实际可用映射
- 开发顺序改为按 4.1 清单对照核验
2026-09-16 18:30:07 +08:00
mcp_dev1 and my_local_kimi_dev2
936590a3e3
feat(mcp): add install order query tools (REQ-20260916-0009)
2026-09-16 17:15:24 +08:00
wangheng
6c8fe2e3bb
[REQ-20260916-0020] 送货工单 MCP 查询工具(列表+详情) ( #18 )
2026-09-16 16:41:08 +08:00
my_local_kimi_dev2
c430cc9322
docs(mcp): install order tools design (reviewed)
2026-09-16 15:04:30 +08:00
jiashumeng and my_local_kimi_dev2
487a41df74
feat: add warehouse stock query MCP tool
2026-09-16 10:03:25 +08:00
my_local_kimi_dev2
798075f47e
docs: add MCP external integration spec v1.0
2026-09-16 09:55:19 +08:00
jiashumeng
025ee7ffa6
feat(sync): expose contract display context
2026-09-15 20:18:43 +09:30
jiashumeng
5c73751889
docs(sync): record post-merge verification
2026-09-15 19:27:12 +09:30
jiashumeng
15620bb4bf
Merge branch 'main' of http://39.104.65.241:3000/wangheng/xiaoqu_mcp_service into codex/crm-contract-sync-review
2026-09-15 19:26:16 +09:30
jiashumeng
dfe14b29e3
docs(sync): refresh review branch status
2026-09-15 19:25:15 +09:30
jiashumeng
8b5d531f3a
feat(sync): add pre-delivery contract verification
2026-09-15 19:23:08 +09:30
my_local_kimi_dev2
78e319c2f9
feat(mcp): add warehouse todo unified query tool
...
Merge outbound/inbound/allocation process views into warehouse.todo.list.query,
filtered by task assignee (user_id) matching legacy todo semantics (REQ-20260915-0008)
2026-09-15 17:32:59 +08:00
jiashumeng
a1c6ac10e5
docs(sync): record MCP delivery boundary
2026-09-15 18:51:34 +09:30
jiashumeng
e3b6edeb7b
fix(sync): align public change stream schema
2026-09-15 18:49:27 +09:30
jiashumeng
4cd95c61ab
docs: separate MCP CRM integration progress
2026-09-15 18:24:13 +09:30
jiashumeng and xiaoqu
e2835362e9
feat(mcp): add warehouse inbound query tools
2026-09-15 16:31:40 +08:00
jiashumeng
f559012a4c
feat(mcp): add warehouse outbound query tools
2026-09-15 16:56:49 +09:30
jiashumeng
e064e86def
feat(admin): add managed Open API client keys
2026-09-15 12:05:26 +09:30
wangheng
f95de7eceb
docs(mcp): CRM 接入手册 (REQ-20260911-0013)
2026-09-14 12:21:26 +08:00
xiaoqu
a0bae500bc
feat(mcp): 服务 Token 生命周期与开放通道域绑定 (REQ-20260911-0014)
...
- agent_api_key 增加 principal_type/subject_name(V4 Flyway + rollback),integration.context.get 按列判定主体类型\n- Open API 支持 clients 服务密钥→作用域绑定;service ensure get-or-create/无密文轮换,旧密钥禁签 service\n- 服务 Token 吊销/轮换;人员停用后 user Token 失效(60s 本地缓存);AkAuthFilter 401 返回 UNAUTHENTICATED\n- ensure 入口约束:service 仅 sync 作用域、user 禁 sync;sync 作用域预建并绑定 integration.context.get\n- 单测 157 通过;本机 test-up 冒烟通过(跨域/旧密钥/user-sync 403,service context 自检,吊销立即 401,吊销后再签发)
2026-09-14 09:20:48 +08:00
xiaoqu
795a433f35
feat(mcp): 新增 integration.context.get 身份与能力自检工具 (REQ-20260911-0012)
...
- 实时取 AkAuthFilter 鉴权上下文(ThreadLocal AuthContext)+ ToolGuard 同源能力计算,不缓存权限
- tenant_id 映射启用作用域编码;principal_type 集中在 IntegrationContextService.resolvePrincipalType
判定(当前按 token 绑定用户推导 user_delegated,5629 给 agent_api_key 加 principal_type 列后仅改该方法)
- data_scope_version = token_scope 绑定集合最大 modify_time 的 epoch 毫秒,无状态计算
- capability_levels 数据驱动:能力集合含 *.changes.list 工具即具备 SYNC,当前返回 QUERY
- seed-dev.sql operation 作用域白名单加入该工具
2026-09-11 23:10:19 +08:00
xiaoqu
f2ac17731a
feat(mcp): 统一输出规范与错误码体系——schema_version 双跑信封 + 8 错误码收敛 + 工具只读声明 + 日志脱敏 (REQ-20260911-0011)
2026-09-11 22:48:14 +08:00
xiaoqu
5daecc8ae8
docs(agent-service): 更新生产 HTTPS 部署文档(agent.ququclean.com 上线)
2026-09-11 10:34:09 +08:00
xiaoqu
52bb9faa27
feat(mcp): 新增合同查询工具 contract.list/detail.query (REQ-20260911-0002)
2026-09-11 10:21:18 +08:00
xiaoqu
ff452d89d8
feat(mcp): 新增出纸机查询工具 hardware.list/detail.query (REQ-20260910-0012)
2026-09-10 15:27:14 +08:00
xiaoqu
3d6d70604d
feat(mcp): 新增商城订单查询工具 mall.order.list/detail/logistics.query (REQ-20260909-0004)
...
- OrderTools: 订单列表(9个过滤字段+分页)、订单详情(订单+明细+收货地址合并)、订单物流(主表+轨迹)
- 新增 m1 商城库 5 个 Entity/Mapper(首次启用 m1 mapper 包)
- PermissionService.applyOrderRowFilter: 移植老接口 getSaleCompany 行级权限语义
- OrderToolsTest 6 用例;seed-dev.sql 绑定 operation scope;文档第 7~9 节
2026-09-09 18:06:59 +08:00
xqzp2026
686ce2daf8
feat(mcp): 新增站点列表与详情工具 (REQ-20260908-0006)
2026-09-08 19:25:12 +09:30