Files
seqlog/CLAUDE.md
bourdon de39339620 重构:统一使用索引(Index)替代位置(Position)进行状态判断
## 主要变更

### 架构改进
- 明确索引(Index)与偏移(Offset)的职责分离
  - Index: 记录序号(逻辑概念),用于状态判断
  - Offset: 文件字节位置(物理概念),仅用于 I/O 操作

### API 变更
- 删除所有 Position 相关方法:
  - `LogCursor.StartPos()/EndPos()`
  - `LogTailer.GetStartPos()/GetEndPos()`
  - `TopicProcessor.GetProcessingPosition()/GetReadPosition()`
  - `Seqlog.GetProcessingPosition()/GetReadPosition()`

- 新增索引方法:
  - `LogCursor.StartIndex()/EndIndex()`
  - `LogTailer.GetStartIndex()/GetEndIndex()`
  - `TopicProcessor.GetProcessingIndex()/GetReadIndex()`
  - `Seqlog.GetProcessingIndex()/GetReadIndex()`
  - `Seqlog.GetProcessor()` - 获取 processor 实例以访问 Index

### 查询接口变更
- `RecordQuery.QueryOldest(startIndex, count, startIdx, endIdx)` - 使用索引参数
- `RecordQuery.QueryNewest(endIndex, count, startIdx, endIdx)` - 使用索引参数
- `RecordQuery.QueryAt(position, direction, count, startIdx, endIdx)` - startIdx/endIdx 用于状态判断

### 性能优化
- 状态判断改用整数比较,不再需要计算偏移量
- 减少不必要的索引到偏移的转换
- 只在实际文件 I/O 时才获取 offset

### 测试更新
- 更新所有测试用例使用新的 Index API
- 更新示例代码(topic_processor_example.go, webapp/main.go)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-03 23:50:53 +08:00

76 lines
1.8 KiB
Markdown
Raw Permalink 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.

# CLAUDE.md
本文件为 Claude Code 提供项目上下文信息。
**语言偏好:请使用中文进行所有交流和文档编写。**
## 项目概述
seqlog 是一个 Go 语言日志收集和处理库,模块路径为 `code.tczkiot.com/seqlog`
**核心特性:**
- 单文件日志处理:专注于单个日志文件的读取和处理
- 游标尺机制:通过游标跟踪日志文件的读取位置,支持断点续读
- 日志收集:提供高效的日志收集和解析能力
- 使用 Go 1.25.1 版本开发
**适用场景:**
- 日志文件监控和采集
- 增量日志读取和处理
- 日志文件位置追踪
## 项目结构
```
seqlog/
├── go.mod # Go 模块定义文件
└── CLAUDE.md # Claude Code 项目文档
```
## 开发指南
### 环境要求
- Go 1.25.1 或更高版本
- 模块路径:`code.tczkiot.com/seqlog`
### 代码规范
- 遵循 Go 官方代码风格指南
- 使用 `go fmt` 格式化代码
- 编写单元测试覆盖核心功能
- 导出的函数和类型需要添加文档注释
- **中英文混排规范**:注释等文字中,中英文之间、中文与阿拉伯数字之间必须添加空格
- ✅ 正确示例:`// 创建 logger 实例,默认日志级别为 INFO`
- ✅ 正确示例:`// 最多支持 100 个并发连接`
- ❌ 错误示例:`// 创建logger实例默认日志级别为INFO`
- ❌ 错误示例:`// 最多支持100个并发连接`
### 构建和测试
```bash
# 运行测试
go test ./...
# 构建项目
go build ./...
# 运行代码检查
go vet ./...
```
## 常用任务
### 添加新功能
1. 在相应的包中创建新文件
2. 实现功能并编写测试
3. 更新文档说明
### 发布新版本
1. 更新版本号
2. 运行完整测试套件
3. 创建 git tag
4. 推送到远程仓库
## 技术栈
- **语言**: Go 1.25.1
- **模块管理**: Go Modules