# 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("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( '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( "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( '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 { 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. **测试代码**: 检查测试文件中是否有引用(本次未扫描测试文件) --- **维护建议**: 定期运行此检查,避免积累过多死代码。