
# 修复剩余内插字符串测试用例 - Product Requirement Document

## Overview
- **Summary**: 修复剩余的内插字符串测试用例失败问题，特别是 `should handle special characters in string expression 5` 和 `should handle special characters in string expression 6`
- **Purpose**: 解决测试用例中内插字符串的 originalIndex 不正确的问题，确保所有 80 个测试用例都能通过
- **Target Users**: 使用 CSharpStringExtractor 工具来扫描和提取 C# 代码中字符串字面量的开发者

## Goals
- 修复 `should handle special characters in string expression 5` 测试用例的失败问题
- 修复 `should handle special characters in string expression 6` 测试用例的失败问题
- 确保所有内插字符串的 originalIndex 计算正确
- 保持所有现有测试用例的通过状态

## Non-Goals (Out of Scope)
- 改变工具的整体架构或 API 接口
- 添加超出内插字符串索引计算之外的新功能

## Background &amp; Context
- 当前已经修复了内插字符串中 `{{` 和 `}}` 转义序列的处理问题
- 但是还有几个测试用例失败，问题是 originalIndex 计算不正确（相差 1 个字符）
- 需要检查索引计算的逻辑，可能与字符串提取过程中的位置计算有关

## Functional Requirements
- **FR-1**: 工具必须正确计算所有内插字符串的 originalIndex
- **FR-2**: 工具必须正确处理对象初始化器中的内插字符串
- **FR-3**: 工具必须正确处理函数调用参数中的内插字符串

## Non-Functional Requirements
- **NFR-1**: 所有 80 个现有测试用例必须继续通过
- **NFR-2**: 修复不能降低工具的性能
- **NFR-3**: 代码必须遵循 TypeScript 语言规范

## Constraints
- **Technical**: 必须使用 TypeScript 编写，保持现有代码风格和架构
- **Dependencies**: 不添加任何新的依赖库

## Assumptions
- 问题与索引计算相关，相差 1 个字符通常是因为前导空白或换行符的处理
- 用户期望的行为符合 C# 语言规范

## Acceptance Criteria

### AC-1: 剩余内插字符串测试用例通过
- **Given**: 包含内插字符串的测试用例
- **When**: 运行所有测试用例
- **Then**: `should handle special characters in string expression 5` 和 `should handle special characters in string expression 6` 测试用例应该成功通过
- **Verification**: `programmatic`

### AC-2: 所有现有测试继续通过
- **Given**: 完整的测试套件
- **When**: 运行所有测试用例
- **Then**: 所有 80 个现有测试用例应该继续通过
- **Verification**: `programmatic`
- **Notes**: 保持向后兼容性

## Open Questions
- 无

