npm package: @hzhaholic/ai-resume-helper
Description: AI Resume Helper - Angular library for resume optimization, interview questions, and job matching
Author: hzhaholic
Latest version: 1.0.0

# AI Resume Helper

AI Resume Helper 是一个基于 Angular 18 的简历优化库，提供 AI 简历优化、面试问题生成和岗位匹配度分析等功能。

## ✨ 特性

- 📄 **简历优化**：使用 AI 提升简历专业度和竞争力
- 🎯 **面试问题**：生成针对性的面试问题和参考答案
- 📊 **岗位匹配**：分析简历与职位描述的匹配度
- 🎨 **简历模板**：提供多种专业简历模板
- 🔧 **模块化设计**：支持按需导入和使用
- 🚀 **Angular 18**：基于最新的 Angular 18 标准和 standalone 组件

## 📦 安装

使用 npm 安装：

```bash
npm install hzhaholic/ai-resume-helper
```

## 🚀 快速开始

### 1. 导入模块

在你的 Angular 项目中，你可以直接导入所需的组件和服务：

```typescript
import { ResumeOptimizerComponent } from 'hzhaholic/ai-resume-helper';
import { InterviewQuestionsComponent } from 'hzhaholic/ai-resume-helper';
import { JobMatchComponent } from 'hzhaholic/ai-resume-helper';
import { ResumeTemplatesComponent } from 'hzhaholic/ai-resume-helper';
import { AiResumeService, ResumeService } from 'hzhaholic/ai-resume-helper';
```

### 2. 使用组件

在你的模板中使用组件：

```html
<!-- 简历优化组件 -->
<app-resume-optimizer></app-resume-optimizer>

<!-- 面试问题组件 -->
<app-interview-questions></app-interview-questions>

<!-- 岗位匹配组件 -->
<app-job-match></app-job-match>

<!-- 简历模板组件 -->
<app-resume-templates></app-resume-templates>
```

### 3. 使用服务

在你的服务或组件中注入和使用服务：

```typescript
import { Component, inject } from '@angular/core';
import { AiResumeService, OptimizationResult } from 'hzhaholic/ai-resume-helper';

@Component({
  selector: 'app-my-component',
  standalone: true,
  template: `
    <button (click)="optimizeResume()">优化简历</button>
    <div *ngIf="result">{{ result.optimizedContent }}</div>
  `
})
export class MyComponent {
  private aiResumeService = inject(AiResumeService);
  result: OptimizationResult | null = null;

  optimizeResume() {
    const resumeContent = '你的简历内容...';
    this.aiResumeService.optimizeResume(resumeContent).subscribe({
      next: (result) => {
        this.result = result;
      },
      error: (error) => {
        console.error('优化失败:', error);
      }
    });
  }
}
```

## 📁 目录结构

```
├── lib/
│   ├── services/             # 服务层
│   │   ├── ai-resume.service.ts    # AI 简历服务
│   │   └── resume.service.ts       # 简历管理服务
│   └── components/           # 组件
│       ├── resume-optimizer/       # 简历优化组件
│       ├── interview-questions/    # 面试问题组件
│       ├── job-match/              # 岗位匹配组件
│       └── resume-templates/       # 简历模板组件
└── public-api.ts            # 公共 API 导出
```

## 🔧 API 文档

### AiResumeService

#### optimizeResume(content: string): Observable<OptimizationResult>

优化简历内容，返回优化结果。

**参数**：
- `content`: 简历内容

**返回值**：
- `OptimizationResult`: 优化结果，包含优化后的内容、评分、关键词等

#### generateInterviewQuestions(content: string, jobTitle: string): Observable<InterviewQuestion[]>

生成面试问题。

**参数**：
- `content`: 简历内容
- `jobTitle`: 目标职位

**返回值**：
- `InterviewQuestion[]`: 面试问题列表

#### calculateJobMatch(resumeContent: string, jobDescription: string): Observable<JobMatchResult>

计算简历与职位描述的匹配度。

**参数**：
- `resumeContent`: 简历内容
- `jobDescription`: 职位描述

**返回值**：
- `JobMatchResult`: 匹配度分析结果

### ResumeService

#### setResumeData(data: ResumeData): void

设置当前简历数据。

#### getResumeData(): ResumeData | null

获取当前简历数据。

#### addToSavedResumes(resume: ResumeData): void

保存简历到本地存储。

#### removeFromSavedResumes(id: string): void

从本地存储中删除简历。

## 🎯 接口定义

### OptimizationResult

```typescript
interface OptimizationResult {
  optimizedContent: string;  // 优化后的内容
  score: number;            // 专业度评分
  keywords: string[];       // 关键技能词
  suggestions: string[];    // 优化建议
  improvements: string[];   // 主要改进
}
```

### InterviewQuestion

```typescript
interface InterviewQuestion {
  id: string;               // 问题ID
  question: string;         // 问题内容
  category: string;         // 问题类别
  difficulty: 'easy' | 'medium' | 'hard';  // 难度
  suggestedAnswer?: string; // 参考答案
}
```

### JobMatchResult

```typescript
interface JobMatchResult {
  score: number;            // 匹配度评分
  matchPercentage: number;  // 匹配百分比
  strengths: string[];      // 优势
  weaknesses: string[];     // 不足
  suggestions: string[];    // 改进建议
  recommendations?: string[];  // 推荐行动
  keywordMatch?: {
    resume: string[];       // 简历关键词
    job: string[];          // 职位关键词
    missing: string[];      // 缺失关键词
  };
}
```

### ResumeData

```typescript
interface ResumeData {
  id: string;               // 简历ID
  content: string;          // 简历内容
  fileName: string;         // 文件名
  fileType: string;         // 文件类型
  uploadTime: Date;         // 上传时间
  optimizedContent?: string;  // 优化后的内容
  optimizationScore?: number; // 优化评分
  keywords?: string[];       // 关键词
  suggestions?: string[];    // 建议
}
```

## 🌟 示例

### 1. 简历优化示例

```typescript
import { Component, inject } from '@angular/core';
import { AiResumeService, OptimizationResult } from 'hzhaholic/ai-resume-helper';

@Component({
  selector: 'app-optimize-example',
  standalone: true,
  template: `
    <textarea [(ngModel)]="resumeContent" placeholder="输入简历内容"></textarea>
    <button (click)="optimize()">优化</button>
    <div *ngIf="result">
      <h3>优化结果</h3>
      <p>评分: {{ result.score }}/100</p>
      <div>{{ result.optimizedContent }}</div>
    </div>
  `
})
export class OptimizeExample {
  private aiResumeService = inject(AiResumeService);
  resumeContent = '';
  result: OptimizationResult | null = null;

  optimize() {
    this.aiResumeService.optimizeResume(this.resumeContent).subscribe({
      next: (result) => {
        this.result = result;
      }
    });
  }
}
```

### 2. 面试问题示例

```typescript
import { Component, inject } from '@angular/core';
import { AiResumeService, InterviewQuestion } from 'hzhaholic/ai-resume-helper';

@Component({
  selector: 'app-interview-example',
  standalone: true,
  template: `
    <textarea [(ngModel)]="resumeContent" placeholder="输入简历内容"></textarea>
    <input [(ngModel)]="jobTitle" placeholder="输入目标职位">
    <button (click)="generate()">生成问题</button>
    <div *ngFor="let question of questions">
      <h4>{{ question.question }}</h4>
      <p>类别: {{ question.category }}</p>
    </div>
  `
})
export class InterviewExample {
  private aiResumeService = inject(AiResumeService);
  resumeContent = '';
  jobTitle = '';
  questions: InterviewQuestion[] = [];

  generate() {
    this.aiResumeService.generateInterviewQuestions(this.resumeContent, this.jobTitle).subscribe({
      next: (questions) => {
        this.questions = questions;
      }
    });
  }
}
```

## 📝 注意事项

1. **Angular 版本兼容**：此库仅支持 Angular 18.0.0 及以上版本
2. **依赖**：需要确保项目中已安装以下依赖：
   - @angular/common
   - @angular/core
   - @angular/forms
   - @angular/router
   - rxjs
3. **使用方式**：所有组件均为 standalone 组件，可以直接在项目中使用
4. **数据存储**：使用 localStorage 进行数据持久化，确保在浏览器环境中使用
5. **缓存策略**：服务内部实现了 30 分钟的缓存机制，避免重复的 AI 调用

## 🤝 贡献

欢迎贡献代码和提出问题！请在 GitHub 上提交 Issue 或 Pull Request。

## 📄 许可证

MIT License

## 📞 联系

- GitHub: [https://github.com/hzhaholic/ai-resume-helper](https://github.com/hzhaholic/ai-resume-helper)
- Email: hzhaholic@example.com

---

**享受使用 AI Resume Helper 提升你的简历竞争力！** 🚀