feat(admin): XHProf 采样列表页

- curd -t ul_xhprof_run 生成三件套(控制器 xhprof.run 子目录形态,model docblock 随生成刷新)
- 只读化:toolbar 清空 + 行内仅详情按钮(open 弹层 xhprof.run/detail?id=N,auth=detail),
  add/edit/delete 等 action 保留靠权限节点不分配拦截(T8 对齐)
- 列渲染:wall_time/cpu_time μs→ms(>1000ms 红色)、memory_peak 字节→MB、
  url 截断 title 全显、method 标签化、request_time 浮点秒→日期时间
- 四组搜索:url like / request_time range / wall_time 下限(前端 ms,后端换算 μs,
  withGet 全量合并写回)/ node_id 下拉(DISTINCT + data_brage 通道)
- 生成前 scheme:sync 修复 request_time 的 null/comment 漂移(T3 手工 ALTER 遗留)
This commit is contained in:
augushong
2026-08-15 06:48:45 +08:00
parent a43a9a48b9
commit e57b186126
11 changed files with 489 additions and 10 deletions

View File

@@ -0,0 +1,62 @@
<div class="layuimini-container">
<form id="app-form" class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label">节点ID区分不同采集节点</label>
<div class="layui-input-block">
<input type="text" name="node_id" class="layui-input" lay-verify="required" placeholder="请输入节点ID区分不同采集节点" value="{$row.node_id|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">请求完整 URL超长截断</label>
<div class="layui-input-block">
<input type="text" name="url" class="layui-input" lay-verify="required" placeholder="请输入请求完整 URL超长截断" value="{$row.url|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规范化 URL query、数字段替换聚合用</label>
<div class="layui-input-block">
<input type="text" name="simple_url" class="layui-input" lay-verify="required" placeholder="请输入规范化 URL去 query、数字段替换聚合用" value="{$row.simple_url|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">HTTP 方法</label>
<div class="layui-input-block">
<input type="text" name="method" class="layui-input" lay-verify="required" placeholder="请输入HTTP 方法" value="{$row.method|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">总耗时微秒main wt</label>
<div class="layui-input-block">
<input type="text" name="wall_time" class="layui-input" placeholder="请输入总耗时微秒main 的 wt" value="{$row.wall_time|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">CPU 耗时微秒main cpu</label>
<div class="layui-input-block">
<input type="text" name="cpu_time" class="layui-input" placeholder="请输入CPU 耗时微秒main 的 cpu" value="{$row.cpu_time|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内存峰值字节main pmu</label>
<div class="layui-input-block">
<input type="text" name="memory_peak" class="layui-input" placeholder="请输入内存峰值字节main 的 pmu" value="{$row.memory_peak|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">请求开始时间REQUEST_TIME_FLOAT 浮点秒)</label>
<div class="layui-input-block">
<input type="text" name="request_time" class="layui-input" placeholder="请输入请求开始时间REQUEST_TIME_FLOAT 浮点秒)" value="{$row.request_time|default=''}">
</div>
</div>
<div class="hr-line"></div>
<div class="layui-form-item text-center">
{notempty name='$Request.param.backTagId'}
<div class="layui-btn layui-btn-sm page-back-button" layuimini-content-href="{$Request.param.backTagId}" data-back="1">返回</div>
{/notempty}
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit>确认</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">重置</button>
</div>
</form>
</div>