# translateAll 函数重构 - 产品需求文档

## Overview
- **Summary**: 重构 `translateAll` 函数，实现智能分批和并发控制，优化小牛翻译API的调用效率
- **Purpose**: 根据小牛翻译API的限制条件，智能分批文本内容，确保请求不超过API容量限制，同时支持并发请求提高翻译效率
- **Target Users**: 使用 CsvAutoTranslator 类的开发者和使用者

## Goals
- 实现智能分批算法，预测JSON字节长度
- 确保每批不超过500条文本
- 确保每批JSON字节长度不超过4900字节
- 支持最多 `this.maxBatchSize 并发请求
- 保持原有的功能不变

## Non-Goals (Out of Scope)
- 不修改其他函数的功能
- 不改变API调用接口
- 不修改其他类的结构

## Background & Context
- 小牛翻译API有以下限制：
  - 请求长度：5000字节
  - 列表大小：50条（原有限制）
- 当前代码简单按50条分批，没有考虑文本长度
- 需要智能分批可以更高效利用API

## Functional Requirements
- **FR-1**: 实现JSON字节长度预测功能
- **FR-2**: 实现智能分批算法
- **FR-3**: 实现并发请求控制

## Non-Functional Requirements
- **NFR-1**: 分批算法高效，不显著增加处理时间
- **NFR-2**: 保持代码简洁易读

## Constraints
- **Technical**: TypeScript, Node.js
- **Dependencies**: 小牛翻译API
- **API限制**: 请求JSON长度≤5000字节，每批≤500条

## Assumptions
- JSON序列化后的字节长度预测合理
- 原有maxBatchSize为50（并发数）

## Acceptance Criteria

### AC-1: 智能分批功能
- **Given**: 有大量待翻译文本
- **When**: 调用 translateAll 函数
- **Then**: 文本被智能分批，每批不超过500条，且JSON字节长度不超过4900字节
- **Verification**: `programmatic`

### AC-2: 并发控制功能
- **Given**: 有多批待翻译文本
- **When**: 调用 translateAll 函数
- **Then**: 同时进行最多 this.maxBatchSize 个并发请求
- **Verification**: `programmatic`

### AC-3: 功能不变
- **Given**: 有文本需要翻译
- **When**: 调用 translateAll 函数
- **Then**: 返回正确的翻译结果，顺序与输入一致
- **Verification**: `programmatic`

## Open Questions
- 无
