JobData/app/models/company.py
2026-03-22 23:22:30 +08:00

59 lines
2.8 KiB
Python

from tortoise import fields
from .base import BaseModel, TimestampMixin
class BaseCompanyModel(BaseModel, TimestampMixin):
source_company_id = fields.CharField(max_length=128, unique=True, index=True, description="来源站点公司ID")
company_name = fields.CharField(max_length=255, index=True, description="公司名称")
company_type = fields.CharField(max_length=100, null=True, description="公司性质")
industry = fields.CharField(max_length=255, null=True, description="行业")
company_size = fields.CharField(max_length=100, null=True, description="公司规模")
financing_stage = fields.CharField(max_length=100, null=True, description="融资阶段")
city = fields.CharField(max_length=100, null=True, description="城市")
address = fields.TextField(null=True, description="地址")
website = fields.CharField(max_length=500, null=True, description="官网")
logo_url = fields.CharField(max_length=1000, null=True, description="Logo地址")
description = fields.TextField(null=True, description="公司简介")
raw_json = fields.JSONField(description="原始公司JSON")
first_crawled_at = fields.DatetimeField(index=True, description="首次抓取时间")
last_crawled_at = fields.DatetimeField(index=True, description="最后抓取时间")
class Meta:
abstract = True
class BossCompany(BaseCompanyModel):
class Meta:
table = "boss_company"
class QcwyCompany(BaseCompanyModel):
class Meta:
table = "qcwy_company"
class ZhilianCompany(BaseCompanyModel):
class Meta:
table = "zhilian_company"
class CompanyCleaningQueue(BaseModel, TimestampMixin):
source = fields.CharField(max_length=20, index=True, description="来源平台")
company_id = fields.CharField(max_length=128, index=True, description="来源站点公司ID")
company_name = fields.CharField(max_length=255, null=True, description="公司名称")
status = fields.CharField(max_length=20, default="pending", index=True, description="状态")
error_msg = fields.TextField(null=True, description="错误信息")
retry_count = fields.IntField(default=0, description="重试次数")
started_at = fields.DatetimeField(null=True, description="开始处理时间")
finished_at = fields.DatetimeField(null=True, description="处理结束时间")
jobs_fetched = fields.IntField(default=0, description="抓取到的职位数")
jobs_stored = fields.IntField(default=0, description="写入ClickHouse成功数")
jobs_duplicate = fields.IntField(default=0, description="职位重复数")
jobs_failed = fields.IntField(default=0, description="职位写入失败数")
jobs_error_msg = fields.TextField(null=True, description="职位同步错误信息")
class Meta:
table = "company_cleaning_queue"
unique_together = (("source", "company_id"),)