Skip to content

Commit 512ba40

Browse files
authored
Merge pull request #15 from HardMax71/dev
Dev
2 parents e772b2b + f9c4a6a commit 512ba40

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

.github/workflows/publish-images.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,10 @@ jobs:
6666
type=semver,pattern={{major}}.{{minor}}
6767
type=semver,pattern={{major}},enable=${{ !startsWith(github.ref, 'refs/tags/v0.') }}
6868
type=raw,value=0.1.${{ github.run_number }},enable=${{ github.ref == 'refs/heads/main' }}
69+
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
6970
type=sha,prefix=sha-
7071
flavor: |
71-
latest=auto
72+
latest=false
7273
7374
- name: Build and push Docker image
7475
id: push
@@ -93,7 +94,7 @@ jobs:
9394
with:
9495
subject-name: ${{ env.REGISTRY }}/${{ github.repository_owner }}/resumariner-${{ matrix.image }}
9596
subject-digest: ${{ steps.push.outputs.digest }}
96-
push-to-registry: true
97+
push-to-registry: false
9798

9899
summary:
99100
needs: build

backend/processor/views.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ class ResumeDetailView(APIView):
142142
@extend_schema(
143143
responses={
144144
200: ResumeResponse,
145-
400: OpenApiResponse(description="Resume not found"),
145+
404: OpenApiResponse(description="Resume not found"),
146146
},
147147
description="Get resume by ID. Returns status and full data if completed.",
148148
)
@@ -153,11 +153,13 @@ async def get(self, request: Request, uid: str) -> Response:
153153
@extend_schema(
154154
responses={
155155
204: OpenApiResponse(description="Resume deleted successfully"),
156-
400: OpenApiResponse(description="Resume not found"),
156+
404: OpenApiResponse(description="Resume not found"),
157157
},
158158
description="Delete resume and all associated data (vectors, files). Preserves shared entities.",
159159
)
160160
async def delete(self, request: Request, uid: str) -> Response:
161+
# Check if job exists before deleting
162+
await request.job_service.get_job(uid) # Raises NotFound if not exists
161163
await request.resume_service.delete_resume(uid)
162164
return Response(status=status.HTTP_204_NO_CONTENT)
163165

@@ -168,7 +170,7 @@ class ResumeByEmailView(APIView):
168170
@extend_schema(
169171
responses={
170172
204: OpenApiResponse(description="Resume deleted successfully"),
171-
400: OpenApiResponse(description="Resume not found"),
173+
404: OpenApiResponse(description="Resume not found"),
172174
},
173175
description="Delete resume by email address.",
174176
)

backend/rag/views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class ExplainMatchView(APIView):
2525
request=ExplainMatchRequestSerializer,
2626
responses={
2727
200: JobMatchExplanation,
28+
400: OpenApiResponse(description="Invalid request"),
2829
404: OpenApiResponse(description="Resume not found"),
2930
},
3031
description="Generate AI-powered explanation of candidate-job fit with structured strengths, concerns, and recommendations.",
@@ -87,6 +88,7 @@ class InterviewQuestionsView(APIView):
8788
request=InterviewQuestionsRequestSerializer,
8889
responses={
8990
200: InterviewQuestionSet,
91+
400: OpenApiResponse(description="Invalid request"),
9092
404: OpenApiResponse(description="Resume not found"),
9193
},
9294
description="Generate 6-12 interview questions tailored to candidate's background, with follow-ups and assessment criteria.",

backend/search/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class SemanticSearchView(APIView):
2929
request=VectorSearchQuerySchema,
3030
responses={
3131
200: SearchResponseSerializer,
32+
400: OpenApiResponse(description="Invalid search query"),
3233
429: OpenApiResponse(description=f"Rate limit exceeded ({THROTTLE_RATES.get('search', 'N/A')})"),
3334
},
3435
description="Perform semantic search using vector embeddings. Searches resume content by semantic similarity.",
@@ -52,6 +53,7 @@ class StructuredSearchView(APIView):
5253
request=GraphSearchQuerySchema,
5354
responses={
5455
200: SearchResponseSerializer,
56+
400: OpenApiResponse(description="Invalid search filters"),
5557
429: OpenApiResponse(description=f"Rate limit exceeded ({THROTTLE_RATES.get('search', 'N/A')})"),
5658
},
5759
description="Perform structured search using graph filters. Filters resumes by skills, role, company, location, and experience.",
@@ -73,6 +75,7 @@ class HybridSearchView(APIView):
7375
request=HybridSearchQuerySchema,
7476
responses={
7577
200: SearchResponseSerializer,
78+
400: OpenApiResponse(description="Invalid search parameters"),
7679
429: OpenApiResponse(description=f"Rate limit exceeded ({THROTTLE_RATES.get('search', 'N/A')})"),
7780
},
7881
description="Perform hybrid search combining semantic and structured approaches. Weighted combination of vector and graph search.",

0 commit comments

Comments
 (0)