Files
leaudit-platform-frontend/docs/PostgREST未使用函数清单.md
TanWenyan 3d6305376b docs: 添加 PostgREST 使用情况分析和删除确认功能文档
1. PostgREST 使用情况分析文档
   - PostgREST使用情况-后端API替代建议.md: 完整的迁移建议和优先级分析
   - PostgREST实际使用清单.md: 当前使用的 PostgREST 接口清单
   - PostgREST未使用函数清单.md: 已封装但未使用的函数列表
   - PostgREST请求模块清单.md: 所有请求模块的使用情况

2. 删除操作延迟确认功能实施文档
   - 功能设计和实现细节
   - 使用示例和最佳实践
   - 技术实现说明

这些文档用于:
- 追踪 PostgREST 到 FastAPI 的迁移进度
- 指导后续的接口迁移工作
- 记录 UI 改进的实施细节

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 18:18:20 +08:00

349 lines
8.7 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.
# PostgREST 未使用函数清单
> **本文档记录所有定义了但未被实际引用的 PostgREST 相关函数**
> **更新时间**: 2025-11-25
---
## 📋 目录
- [完全未使用的函数](#完全未使用的函数)
- [仅内部使用的函数](#仅内部使用的函数)
- [建议的清理操作](#建议的清理操作)
---
## 完全未使用的函数
这些函数被导出但在整个项目中没有任何地方调用。
### 1. ❌ `getUserBySub()`
**文件**: `app/api/login/auth.server.ts`
**行号**: 746
**PostgREST 操作**: `postgrestGet`
**表名**: `sso_users`
```typescript
export async function getUserBySub(sub: string) {
const userResult = await postgrestGet<SsoUser[]>("sso_users", {
filter: { sub: `eq.${sub}` }
});
// ...
}
```
**搜索结果**: 只在定义文件中出现 1 次
**建议**: 🗑️ **可以删除**
---
### 2. ❌ `getDocumentHistory()`
**文件**: `app/api/files/documents.ts`
**行号**: 665
**PostgREST 操作**: `postgrestPost` (RPC)
**RPC 函数**: `rpc/documents_get_document_history`
```typescript
export async function getDocumentHistory(
documentName: string,
userId: string,
excludeId: number,
token?: string
): Promise<{data?: DocumentVersionUI[]; error?: string; status?: number}> {
const response = await postgrestPost<any[], unknown>(
'rpc/documents_get_document_history',
{ p_document_name, p_user_id, p_exclude_id },
token
);
// ...
}
```
**搜索结果**: routes 和 components 中 0 次引用
**建议**: 🗑️ **可以删除** (新API已改用 `/admin/versions/documents-list`
---
### 3. ❌ `duplicateRule()`
**文件**: `app/api/evaluation_points/rules.ts`
**行号**: 740
**PostgREST 操作**: `postgrestGet` + `postgrestPost`
**表名**: `evaluation_points`
```typescript
export async function duplicateRule(id: string, token?: string): Promise<{
data: Rule;
error?: never
} | {
data?: never;
error: string;
status?: number
}> {
// 1. 获取原规则
const originalRule = await postgrestGet(...);
// 2. 创建副本
const result = await postgrestPost(...);
// ...
}
```
**搜索结果**: 只在定义文件中出现 1 次
**建议**: 🔄 **保留但标记为未来功能** (复制功能可能有计划)
---
### 4. ❌ `getEvaluationPointGroupsByIds()`
**文件**: `app/api/document-types/document-types.ts`
**行号**: 245
**PostgREST 操作**: `postgrestGet`
**表名**: `evaluation_point_groups`
```typescript
export async function getEvaluationPointGroupsByIds(
ids: number[] | number,
token?: string
): Promise<{
data: EvaluationPointGroup[];
error?: never
} | {
data?: never;
error: string;
status?: number
}> {
const response = await postgrestGet<EvaluationPointGroup[]>(
"evaluation_point_groups",
{
filter: { id: `in.(${idsArray.join(',')})` },
token
}
);
// ...
}
```
**搜索结果**: 只在定义文件中出现 5 次(都是定义和类型导出)
**建议**: 🗑️ **可以删除**
---
### 5. ❌ `createSimpleUserSession()`
**文件**: `app/api/login/auth.server.ts`
**行号**: 412
**PostgREST 操作**: 无(仅 session 管理)
```typescript
export async function createSimpleUserSession(
isAuthenticated: boolean,
userRole: UserRole,
redirectTo: string
) {
const session = await sessionStorage.getSession();
session.set("isAuthenticated", isAuthenticated);
session.set("userRole", userRole);
// ...
}
```
**搜索结果**: 只在定义文件中出现 1 次
**建议**: 🗑️ **可以删除** (已统一使用 `createUserSession`
---
### 6. ❌ `getFeaturedTemplates()`
**文件**: `app/api/contract-template/templates.ts`
**行号**: 347
**PostgREST 操作**: `postgrestGet`
**表名**: `contract_templates`
```typescript
export async function getFeaturedTemplates(
limit: number = 6,
jwt?: string
) {
const response = await postgrestGet<ContractTemplate[]>(
'contract_templates',
{
filter: { is_featured: 'eq.true' },
order: 'created_at.desc',
limit: limit,
token: jwt
}
);
// ...
}
```
**搜索结果**: 只在定义文件中出现 1 次
**建议**: 🔄 **保留但标记为未来功能** (推荐模板功能可能有计划)
---
## 仅内部使用的函数
这些函数虽然被导出,但只在同一个文件内部被调用,不被其他文件引用。
### 7. ⚠️ `getEvaluationResults()`
**文件**: `app/api/files/documents.ts`
**行号**: 147-159
**PostgREST 操作**: `postgrestGet`
**表名**: `evaluation_results`
```typescript
async function getEvaluationResults(id: number, frontendJWT?: string) {
const response = await postgrestGet<[]>('evaluation_results', {
filter: { 'document_id': `eq.${id}` },
token: frontendJWT
});
// ...
}
```
**搜索结果**: 只在 `documents.ts` 内部被 `convertToUIDocument()` 调用
**建议**: ✅ **改为内部函数**(去掉 export
---
### 8. ⚠️ `convertToUIDocument()`
**文件**: `app/api/files/documents.ts`
**行号**: 165
**PostgREST 操作**: 调用 `getEvaluationResults()`
**表名**: 间接查询 `evaluation_results`
```typescript
async function convertToUIDocument(
doc: Document,
frontendJWT?: string
): Promise<DocumentUI> {
const evaluationResult = await getEvaluationResults(doc.id, frontendJWT);
// ...
}
```
**搜索结果**: 只在 `documents.ts` 内部被其他函数调用
**建议**: ✅ **改为内部函数**(去掉 export
---
### 9. ⚠️ `convertApiRuleToFormData()`
**文件**: `app/api/evaluation_points/rules.ts`
**行号**: 1079
**PostgREST 操作**: 无(数据转换函数)
```typescript
export function convertApiRuleToFormData(
apiRule: ApiRule
): FormattedEvaluationPoint {
// 数据格式转换
}
```
**搜索结果**: 只在定义文件中出现 4 次(内部调用)
**建议**: ✅ **改为内部函数**(去掉 export
---
### 10. ⚠️ `convertToUITemplate()`
**文件**: `app/api/prompts/prompts.ts`
**行号**: 102
**PostgREST 操作**: 无(数据转换函数)
```typescript
export function convertToUITemplate(
template: PromptTemplate & { sso_users?: { username: string } }
): PromptTemplateUI {
// 数据格式转换
}
```
**搜索结果**: 只在定义文件中出现 5 次(内部调用)
**建议**: ✅ **改为内部函数**(去掉 export
---
## 建议的清理操作
### 🗑️ 立即删除(6 个函数)
| 序号 | 函数名 | 文件 | 原因 |
|------|--------|------|------|
| 1 | `getUserBySub()` | `auth.server.ts` | 完全未使用 |
| 2 | `getDocumentHistory()` | `documents.ts` | 已被新 API 替代 |
| 3 | `getEvaluationPointGroupsByIds()` | `document-types.ts` | 完全未使用 |
| 4 | `createSimpleUserSession()` | `auth.server.ts` | 已统一使用 `createUserSession` |
| 5 | ~~`duplicateRule()`~~ | `rules.ts` | 保留(可能是未来功能) |
| 6 | ~~`getFeaturedTemplates()`~~ | `templates.ts` | 保留(可能是未来功能) |
**实际建议删除**: **4 个函数**
---
### ✅ 改为私有函数(4 个函数)
将这些仅内部使用的函数改为非导出(去掉 `export` 关键字):
| 序号 | 函数名 | 文件 | 操作 |
|------|--------|------|------|
| 1 | `getEvaluationResults()` | `documents.ts` | 去掉 export |
| 2 | `convertToUIDocument()` | `documents.ts` | 去掉 export |
| 3 | `convertApiRuleToFormData()` | `rules.ts` | 去掉 export |
| 4 | `convertToUITemplate()` | `prompts.ts` | 去掉 export |
---
## 🔄 保留但标记的函数(2 个)
这些函数虽然当前未使用,但可能是计划中的功能:
| 序号 | 函数名 | 文件 | 建议 |
|------|--------|------|------|
| 1 | `duplicateRule()` | `rules.ts` | 添加 `@deprecated``@future` 注释 |
| 2 | `getFeaturedTemplates()` | `templates.ts` | 添加 `@deprecated``@future` 注释 |
---
## 📊 统计总结
| 类别 | 数量 |
|------|------|
| ❌ 完全未使用(建议删除) | 4 |
| ⚠️ 仅内部使用(改为私有) | 4 |
| 🔄 保留但标记 | 2 |
| **总计** | **10** |
---
## 🔍 检查方法
使用以下命令检查函数引用:
```bash
# 检查函数是否被引用(在 routes 和 components 中)
grep -r "函数名" app/routes app/components --include="*.ts" --include="*.tsx"
# 或使用 Grep 工具
Grep: pattern="函数名", glob="app/**/*.{ts,tsx}", output_mode="count"
```
---
## ⚠️ 注意事项
1. **删除前再次确认**: 虽然这些函数当前未被引用,但可能在其他分支或未来功能中需要
2. **Git 历史**: 删除前检查 Git 历史,看是否之前被使用过
3. **API 兼容性**: 如果这些函数是 API 的一部分,删除可能影响其他项目
4. **测试代码**: 检查测试文件中是否有引用(本次未扫描测试文件)
---
**维护建议**: 定期运行此检查,避免积累过多死代码。