add job hire status record table and relevant save logic

This commit is contained in:
geekgeekrun
2025-12-23 17:05:21 +08:00
parent e986fddbfb
commit aa410cfc60
8 changed files with 254 additions and 12 deletions

View File

@@ -0,0 +1,15 @@
import { JobHireStatus } from "../enums";
import { requireTypeorm } from "../utils/module-loader";
const { Entity, Column, PrimaryColumn } = requireTypeorm();
@Entity()
export class JobHireStatusRecord {
@PrimaryColumn()
encryptJobId: string;
@Column()
hireStatus: JobHireStatus;
@Column()
lastSeenDate: Date;
}

View File

@@ -38,4 +38,10 @@ export enum JobSource {
export enum CombineRecommendJobFilterType {
ANY_COMBINE = 1,
STATIC_COMBINE = 2,
}
export enum JobHireStatus {
HIRING = 1,
CLOSED = 2,
DELETED = 3,
}

View File

@@ -11,6 +11,7 @@ import { JobInfoChangeLog } from "./entity/JobInfoChangeLog";
import { MarkAsNotSuitLog } from "./entity/MarkAsNotSuitLog";
import { ChatMessageRecord } from "./entity/ChatMessageRecord";
import { LlmModelUsageRecord } from "./entity/LlmModelUsageRecord";
import { JobHireStatusRecord } from "./entity/JobHireStatusRecord";
function getBossInfoIfIsEqual (savedOne, currentOne) {
if (savedOne === currentOne) {
@@ -365,3 +366,12 @@ export async function getBossIdsByJobIds (ds: DataSource, jobIds: string[] = [])
})
return result
}
export async function saveJobHireStatusRecord(
ds: DataSource,
record: JobHireStatusRecord
) {
const jobHireStatusRecordRepository = ds.getRepository(JobHireStatusRecord);
await jobHireStatusRecordRepository.save(record);
return
}

View File

@@ -20,6 +20,7 @@ import { VCompanyLibrary } from "./entity/VCompanyLibrary"
import { VMarkAsNotSuitLog } from "./entity/VMarkAsNotSuitLog"
import { ChatMessageRecord } from './entity/ChatMessageRecord'
import { LlmModelUsageRecord } from './entity/LlmModelUsageRecord'
import { JobHireStatusRecord } from './entity/JobHireStatusRecord'
import sqlite3 from 'sqlite3';
import {
@@ -28,15 +29,17 @@ import {
saveMarkAsNotSuitRecord,
getNotSuitMarkRecordsInLastSomeDays,
getChatStartupRecordsInLastSomeDays,
getBossIdsByJobIds
getBossIdsByJobIds,
saveJobHireStatusRecord
} from "./handlers";
import { UpdateChatStartupLogTable1729182577167 } from "./migrations/1729182577167-UpdateChatStartupLogTable";
import minimist from 'minimist'
import { UpdateBossInfoTable1732032381304 } from "./migrations/1732032381304-UpdateBossInfoTable";
import { MarkAsNotSuitOp, MarkAsNotSuitReason } from "./enums";
import { JobHireStatus, MarkAsNotSuitOp, MarkAsNotSuitReason } from "./enums";
import { AddColumnForMarkAsNotSuitLog1746092370665 } from "./migrations/1746092370665-AddColumnForMarkAsNotSuitLog";
import { Init1000000000000 } from "./migrations/1000000000000-Init";
import { AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526 } from "./migrations/1752380078526-AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog";
import { AddJobHireStatusTable1766466476822 } from "./migrations/1766466476822-AddJobHireStatusTable";
const lodashImportPromise = import('lodash-es')
export function initDb(dbFilePath) {
@@ -67,13 +70,15 @@ export function initDb(dbFilePath) {
VMarkAsNotSuitLog,
ChatMessageRecord,
LlmModelUsageRecord,
JobHireStatusRecord,
],
migrations: [
Init1000000000000,
UpdateChatStartupLogTable1729182577167,
UpdateBossInfoTable1732032381304,
AddColumnForMarkAsNotSuitLog1746092370665,
AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526
AddJobSourceColumnForChatStartupLogAndMarkAsNotSuitLog1752380078526,
AddJobHireStatusTable1766466476822
],
migrationsRun: true
});
@@ -197,6 +202,15 @@ export default class SqlitePlugin {
await saveJobInfoFromRecommendPage(ds, _jobInfo);
});
hooks.jobDetailIsGetFromRecommendList.tapPromise("SqlitePlugin", async ({ jobInfo }) => {
const ds = await this.initPromise;
return await saveJobHireStatusRecord(ds, {
encryptJobId: jobInfo.encryptId,
hireStatus: JobHireStatus.HIRING,
lastSeenDate: new Date()
});
});
hooks.newChatStartup.tapPromise("SqlitePlugin", async (_jobInfo, { chatStartupFrom = ChatStartupFrom.AutoFromRecommendList, jobSource = undefined } = {}) => {
const ds = await this.initPromise;
return await saveChatStartupRecord(ds, _jobInfo, this.userInfo, {

View File

@@ -0,0 +1,12 @@
import { MigrationInterface, QueryRunner } from "typeorm"
export class AddJobHireStatusTable1766466476822 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`CREATE TABLE IF NOT EXISTS "job_hire_status_record" ("encryptJobId" varchar PRIMARY KEY NOT NULL, "hireStatus" integer NOT NULL, "lastSeenDate" datetime NOT NULL);`
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
}
}