Spaces:
Sleeping
Sleeping
Download docs/schema-onboarding.sql from mahrooshishaq/SmartfolioBackend: direct link, hf CLI and curl.
- Browser
- Download file 13 kB
-
https://huggingface.co/spaces/mahrooshishaq/SmartfolioBackend/resolve/main/docs/schema-onboarding.sql
- Command line
-
hf download hf://spaces/mahrooshishaq/SmartfolioBackend/docs/schema-onboarding.sql
-
curl -L -o schema-onboarding.sql https://huggingface.co/spaces/mahrooshishaq/SmartfolioBackend/resolve/main/docs/schema-onboarding.sql
13 kB
| -- ============================================================= | |
| -- MODULE: Onboarding | |
| -- File: docs/schema-onboarding.sql | |
| -- Managed by: TypeORM (synchronize: true in development) | |
| -- ============================================================= | |
| -- ----------------------------------------------------------- | |
| -- ENUMS | |
| -- ----------------------------------------------------------- | |
| -- Defined in: src/common/enums/user-enums.ts | |
| CREATE TYPE user_goal_type_enum AS ENUM ( | |
| 'university_search', | |
| 'course_recommendation', | |
| 'job_matching', | |
| 'career_guidance', | |
| 'skill_development', | |
| 'resume_improvement', | |
| 'interview_preparation', | |
| 'networking', | |
| 'salary_negotiation', | |
| 'career_transition' | |
| ); | |
| CREATE TYPE experience_level_enum AS ENUM ( | |
| 'student', | |
| 'recent_graduate', | |
| 'entry_level', -- 0-2 years | |
| 'mid_level', -- 3-5 years | |
| 'senior', -- 6-10 years | |
| 'lead', -- 10+ years | |
| 'executive' | |
| ); | |
| CREATE TYPE education_level_enum AS ENUM ( | |
| 'high_school', | |
| 'associate', | |
| 'bachelors', | |
| 'masters', | |
| 'phd', | |
| 'professional_cert', | |
| 'bootcamp' | |
| ); | |
| CREATE TYPE industry_type_enum AS ENUM ( | |
| 'technology', | |
| 'finance', | |
| 'healthcare', | |
| 'education', | |
| 'marketing', | |
| 'engineering', | |
| 'design', | |
| 'sales', | |
| 'consulting', | |
| 'manufacturing', | |
| 'retail', | |
| 'hospitality', | |
| 'legal', | |
| 'media', | |
| 'real_estate', | |
| 'other' | |
| ); | |
| CREATE TYPE career_stage_enum AS ENUM ( | |
| 'exploring', -- Exploring options | |
| 'transitioning', -- Changing careers | |
| 'advancing', -- Moving up in current field | |
| 'pivoting', -- Shifting within industry | |
| 'returning' -- Returning to workforce | |
| ); | |
| CREATE TYPE personality_trait_category_enum AS ENUM ( | |
| 'work_style', | |
| 'communication', | |
| 'problem_solving', | |
| 'leadership', | |
| 'learning', | |
| 'motivation' | |
| ); | |
| CREATE TYPE data_source_type_enum AS ENUM ( | |
| 'onboarding_quiz', | |
| 'personality_quiz', | |
| 'resume_analysis', | |
| 'search_behavior', | |
| 'user_input', | |
| 'system_inference' | |
| ); | |
| -- ----------------------------------------------------------- | |
| -- TABLE: user_profiles | |
| -- Entity: src/modules/users/entities/user-profile.entity.ts | |
| -- Description: Career profile built during onboarding. | |
| -- One-to-one with user. Powers LLM context. | |
| -- ----------------------------------------------------------- | |
| CREATE TABLE user_profiles ( | |
| -- Primary key | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| -- Foreign key | |
| user_id UUID NOT NULL UNIQUE | |
| REFERENCES "user"(id) ON DELETE CASCADE, | |
| -- Professional background | |
| experience_level experience_level_enum, | |
| years_of_experience INTEGER, | |
| education_level education_level_enum, | |
| current_role VARCHAR(200), | |
| target_role VARCHAR(200), | |
| current_industry industry_type_enum, | |
| target_industry industry_type_enum, | |
| career_stage career_stage_enum, | |
| -- Location preferences | |
| location VARCHAR(100), | |
| target_location VARCHAR(100), | |
| willing_to_relocate BOOLEAN NOT NULL DEFAULT FALSE, | |
| open_to_remote BOOLEAN NOT NULL DEFAULT FALSE, | |
| -- Skills & interests (free-form arrays) | |
| skills JSONB, -- e.g. ["JavaScript","React","Node.js"] | |
| interests JSONB, -- e.g. ["open-source","AI/ML"] | |
| -- Bio | |
| bio TEXT, | |
| -- Completeness tracking (0β100) | |
| profile_completeness INTEGER NOT NULL DEFAULT 0, | |
| -- Timestamps | |
| created_at TIMESTAMP NOT NULL DEFAULT NOW(), | |
| updated_at TIMESTAMP NOT NULL DEFAULT NOW() | |
| ); | |
| -- Indexes | |
| CREATE INDEX idx_user_profiles_user_id ON user_profiles (user_id); | |
| CREATE INDEX idx_user_profiles_career_stage ON user_profiles (career_stage); | |
| CREATE INDEX idx_user_profiles_experience ON user_profiles (experience_level); | |
| -- ----------------------------------------------------------- | |
| -- TABLE: user_goals | |
| -- Entity: src/modules/users/entities/user-goal.entity.ts | |
| -- Description: One or more goals per user, ranked by priority. | |
| -- Used to personalize LLM prompts. | |
| -- ----------------------------------------------------------- | |
| CREATE TABLE user_goals ( | |
| -- Primary key | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| -- Foreign key | |
| user_id UUID NOT NULL | |
| REFERENCES "user"(id) ON DELETE CASCADE, | |
| -- Goal details | |
| goal_type user_goal_type_enum NOT NULL, | |
| priority INTEGER NOT NULL DEFAULT 5, -- 1 (highest) to 5 (lowest) | |
| is_active BOOLEAN NOT NULL DEFAULT TRUE, | |
| source data_source_type_enum NOT NULL DEFAULT 'onboarding_quiz', | |
| -- Timestamps | |
| created_at TIMESTAMP NOT NULL DEFAULT NOW(), | |
| updated_at TIMESTAMP NOT NULL DEFAULT NOW() | |
| ); | |
| -- Indexes | |
| CREATE INDEX idx_user_goals_user_id ON user_goals (user_id); | |
| CREATE INDEX idx_user_goals_priority ON user_goals (user_id, priority); | |
| -- ----------------------------------------------------------- | |
| -- TABLE: user_data_sources | |
| -- Entity: src/modules/users/entities/user-data-source.entity.ts | |
| -- Description: Tracks every information source that contributed | |
| -- to the user's profile (data lineage / audit trail). | |
| -- ----------------------------------------------------------- | |
| CREATE TABLE user_data_sources ( | |
| -- Primary key | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| -- Foreign key | |
| user_id UUID NOT NULL | |
| REFERENCES "user"(id) ON DELETE CASCADE, | |
| -- Source info | |
| source_type data_source_type_enum NOT NULL, | |
| source_name VARCHAR(100) NOT NULL, -- e.g. "onboarding_v1", "resume_2024.pdf" | |
| raw_data JSONB NOT NULL, -- Raw extracted data from this source | |
| -- Processing status | |
| is_processed BOOLEAN NOT NULL DEFAULT FALSE, | |
| confidence INTEGER NOT NULL DEFAULT 100, -- Data quality 0-100 | |
| -- Timestamp | |
| created_at TIMESTAMP NOT NULL DEFAULT NOW() | |
| ); | |
| -- Indexes | |
| CREATE INDEX idx_user_data_sources_user_id ON user_data_sources (user_id); | |
| CREATE INDEX idx_user_data_sources_processed ON user_data_sources (user_id, is_processed); | |
| -- ----------------------------------------------------------- | |
| -- TABLE: user_personality_traits | |
| -- Entity: src/modules/users/entities/user-personality.entity.ts | |
| -- Description: Stores structured personality traits. | |
| -- Can be populated from onboarding quiz or future | |
| -- personality assessments. | |
| -- ----------------------------------------------------------- | |
| CREATE TABLE user_personality_traits ( | |
| -- Primary key | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| -- Foreign key | |
| user_id UUID NOT NULL | |
| REFERENCES "user"(id) ON DELETE CASCADE, | |
| -- Trait | |
| category personality_trait_category_enum NOT NULL, | |
| trait_key VARCHAR(100) NOT NULL, -- e.g. "prefers_collaborative_work" | |
| trait_value VARCHAR(255) NOT NULL, -- e.g. "high", "true", "introvert" | |
| score INTEGER, -- Optional 0-100 numeric score | |
| -- Source | |
| source VARCHAR(50) NOT NULL, -- e.g. "onboarding_quiz", "personality_test_v1" | |
| -- Timestamp | |
| created_at TIMESTAMP NOT NULL DEFAULT NOW() | |
| ); | |
| -- Indexes | |
| CREATE INDEX idx_user_personality_user_id ON user_personality_traits (user_id); | |
| CREATE INDEX idx_user_personality_category ON user_personality_traits (user_id, category); | |
| -- ----------------------------------------------------------- | |
| -- TABLE: user_context_snapshots | |
| -- Entity: src/modules/users/entities/user-context-snapshot.entity.ts | |
| -- Description: Pre-computed LLM context snapshots. | |
| -- Aggregates profile + goals + personality into | |
| -- a structured JSON ready for prompt injection. | |
| -- Regenerated whenever user data changes. | |
| -- ----------------------------------------------------------- | |
| CREATE TABLE user_context_snapshots ( | |
| -- Primary key | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| -- Foreign key | |
| user_id UUID NOT NULL | |
| REFERENCES "user"(id) ON DELETE CASCADE, | |
| -- Context type | |
| context_type VARCHAR(50) NOT NULL, -- "career_guidance", "resume_analysis", "job_matching" | |
| -- Pre-computed context | |
| structured_context JSONB NOT NULL, | |
| /* | |
| * Example structure: | |
| * { | |
| * "primary_goals": ["job_matching", "resume_improvement"], | |
| * "professional_context": { | |
| * "experience_level": "mid_level", | |
| * "years": 4, | |
| * "current_role": "Software Engineer", | |
| * "target_role": "Senior Engineer", | |
| * "industry": "technology" | |
| * }, | |
| * "personality_insights": { | |
| * "work_style": "collaborative", | |
| * "learning_preference": "hands_on" | |
| * }, | |
| * "skills": ["JavaScript", "React", "Node.js"], | |
| * "location": "New York, NY", | |
| * "preferences": { | |
| * "remote": true, | |
| * "willing_to_relocate": false | |
| * } | |
| * } | |
| */ | |
| llm_ready_prompt TEXT NOT NULL, -- Pre-formatted natural language context for LLM | |
| version INTEGER NOT NULL DEFAULT 1, -- Increments on each regeneration | |
| -- Timestamp | |
| created_at TIMESTAMP NOT NULL DEFAULT NOW() | |
| ); | |
| -- Indexes | |
| CREATE INDEX idx_context_snapshots_user_id ON user_context_snapshots (user_id); | |
| CREATE INDEX idx_context_snapshots_type ON user_context_snapshots (user_id, context_type); | |
| -- ----------------------------------------------------------- | |
| -- VARIABLE REFERENCE β ONBOARDING MODULE | |
| -- ----------------------------------------------------------- | |
| -- | |
| -- user_profiles: | |
| -- user_id β FK to user; one profile per user | |
| -- experience_level β Enum; populates LLM prompt ("mid_level" β "mid level") | |
| -- years_of_experience β Integer; used in LLM context generation | |
| -- education_level β Enum; shown in LLM context | |
| -- current_role β Free text; used in resume scoring relevance (Lens A) | |
| -- target_role β Free text; used in resume scoring relevance (Lens A) | |
| -- current_industry β Enum; used in LLM context | |
| -- target_industry β Enum; used in LLM context | |
| -- career_stage β Enum; used to calibrate LLM tone (entry vs senior) | |
| -- location / target_location β Used in job matching context | |
| -- willing_to_relocate β Preference flag for job matching | |
| -- open_to_remote β Preference flag for job matching | |
| -- skills β JSONB array; injected into resume scoring prompt | |
| -- interests β JSONB array; used in LLM context | |
| -- bio β Free text; appended to LLM context if present | |
| -- profile_completeness β Computed 0-100; shown in GET /onboarding/status | |
| -- | |
| -- user_goals: | |
| -- goal_type β Enum; determines which LLM features to activate | |
| -- priority β Int 1-5; first goal is primary, drives LLM focus | |
| -- is_active β Allows deactivating goals without deletion | |
| -- source β Tracks how the goal was captured | |
| -- | |
| -- user_data_sources: | |
| -- source_type β Enum; classifies origin of data | |
| -- source_name β String identifier; useful for debugging/auditing | |
| -- raw_data β JSONB blob of original unprocessed input | |
| -- is_processed β Flag; marks when raw_data has been distributed | |
| -- confidence β Quality score; lower = less reliable data | |
| -- | |
| -- user_personality_traits: | |
| -- category β Enum groups traits (work_style, leadership, etc.) | |
| -- trait_key β Snake_case string key e.g. "prefers_deep_work" | |
| -- trait_value β String value e.g. "high", "true", "introvert" | |
| -- score β Optional 0-100 numeric; NULL if not applicable | |
| -- source β Which quiz/tool produced this trait | |
| -- | |
| -- user_context_snapshots: | |
| -- context_type β Which LLM use-case this snapshot is for | |
| -- structured_context β JSONB pre-aggregated from profile + goals + traits | |
| -- llm_ready_prompt β Text ready to be injected into Groq/GPT system prompt | |
| -- version β Increments each time snapshot is regenerated | |