Files
nginxserver/memory/session-20260619-1.md
2026-07-16 13:03:11 +08:00

89 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: session-20260619-1
description: 2026-06-19 第1次会话 — 审计字段全栈实现:创建人/更新人/时间 + 按创建时间倒序 + DNS本地审计表
metadata:
type: session
date: 2026-06-19
sessionNumber: 1
startTime: 2026-06-19T23:00:00+08:00
---
# 2026-06-19 第1次会话
## 会话摘要
全栈实现了审计字段功能Nginx转发管理和DNS解析管理两张表增加创建人/时间/更新人/时间字段前端显示并按创建时间倒序排列。数据库迁移已执行Java后端和Vue前端已编译部署到10.1.1.170的Docker容器。
## 关键操作
### 1. 数据库迁移
- **做了什么**: 给 `forwarding_rules``dns_zone_config``certificates` 三张表新增 `created_by VARCHAR(100)``updated_by VARCHAR(100)` 列;新建 `dns_records` 本地审计表
- **SQL文件**: `sql/audit_migration.sql`(用存储过程+INFORMATION_SCHEMA安全检查列是否已存在
- **执行方式**: Python pymysql 脚本直连 10.1.1.122
- **结果**: 6个审计列全部添加成功dns_records表已创建
### 2. Java实体层改动
- **做了什么**: ForwardingRule.java、DnsZoneConfig.java、Certificate.java 三个实体新增 `createdBy`/`updatedBy` 字段(@TableField + FieldFill自动填充新建 DnsRecord.java 实体和 DnsRecordMapper.java
- **结果**: 编译通过
### 3. MyMetaObjectHandler 自动填充
- **做了什么**: 新增 `resolveOperator()` 方法从 UserContext 获取当前用户优先级userName > userId > "系统"insertFill 同时填充 createdAt/updatedAt/createdBy/updatedByupdateFill 同时填充 updatedAt/updatedBy
- **结果**: 用户操作自动记录创建人/更新人;定时任务等无用户上下文场景写入"系统"
### 4. 业务层改动
- **ForwardingRuleService.java**: listRules() 增加 `.orderByDesc(ForwardingRule::getCreatedAt)` — 最近创建排最前
- **新建 DnsRecordService.java**: 核心理念"阿里云DNS为权威数据源本地dns_records仅做审计追踪"listRecords()合并阿里云记录+本地审计字段addRecord/updateRecord/deleteRecord先操作阿里云再同步本地
- **DnsController.java**: 注入 DnsRecordService 替代直接调 PythonApiClient
### 5. 前端改动
- **NginxForwarding.vue**: 桌面表格新增"创建人"(width:100)和"创建时间"(width:160)列;移动端卡片新增创建人和创建时间行;新增 formatDate() 函数
- **DnsManagement.vue**: 同上
- **结果**: 历史数据(null)显示"-",新数据正确显示创建人名称和格式化时间
### 6. 部署
- **数据库**: 已在10.1.1.122:3306/nginxserver执行迁移QA/PROD同一数据库
- **Java后端**: JAR编译后部署到10.1.1.170 Docker容器 `nginx-server-nginx-server`重启成功端口4002正常
- **Vue前端**: dist编译后部署到10.1.1.170 Docker容器 `nginx-web-nginx-web`端口3002正常
- **Python API**: 无需改动
## 重要信息
### 部署架构10.1.1.170 Docker
| 容器 | 端口 | 镜像 |
|------|------|------|
| nginx-server-nginx-server | 4002 | mokee-nginx-server-nginx-server |
| nginx-web-nginx-web | 3002 | mokee-nginx-web-nginx-web |
| mokeegateway-mokee-gateway-gateway | 9000 | Mokee Gateway |
### 数据库
- MySQL 10.1.1.122:3306/nginxserverQA和PROD共用
- 新增表 `dns_records` — DNS记录本地审计
- 3张表新增审计列forwarding_rules、dns_zone_config、certificates
### 审计字段自动填充逻辑
- 优先取 UserContext.getUserName()网关X-User-Name头
- 其次取 UserContext.getUserId()网关X-User-Id头
- 都没有则填"系统"(定时任务场景)
## 涉及文件清单
| 文件 | 操作 | 说明 |
|------|------|------|
| `sql/audit_migration.sql` | 新增 | SQL迁移脚本安全添加列+建表) |
| `scripts/run_audit_migration.py` | 新增 | Python数据库迁移执行脚本 |
| `entity/DnsRecord.java` | 新增 | DNS记录本地审计实体 |
| `mapper/DnsRecordMapper.java` | 新增 | DNS记录Mapper |
| `service/DnsRecordService.java` | 新增 | DNS记录业务服务阿里云+本地合并) |
| `entity/ForwardingRule.java` | 改 | 新增 createdBy/updatedBy |
| `entity/DnsZoneConfig.java` | 改 | 新增 createdBy/updatedBy |
| `entity/Certificate.java` | 改 | 新增 createdBy/updatedBy |
| `config/MyMetaObjectHandler.java` | 改 | 新增 createdBy/updatedBy 自动填充 |
| `service/ForwardingRuleService.java` | 改 | listRules() 加 ORDER BY created_at DESC |
| `controller/DnsController.java` | 改 | 改用 DnsRecordService |
| `views/NginxForwarding.vue` | 改 | 新增创建人/创建时间列 + formatDate |
| `views/DnsManagement.vue` | 改 | 新增创建人/创建时间列 + formatDate |
## 待处理
- [ ] 用户通过网关登录后新增一条转发规则,验证创建人显示为实际用户名(而非"系统"
- [ ] 用户新增一条DNS记录验证创建人/时间正确显示
- [ ] 后续可考虑清理策略dns_records表中status=0的记录定期归档