feat: CV overhaul — modernize skills, add projects, fix proficiency scale
- Title: "Senior Technical Consultant & Full-Stack Developer" - Add Swift & macOS Development skill category (SoundInbox, Commando) - Rename "AI-Assisted Development" → "AI Engineering & Integration" with MCP, ADK, Gemini, CLIP - Remove "Design Tools" (Corel Draw, GIMP) and "Legacy Enterprise" (Struts, Yii, Zend) - Remove jQuery, Assembler, Groovy; add Swift to programming languages - Rewrite Team Management with professional language - Proficiency scale: 1-5 → 1-10 (validation, tests, chat agent prompt) - Add SoundInbox (Swift) and Commando (Go+SwiftUI) to projects - Remove personal details: dateOfBirth, placeOfBirth, domestika, driverLicense - Trim weak LinkedIn Learning courses (speed reading, persuasive UX) - Fix Spanish soft_skills duplicates - Chat agent: 11 new assertions (proficiency scale, new projects, removed skills) - Fix hardcoded year 2025 in TestDefaultCVShortcut → time.Now().Year()
This commit is contained in:
@@ -61,6 +61,7 @@ QUERY STRATEGY BY QUESTION TYPE:
|
||||
- NEVER search only projects or only experience — always use cross-section search.
|
||||
- Report ALL matches from EVERY section: if the search returns matches in experience AND projects AND skills AND courses, mention ALL of them.
|
||||
- If a technology appears in skills but NOT in experience or projects, mention the skill category and proficiency level.
|
||||
- IMPORTANT: Proficiency is on a scale of 1 to 10 (not 1 to 5). Always say "X out of 10" or "X/10". Each unit represents half a star on a 5-star visual scale.
|
||||
- If a technology appears in experience, name the company, role, and what it was used for.
|
||||
|
||||
2. COMPANY / EMPLOYER QUESTIONS (e.g. "What companies?", "Tell me about SAP"):
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
// TestHome tests the Home handler
|
||||
@@ -132,6 +134,8 @@ func TestDefaultCVShortcut(t *testing.T) {
|
||||
|
||||
handler := newTestCVHandler(t, "localhost:1999", nil)
|
||||
|
||||
currentYear := fmt.Sprintf("%d", time.Now().Year())
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
path string
|
||||
@@ -139,12 +143,12 @@ func TestDefaultCVShortcut(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
name: "Valid shortcut URL (current year EN)",
|
||||
path: "/cv-jamr-2025-en.pdf",
|
||||
path: "/cv-jamr-" + currentYear + "-en.pdf",
|
||||
expectStatus: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "Valid shortcut URL (current year ES)",
|
||||
path: "/cv-jamr-2025-es.pdf",
|
||||
path: "/cv-jamr-" + currentYear + "-es.pdf",
|
||||
expectStatus: http.StatusOK,
|
||||
},
|
||||
{
|
||||
@@ -154,7 +158,7 @@ func TestDefaultCVShortcut(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "Invalid language",
|
||||
path: "/cv-jamr-2025-fr.pdf",
|
||||
path: "/cv-jamr-" + currentYear + "-fr.pdf",
|
||||
expectStatus: http.StatusNotFound,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -246,11 +246,11 @@ func (s *Skills) Validate() error {
|
||||
})
|
||||
}
|
||||
|
||||
// Proficiency should be between 1-5 (typical skill rating)
|
||||
if cat.Proficiency < 1 || cat.Proficiency > 5 {
|
||||
// Proficiency should be between 1-10 (half-star increments over 5 stars)
|
||||
if cat.Proficiency < 1 || cat.Proficiency > 10 {
|
||||
errors = append(errors, ValidationError{
|
||||
Field: fmt.Sprintf("technical[%d].proficiency", i),
|
||||
Message: "proficiency must be between 1 and 5",
|
||||
Message: "proficiency must be between 1 and 10",
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ func TestSkills_Validate(t *testing.T) {
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
errMsg: "proficiency must be between 1 and 5",
|
||||
errMsg: "proficiency must be between 1 and 10",
|
||||
},
|
||||
{
|
||||
name: "Invalid - Proficiency too high",
|
||||
@@ -316,13 +316,13 @@ func TestSkills_Validate(t *testing.T) {
|
||||
Technical: []cv.SkillCategory{
|
||||
{
|
||||
Category: "Backend",
|
||||
Proficiency: 6,
|
||||
Proficiency: 11,
|
||||
Items: []string{"Go"},
|
||||
},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
errMsg: "proficiency must be between 1 and 5",
|
||||
errMsg: "proficiency must be between 1 and 10",
|
||||
},
|
||||
{
|
||||
name: "Invalid - No skill items",
|
||||
@@ -609,7 +609,7 @@ func TestCV_Validate(t *testing.T) {
|
||||
Technical: []cv.SkillCategory{
|
||||
{
|
||||
Category: "Backend",
|
||||
Proficiency: 10, // Invalid
|
||||
Proficiency: 11, // Invalid
|
||||
Items: []string{"Go"},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user