Merge branch 'ghb-11-22-createtable'

This commit is contained in:
2025-11-29 20:43:14 +08:00
11 changed files with 23445 additions and 3038 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,5 @@
{
<<<<<<< HEAD
<<<<<<< HEAD
"hash": "f01e8699",
"configHash": "180cc241",
@@ -10,30 +11,45 @@
"lockfileHash": "d0a71e3e",
"browserHash": "ab8f4b96",
>>>>>>> zzm
=======
"hash": "8bc55d47",
"configHash": "b81bb1f1",
"lockfileHash": "2742585f",
"browserHash": "65f4ed22",
>>>>>>> ghb-11-22-createtable
"optimized": {
"vue": {
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
<<<<<<< HEAD
<<<<<<< HEAD
"fileHash": "ffd8baa8",
=======
"fileHash": "4de6bb48",
>>>>>>> zzm
=======
"fileHash": "349f3f49",
>>>>>>> ghb-11-22-createtable
"needsInterop": false
},
"vitepress > @vue/devtools-api": {
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
"file": "vitepress___@vue_devtools-api.js",
<<<<<<< HEAD
<<<<<<< HEAD
"fileHash": "c91fbfa8",
=======
"fileHash": "05a8531e",
>>>>>>> zzm
=======
"fileHash": "0f3f40ef",
>>>>>>> ghb-11-22-createtable
"needsInterop": false
},
"vitepress > @vueuse/core": {
"src": "../../../../node_modules/vitepress/node_modules/@vueuse/core/index.mjs",
"src": "../../../../node_modules/vitepress/node_modules/@vueuse/core/dist/index.js",
"file": "vitepress___@vueuse_core.js",
<<<<<<< HEAD
<<<<<<< HEAD
"fileHash": "b91f8785",
=======
@@ -49,10 +65,14 @@
=======
"fileHash": "29ee9ca0",
>>>>>>> zzm
=======
"fileHash": "4cda59eb",
>>>>>>> ghb-11-22-createtable
"needsInterop": false
}
},
"chunks": {
<<<<<<< HEAD
<<<<<<< HEAD
"chunk-SMHOW2GZ": {
"file": "chunk-SMHOW2GZ.js"
@@ -63,6 +83,10 @@
},
"chunk-SFNBNC2X": {
"file": "chunk-SFNBNC2X.js"
=======
"chunk-32NP4N34": {
"file": "chunk-32NP4N34.js"
>>>>>>> ghb-11-22-createtable
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -49,10 +49,10 @@ var isBuiltInDirective = makeMap(
);
var cacheStringFunction = (fn) => {
const cache = /* @__PURE__ */ Object.create(null);
return (str) => {
return ((str) => {
const hit = cache[str];
return hit || (cache[str] = fn(str));
};
});
};
var camelizeRE = /-\w/g;
var camelize = cacheStringFunction(
@@ -11469,9 +11469,9 @@ function defineCustomElement(options, extraOptions, _createApp) {
VueCustomElement.def = Comp;
return VueCustomElement;
}
var defineSSRCustomElement = (options, extraOptions) => {
var defineSSRCustomElement = ((options, extraOptions) => {
return defineCustomElement(options, extraOptions, createSSRApp);
};
});
var BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
};
var VueElement = class _VueElement extends BaseClass {
@@ -12368,13 +12368,13 @@ var modifierGuards = {
var withModifiers = (fn, modifiers) => {
const cache = fn._withMods || (fn._withMods = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
for (let i = 0; i < modifiers.length; i++) {
const guard = modifierGuards[modifiers[i]];
if (guard && guard(event, modifiers)) return;
}
return fn(event, ...args);
});
}));
};
var keyNames = {
esc: "escape",
@@ -12388,7 +12388,7 @@ var keyNames = {
var withKeys = (fn, modifiers) => {
const cache = fn._withKeys || (fn._withKeys = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = (event) => {
return cache[cacheKey] || (cache[cacheKey] = ((event) => {
if (!("key" in event)) {
return;
}
@@ -12398,7 +12398,7 @@ var withKeys = (fn, modifiers) => {
)) {
return fn(event);
}
});
}));
};
var rendererOptions = extend({ patchProp }, nodeOps);
var renderer;
@@ -12411,13 +12411,13 @@ function ensureHydrationRenderer() {
enabledHydration = true;
return renderer;
}
var render = (...args) => {
var render = ((...args) => {
ensureRenderer().render(...args);
};
var hydrate = (...args) => {
});
var hydrate = ((...args) => {
ensureHydrationRenderer().hydrate(...args);
};
var createApp = (...args) => {
});
var createApp = ((...args) => {
const app = ensureRenderer().createApp(...args);
if (true) {
injectNativeTagCheck(app);
@@ -12442,8 +12442,8 @@ var createApp = (...args) => {
return proxy;
};
return app;
};
var createSSRApp = (...args) => {
});
var createSSRApp = ((...args) => {
const app = ensureHydrationRenderer().createApp(...args);
if (true) {
injectNativeTagCheck(app);
@@ -12457,7 +12457,7 @@ var createSSRApp = (...args) => {
}
};
return app;
};
});
function resolveRootNamespace(container) {
if (container instanceof SVGElement) {
return "svg";
@@ -12715,6 +12715,7 @@ export {
initDirectivesForSSR,
compile2 as compile
};
<<<<<<<< HEAD:docs/.vitepress/cache/deps/chunk-SFNBNC2X.js
/*! Bundled license information:
@vue/shared/dist/shared.esm-bundler.js:
@@ -12753,3 +12754,6 @@ vue/dist/vue.runtime.esm-bundler.js:
**)
*/
//# sourceMappingURL=chunk-SFNBNC2X.js.map
========
//# sourceMappingURL=chunk-32NP4N34.js.map
>>>>>>>> ghb-11-22-createtable:docs/.vitepress/cache/deps/chunk-32NP4N34.js

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -168,7 +168,11 @@ import {
withMemo,
withModifiers,
withScopeId
<<<<<<< HEAD
} from "./chunk-SFNBNC2X.js";
=======
} from "./chunk-32NP4N34.js";
>>>>>>> ghb-11-22-createtable
export {
BaseTransition,
BaseTransitionPropsValidators,
@@ -340,4 +344,3 @@ export {
withModifiers,
withScopeId
};
//# sourceMappingURL=vue.js.map

View File

@@ -1,3 +1,143 @@
龚涵博
contant:龚涵博111
contant:# 数据库表结构文档
## 1. 用户表 (users)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| user_id | 用户ID | INT | 主键 |
| username | 用户名 | VARCHAR | |
| age | 年龄 | INT | |
| education | 学历 | VARCHAR | |
| work_experience | 工作经验 | VARCHAR | |
| phone | 手机号 | VARCHAR | |
| email | 邮箱 | VARCHAR | |
| avatar | 头像 | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 2. 公司表 (companies)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| company_id | 公司ID | INT | 主键 |
| company_name | 公司名称 | VARCHAR | |
| industry | 行业 | VARCHAR | |
| scale | 公司规模 | VARCHAR | |
| nature | 企业性质 | VARCHAR | |
| location | 所在地 | VARCHAR | |
| description | 公司描述 | TEXT | |
| contact_info | 联系信息 | VARCHAR | |
| logo_url | 公司logo | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 3. 职位表 (jobs)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| job_id | 职位ID | INT | 主键 |
| company_id | 公司ID | INT | 外键 |
| job_title | 职位名称 | VARCHAR | |
| job_industry | 职位行业 | VARCHAR | |
| work_experience | 工作经验要求 | VARCHAR | |
| salary_range | 薪资范围 | VARCHAR | |
| education_requirement | 学历要求 | VARCHAR | |
| work_location | 工作地点 | VARCHAR | |
| job_description | 职位描述 | TEXT | |
| employment_type | 全职/兼职 | VARCHAR | |
| is_active | 是否有效 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 4. 人才简历表 (resumes)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| resume_id | 简历ID | INT | 主键 |
| user_id | 用户ID | INT | 外键 |
| expected_industry | 期望行业 | VARCHAR | |
| expected_salary | 期望薪资 | VARCHAR | |
| education_experience | 教育经历 | TEXT | |
| work_experience | 工作经历 | TEXT | |
| skills | 技能 | TEXT | |
| is_public | 是否公开 | BOOLEAN | |
| last_updated | 最后更新时间 | TIMESTAMP | |
| created_at | 创建时间 | TIMESTAMP | |
## 5. 招聘活动表 (recruitment_events)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| event_id | 活动ID | INT | 主键 |
| event_title | 活动标题 | VARCHAR | |
| event_time | 活动时间 | TIMESTAMP | |
| location | 活动地点 | VARCHAR | |
| description | 活动描述 | TEXT | |
| organizer | 主办方 | VARCHAR | |
| event_type | 活动类型 | VARCHAR | |
| status | 状态 | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 6. 资讯政策表 (news_policies)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| news_id | 资讯ID | INT | 主键 |
| title | 标题 | VARCHAR | |
| content | 内容 | TEXT | |
| type | 类型 | VARCHAR | |
| publish_time | 发布时间 | TIMESTAMP | |
| source | 来源 | VARCHAR | |
| is_top | 是否置顶 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
## 7. 热门搜索表 (hot_searches)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| search_id | 搜索ID | INT | 主键 |
| keyword | 搜索关键词 | VARCHAR | |
| search_type | 搜索类型 | VARCHAR | |
| search_count | 搜索次数 | INT | |
| display_order | 显示顺序 | INT | |
| is_active | 是否有效 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
## 关联关系表
### 8. 人才期望行业表 (resume_industries)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| id | ID | INT | 主键 |
| resume_id | 简历ID | INT | 外键 |
| industry_id | 行业ID | INT | |
### 9. 活动参与表 (event_participants)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| id | ID | INT | 主键 |
| event_id | 活动ID | INT | 外键 |
| company_id | 公司ID | INT | 外键 |
| participant_type | 参与类型 | VARCHAR | |
### 10. 行业分类表 (industries)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| industry_id | 行业ID | INT | 主键 |
| industry_name | 行业名称 | VARCHAR | |
| parent_id | 父级ID | INT | |
| level | 层级 | INT | |
| created_at | 创建时间 | TIMESTAMP | |
## 表关系说明
- 用户表 ↔ 人才简历表:一对多(一个用户可以有多个简历版本)
- 公司表 ↔ 职位表:一对多(一个公司发布多个职位)
- 人才简历表 ↔ 人才期望行业表:一对多(一个简历对应多个期望行业)
- 招聘活动表 ↔ 活动参与表:一对多(一个活动多个参与公司)