Skip to content

Commit 52eb2c7

Browse files
authored
feat: ERD, SQL for init database and docker-dev env for the database (#5)
1 parent 59c9784 commit 52eb2c7

File tree

5 files changed

+128
-0
lines changed

5 files changed

+128
-0
lines changed

ERD.png

228 KB
Loading

postgresql/Dockerfile-dev

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM pgvector/pgvector:0.8.0-pg16
2+
3+
ENV POSTGRES_USER=postgres \
4+
POSTGRES_PASSWORD=postgres \
5+
POSTGRES_DB=devdb
6+
7+
COPY ./init.sql /docker-entrypoint-initdb.d/
8+
9+
EXPOSE 5432

postgresql/docker-compose-dev.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: "3.8"
2+
3+
services:
4+
pgvector:
5+
build:
6+
context: .
7+
dockerfile: Dockerfile-dev
8+
container_name: pgvector-dev
9+
ports:
10+
- "5432:5432"
11+
environment:
12+
POSTGRES_USER: postgres
13+
POSTGRES_PASSWORD: postgres
14+
POSTGRES_DB: hrapp
15+
volumes:
16+
- pgdata_dev:/var/lib/postgresql/data
17+
restart: unless-stopped
18+
19+
volumes:
20+
pgdata_dev:

postgresql/init.sql

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
CREATE EXTENSION IF NOT EXISTS vector;
2+
3+
CREATE TYPE UserRole AS ENUM ('CANDIDATE', 'HR');
4+
5+
CREATE TABLE Users (
6+
userID UUID PRIMARY KEY,
7+
fullName VARCHAR(255),
8+
email VARCHAR(255) UNIQUE NOT NULL,
9+
passwordHash TEXT NOT NULL,
10+
role UserRole NOT NULL,
11+
creationTimestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
12+
);
13+
14+
CREATE TYPE JobStatus AS ENUM ('OPEN', 'CLOSED', 'DRAFT');
15+
CREATE TYPE RequirementType AS ENUM ('SKILL', 'EXPERIENCE', 'EDUCATION', 'OTHER');
16+
17+
CREATE TABLE JobPostings (
18+
jobID UUID PRIMARY KEY,
19+
title VARCHAR(255),
20+
description TEXT,
21+
status JobStatus,
22+
creationTimestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
23+
closingDate DATE,
24+
lastModifiedTimestamp TIMESTAMP,
25+
hrCreatorID UUID REFERENCES Users(userID),
26+
lastModifiedByUserID UUID REFERENCES Users(userID)
27+
);
28+
29+
CREATE TABLE JobRequirements (
30+
requirementID UUID PRIMARY KEY,
31+
jobID UUID REFERENCES JobPostings(jobID) ON DELETE CASCADE,
32+
description TEXT,
33+
type RequirementType,
34+
isMandatory BOOLEAN
35+
);
36+
37+
CREATE TYPE ApplicationStatus AS ENUM ('SUBMITTED', 'IN_REVIEW', 'SHORTLISTED', 'REJECTED', 'INTERVIEWING', 'OFFERED', 'HIRED');
38+
39+
CREATE TABLE Applications (
40+
applicationID UUID PRIMARY KEY,
41+
submissionTimestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
42+
status ApplicationStatus,
43+
resumeContent TEXT,
44+
originalResumeFilename VARCHAR(255),
45+
originalResumeFileReference VARCHAR(255),
46+
lastModifiedTimestamp TIMESTAMP,
47+
candidateID UUID REFERENCES Users(userID),
48+
jobID UUID REFERENCES JobPostings(jobID),
49+
lastModifiedByUserID UUID REFERENCES Users(userID)
50+
);
51+
52+
CREATE TYPE FilterStatus AS ENUM ('PASSED_FILTER', 'FAILED_FILTER', 'NOT_EVALUATED');
53+
54+
CREATE TABLE Assessments (
55+
assessmentID UUID PRIMARY KEY,
56+
assessmentTimestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
57+
overallScore FLOAT,
58+
summary TEXT,
59+
resumeAnalysisDetails JSON,
60+
filterStatus FilterStatus,
61+
lastModifiedTimestamp TIMESTAMP,
62+
applicationID UUID REFERENCES Applications(applicationID),
63+
lastModifiedByUserID UUID REFERENCES Users(userID)
64+
);
65+
66+
CREATE TABLE ChatSessions (
67+
sessionID UUID PRIMARY KEY,
68+
startTime TIMESTAMP,
69+
endTime TIMESTAMP,
70+
assessmentID UUID REFERENCES Assessments(assessmentID)
71+
);
72+
73+
CREATE TYPE MessageSender AS ENUM ('AI', 'CANDIDATE');
74+
75+
CREATE TABLE ChatMessages (
76+
messageID UUID PRIMARY KEY,
77+
sender MessageSender,
78+
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
79+
content TEXT,
80+
messageOrder INTEGER,
81+
sessionID UUID REFERENCES ChatSessions(sessionID)
82+
);
83+
84+
-- Store embeddings linked to documents or concepts used in GenAI
85+
CREATE TABLE Embeddings (
86+
embeddingID UUID PRIMARY KEY,
87+
documentReference TEXT, -- where the embedding comes from (the link to the document)
88+
content TEXT,
89+
embedding VECTOR(1536), -- adjust dimension as per model used (this one is text-embedding-ada-002 OpenAI 1536)
90+
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
91+
);

postgresql/run-dev.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
3+
# 构建镜像并启动服务
4+
docker-compose -f docker-compose-dev.yml up --build -d
5+
6+
# 可选:打印数据库连接信息
7+
echo "PostgreSQL is running at: localhost:5432"
8+
echo "Database: hrapp | User: postgres | Password: postgres"

0 commit comments

Comments
 (0)