- Implement comprehensive error handling strategies in app-flow.md - Add detailed testing workflows for unit, integration, and E2E tests - Update Chrome extension manifest and icon configurations - Improve UI package configuration and component structure - Update project progress and tech stack documentation - Optimize extension package icon and HTML setup
6.4 KiB
6.4 KiB
应用流程文档
1. 核心服务初始化
-
Core包初始化
// 初始化核心服务 import { modelManager, templateManager, historyManager } from '@prompt-optimizer/core' // 加载配置 await modelManager.loadConfig() await templateManager.loadTemplates() await historyManager.loadHistory() -
服务实例创建
import { createLLMService, createPromptService } from '@prompt-optimizer/core' const llmService = createLLMService() const promptService = createPromptService()
2. Web应用初始化
-
应用配置加载
- 环境变量加载
- 主题设置初始化
- Vue应用配置
-
服务状态同步
- 模型状态初始化
- 模板数据加载
- 历史记录同步
3. 提示词优化流程
-
用户输入阶段
// 输入验证 const validateInput = async (prompt: string) => { try { await promptService.validateInput(prompt) } catch (err) { handleValidationError(err) } } -
优化处理
// 使用LangChain处理 const optimizePrompt = async (prompt: string) => { try { const stream = await llmService.optimizeWithStream(prompt) handleStreamResponse(stream) } catch (err) { handleOptimizationError(err) } } -
结果处理
// 处理流式响应 const handleStreamResponse = (stream: LLMResponse) => { stream.on('data', chunk => updateUI(chunk)) stream.on('end', () => saveToHistory()) stream.on('error', err => handleStreamError(err)) }
4. 模型管理流程
-
模型配置
// 配置模型 const configureModel = async (config: ModelConfig) => { try { await modelManager.updateModel(config) await modelManager.testConnection(config.provider) } catch (err) { handleConfigError(err) } } -
API密钥管理
// 更新API密钥 const updateApiKey = async (provider: string, key: string) => { try { await modelManager.setApiKey(provider, key) await modelManager.validateApiKey(provider) } catch (err) { handleApiKeyError(err) } }
5. 模板管理流程
-
模板操作
// 模板管理 const manageTemplate = async (template: TemplateConfig) => { try { await templateManager.saveTemplate(template) await templateManager.validateTemplate(template) } catch (err) { handleTemplateError(err) } } -
模板应用
// 应用模板 const applyTemplate = async (templateId: string) => { try { const template = await templateManager.getTemplate(templateId) await promptService.applyTemplate(template) } catch (err) { handleTemplateApplyError(err) } }
6. 历史记录管理
-
记录保存
// 保存历史记录 const saveHistory = async (record: PromptRecord) => { try { await historyManager.addRecord(record) await historyManager.sync() } catch (err) { handleHistoryError(err) } } -
记录操作
// 历史记录操作 const manageHistory = async () => { try { const records = await historyManager.getRecords() const filtered = await historyManager.filterRecords(query) await historyManager.deleteRecord(recordId) } catch (err) { handleHistoryOperationError(err) } }
7. 错误处理流程
-
API错误处理
// API错误处理 const handleApiError = async (err: APIError) => { if (err.isRetryable) { const result = await retryWithBackoff(operation, { maxRetries: 3, initialDelay: 1000 }) return result } // 错误上报 errorMonitor.captureError(err) // 用户通知 toast.error(err.userMessage) // 降级处理 return fallbackOperation() } -
验证错误处理
// 验证错误处理 const handleValidationError = (err: ValidationError) => { // 字段验证 const fieldErrors = validateFields(err.fields) // UI更新 updateFormErrors(fieldErrors) // 焦点处理 focusFirstError(fieldErrors) // 错误提示 toast.warning(err.message) } -
全局错误处理
// 全局错误处理 app.config.errorHandler = (err, vm, info) => { // 错误分类 const errorType = classifyError(err) // 错误恢复 handleErrorRecovery(errorType, vm) // 错误上报 reportError(err, { component: vm.$options.name, info, state: vm.$data }) // 用户反馈 showErrorFeedback(errorType) }
8. 数据同步流程
-
本地存储
// 数据同步 const syncData = async () => { try { await modelManager.sync() await templateManager.sync() await historyManager.sync() } catch (err) { handleSyncError(err) } } -
状态管理
// 状态更新 const updateState = async () => { try { await refreshModels() await refreshTemplates() await refreshHistory() notifyStateChange() } catch (err) { handleStateUpdateError(err) } }
9. 测试流程
-
单元测试
// 组件测试 const testComponent = async () => { const wrapper = mount(Component, { props: { /* ... */ }, global: { plugins: [/* ... */], mocks: { /* ... */ } } }) await wrapper.trigger('click') expect(wrapper.emitted()).toHaveProperty('event') } -
集成测试
// 服务集成测试 const testService = async () => { const service = createService() const result = await service.operation() expect(result).toBeDefined() // 错误测试 await expect( service.invalidOperation() ).rejects.toThrow(ServiceError) } -
E2E测试
// 端到端测试 const testFlow = async ({ page }) => { await page.goto('/') await page.fill('#prompt', 'test prompt') await page.click('#optimize') await expect( page.locator('#result') ).toContainText('优化结果') }