feat(nginx-log): curd 生成 raw/position 后台并改只读

- NginxAccessLog + NginxLogPosition Scheme 加 #[Component] 注解
- Scheme Table name 补 ul_ 前缀(curd 严格校验要求)
- curd 生成 nginx 模块完整后台(controller/model/view/js)
- Base/App 双层只读控制器(参照 TimerLogBase 范式)
  - AccessLogBase: add/edit/delete/modify 全部 error
  - LogPositionBase: 同上
- 视图改造:
  - access_log 裁剪到 8 列核心字段(time_local/method/uri/status/remote_addr/request_time/body_bytes_sent/http_user_agent)
  - status/request_time 自定义 badge 渲染
  - toolbar 清空 + operat 仅保留详情(B 类只读页面)
  - log_position 全字段 + 只读化
- HTTP 验证:index 200 OK + add/edit/delete/modify 全部返回错误
This commit is contained in:
augushong
2026-07-28 06:21:13 +08:00
parent 7987001cd2
commit d5329cdd45
26 changed files with 1203 additions and 34 deletions

View File

@@ -0,0 +1,56 @@
<div class="layuimini-container">
<form id="app-form" class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label">日志文件绝对路径</label>
<div class="layui-input-block">
<input type="text" name="file_path" class="layui-input" lay-verify="required" placeholder="请输入日志文件绝对路径" value="{$Request.param.file_path|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文件 inode用于检测日志轮转</label>
<div class="layui-input-block">
<input type="text" name="inode" class="layui-input" placeholder="请输入文件 inode用于检测日志轮转" value="{$Request.param.inode|default='0'}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上次读取到的字节偏移</label>
<div class="layui-input-block">
<input type="text" name="offset" class="layui-input" placeholder="请输入上次读取到的字节偏移" value="{$Request.param.offset|default='0'}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上次读取时间戳</label>
<div class="layui-input-block">
<input type="text" name="last_read_time" data-date="" data-date-type="datetime" class="layui-input" placeholder="请输入上次读取时间戳" value="{$Request.param.last_read_time|default='0'}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上次最后一行的 md5 哈希(容错校验)</label>
<div class="layui-input-block">
<input type="text" name="last_line_hash" class="layui-input" placeholder="请输入上次最后一行的 md5 哈希(容错校验)" value="{$Request.param.last_line_hash|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">解析失败累计次数</label>
<div class="layui-input-block">
<input type="text" name="parse_fail_count" class="layui-input" placeholder="请输入解析失败累计次数" value="{$Request.param.parse_fail_count|default='0'}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">解析失败样本行(最多保留若干条)</label>
<div class="layui-input-block">
<textarea name="parse_fail_samples" class="layui-textarea" placeholder="请输入解析失败样本行(最多保留若干条)">{$Request.param.parse_fail_samples|default=''}</textarea>
</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>