接口文档补充修改

This commit is contained in:
Àî×ÚÕñ 2022-07-15 17:10:49 +08:00
parent cd3098675e
commit 2b57c5db5a
13 changed files with 521 additions and 43 deletions

View File

@ -1,31 +1,18 @@
import datetime
import mimetypes
from collections import defaultdict
import time
import os
from urllib.parse import quote
import re
from clickhouse_driver import Client
import pandas as pd
import numpy as np
from fastapi import APIRouter, Depends, Request, File, UploadFile
from motor.motor_asyncio import AsyncIOMotorDatabase
from pandas import DataFrame
from starlette.responses import StreamingResponse
from utils.jianli import get_resume
import crud, schemas
from common import *
from api import deps
from core.configuration import *
from db import get_database
from db.ckdb import get_ck_db, CKDrive, ckdb
from db.redisdb import get_redis_pool, RedisDrive
from db.ckdb import get_ck_db, CKDrive
from models.behavior_analysis import BehaviorAnalysis
from models.user_analysis import UserAnalysis
from models.interview_zsgc import InterviewDo
from utils import DfToStream, get_bijiao, get_time, qujian_time, Download_xlsx
from utils import get_time, qujian_time, Download_xlsx
router = APIRouter()

View File

@ -10,8 +10,8 @@ class ApiInterviewRemark(CRUDBase):
# 获取简历所有备注
async def get_interview_remarks(self, db: AsyncIOMotorDatabase, data_in: schemas.FindRemark):
where = data_in.where
where.update({'uid': data_in.remark_uid})
return await self.find_many(db, where)
where.update({'remark_uid': data_in.remark_uid})
return await self.find_many(db, where,{'_id': 0})
# 插入一条全新的备注
async def insert_remark(self, db: AsyncIOMotorDatabase, data_in: schemas.BaseRemark):

View File

@ -31,6 +31,7 @@ class CKDrive:
async def execute(self, sql) -> dict:
data, columns = await self._execute(sql, with_column_types=True, columnar=True)
df = pd.DataFrame({col[0]: d for d, col in zip(data, columns)})
df = df.fillna('')
return df.T.to_dict()
async def execute_dict(self, sql, insert_data) -> dict:

View File

@ -36,6 +36,54 @@ class InterviewDo:
self.where = self.query_in.interview_query
def insert_interview_sql(self):
# 简历初始文档
data_mode = {
"interview_name": "吴操",
"interview_type": 1,
"interview_sign": 0,
"hope_money": "",
"feedback": 0,
"interview_round": 0,
"event_time": "",
"name": "",
"phone": "",
"job_name": "",
"hr_name": "吴操",
"work_exp": 0,
"interview_stage": 1,
"owner_name": 2,
"education": 1,
"work_undergo": [],
"project_undergo": [],
"work_list": [],
"school": "",
"at_school": "",
"specialty": "",
"specialty_do": [],
"mmended_state": 0,
"mail": "",
"account": "",
"id_card": "",
"gender": "",
"age": 0,
"gam": "",
"interview_state": 1,
"counts": 1,
"nation": "",
"review": [],
"upgrade": [],
"come_time": "",
"now_money": "",
"men_state": 1,
"teacher_state": 1,
"teacher_back": 1,
"offer_state": 1,
"offer_exam_state": 1,
"notice_state": 1,
"pass_why": 0,
"pass_text": [],
}
insert_data = []
res_data = []
if isinstance(self.data_in, dict):
@ -43,29 +91,25 @@ class InterviewDo:
if isinstance(self.data_in, list):
insert_data = self.data_in
sql = f"insert into HR.resumes(interview_name, interview_type, interview_sign, feedback, interview_round, star_time, end_time, event_time, uid, name, phone, job_name, hr_name, work_exp, interview_stage, owner_name, education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, mmended_state, mail, account, id_card, gender, age, gam, interview_state, graduate_time, counts, nation, come_time, review, upgrade) values"
sql = f"insert into HR.resumes(interview_name, interview_type, interview_sign, hope_money, feedback," \
f" interview_round, event_time, uid, name, phone, job_name, hr_name, work_exp, interview_stage, owner_name," \
f" education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, " \
f"mmended_state, mail, account, id_card, gender, age, gam, interview_state, counts, nation, come_time," \
f" review, upgrade, now_money, men_state, teacher_state, teacher_back, offer_state, offer_exam_state," \
f" notice_state, pass_why, pass_text) values"
now_time = datetime.datetime.now()
for data in insert_data:
s1 = data['star_time']
s2 = data['end_time']
s3 = data['event_time']
s4 = data['graduate_time']
s1 = data['event_time']
s2 = data['hope_money']
s3 = data['now_money']
if not s1:
data['star_time'] = None
else:
data['star_time'] = parser.parse(s1)
if not s2:
data['end_time'] = None
else:
data['end_time'] = parser.parse(s2)
if not s3:
data['event_time'] = now_time
else:
data['event_time'] = parser.parse(s3)
if not s4:
data['graduate_time'] = None
else:
data['graduate_time'] = parser.parse(s4)
data['event_time'] = parser.parse(s1)
if s2 and isinstance(s2, int):
data['hope_money'] = str(s2)
if s3 and isinstance(s3, int):
data['now_money'] = str(s3)
data_true = deepcopy(data)
data_true['uid'] = get_uid()
education = data_true['education']
@ -97,7 +141,9 @@ class InterviewDo:
data_true['work_exp'] = 0.0
else:
data_true['work_exp'] = float(true_work_exp.group())
res_data.append(data_true)
append_data = deepcopy(data_mode)
append_data.update(data_true)
res_data.append(append_data)
print(sql)
return {'sql': sql,
'insert_data': res_data

View File

@ -23,7 +23,7 @@ data_mode = {
"interview_name": "吴操",
"interview_type": 1,
"interview_sign": 0,
"hope_money": 10000,
"hope_money": "",
"feedback": 0,
"interview_round": 0,
"event_time": "",
@ -51,7 +51,19 @@ data_mode = {
"gam": "",
"interview_state": 1,
"counts": 1,
"nation": 1,
"nation": "",
"review": [],
"upgrade": [],
"come_time": "",
"now_money": "",
"men_state": 1,
"teacher_state": 1,
"teacher_back": 1,
"offer_state": 1,
"offer_exam_state": 1,
"notice_state": 1,
"pass_why": 0,
"pass_text": [],
}
@ -92,7 +104,7 @@ def chkworlkandtime(listdata):
'name': res['公司名'][i]['text'],
'time': res['时间'][i]['text']
}
ress.append(date)
ress.append(str(date))
return ress

View File

@ -0,0 +1,78 @@
路由: /api/v1/itr/interview_offer_find
参数:
{
"data_in": "string", # 任意类型 [修改数据和插入数据时需要使用]
"interview_query": {"interview_stage": 4}, # 查询条件dict类型 可为空
"find_column": [ # 需要查询的字段list包str
"name"
]
}
# 仅用于参数说明
返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"interview_name": "张三", # 面试官
"interview_type": 0, # 面试类型 0:线上面试1:线下面试
"interview_sign": 1, # 面试签到 1:已签到0:未签到
"feedback": 0, # 面试反馈 1:已反馈0:未反馈
"interview_round": 1, # 面试阶段 1初试2复试3终试
"star_time": "2022-07-11T10:30:00", # 面试开始时间
"end_time": "2022-07-11T11:00:00", # 面试结束时间
"event_time": "2022-07-01T10:00:00", # 简历投递时间
"uid": "123456789", # 唯一id
"name": "李四", # 面试者姓名
"phone": "13789923799", # 手机号
"job_name": "python开发", # 应聘职位
"hr_name": "王五", # 面试负责人 候选人所有者
"work_exp": "2年", # 工作经验
"interview_stage": 1, # 简历阶段 1:初筛 2:复筛 3:面试 4:沟通offer 5:待入职
"owner_name": 2, # 简历来源 1:前程无忧,2:人才库,3:智联招聘,4:Boss直聘,5:58同城
"education": 1, # 学历 1:大专,2:本科,3:研究生,4:博士,5:硕士
"work_undergo": "", # 工作经历
"school": "武汉大学", # 毕业院校
"specialty": "计算机专业", # 专业
"mmended_state": 0, # 推荐状态
"mail": "250213000@qq.com", # 邮箱
"account": "湖北武汉", # 所在地
"id_card": "421202199986750339", # 身份证号
"gender": "男", # 性别
"interview_state": 2, # 当前面试状态 1:待安排 2:面试中 3:已结束
"graduate_time": "2022-07-01T08:00:00", # 毕业时间
"counts": 1 # 第几次投递简历
}
}
}
实际返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"uid": "3ae3f4d54e03ca",
"age": 20,
"gender": "男",
"at_school": "2005.9-2009.6",
"name": "陈超峰",
"event_time": "2022-07-12T17:42:13",
"owner_name": 2,
"education": 2,
"school": "中南民族大学",
"specialty": "计算机科学与技术",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [],
"work_exp": 0,
"job_name": "android开发工程师",
"feedback": 0,
"interview_round": 0,
"interview_state": 1,
"interview_stage": 4
}
}
}

View File

@ -0,0 +1,97 @@
路由: /api/v1/itr/interview_home_find
参数:
{
"data_in": "string", # 任意类型 [修改数据和插入数据时需要使用]
"interview_query": {"interview_stage": 1}, # 查询条件dict类型,可为空{}
"find_column": [ # 需要查询的字段list包str
"name"
]
}
# 仅用于参数说明
返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"interview_name": "张三", # 面试官
"interview_type": 0, # 面试类型 0:线上面试1:线下面试
"interview_sign": 1, # 面试签到 1:已签到0:未签到
"feedback": 0, # 面试反馈 1:已反馈0:未反馈
"interview_round": 1, # 面试阶段 1初试2复试3终试
"star_time": "2022-07-11T10:30:00", # 面试开始时间
"end_time": "2022-07-11T11:00:00", # 面试结束时间
"event_time": "2022-07-01T10:00:00", # 简历投递时间
"uid": "123456789", # 唯一id
"name": "李四", # 面试者姓名
"phone": "13789923799", # 手机号
"job_name": "python开发", # 应聘职位
"hr_name": "王五", # 面试负责人 候选人所有者
"work_exp": "2年", # 工作经验
"interview_stage": 1, # 简历阶段 1:初筛 2:复筛 3:面试 4:沟通offer 5:待入职
"owner_name": 2, # 简历来源 1:前程无忧,2:人才库,3:智联招聘,4:Boss直聘,5:58同城
"education": 1, # 学历 1:大专,2:本科,3:研究生,4:博士,5:硕士
"work_undergo": "", # 工作经历
"school": "武汉大学", # 毕业院校
"specialty": "计算机专业", # 专业
"mmended_state": 0, # 推荐状态
"mail": "250213000@qq.com", # 邮箱
"account": "湖北武汉", # 所在地
"id_card": "421202199986750339", # 身份证号
"gender": "男", # 性别
"interview_state": 2, # 当前面试状态 1:待安排 2:面试中 3:已结束
"graduate_time": "2022-07-01T08:00:00", # 毕业时间
"counts": 1 # 第几次投递简历
}
}
}
实际返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"uid": "3ae3f4d54e03ca",
"age": 20,
"gender": "男",
"at_school": "2005.9-2009.6",
"name": "陈超峰",
"event_time": "2022-07-12T17:42:13",
"owner_name": 2,
"education": 2,
"school": "中南民族大学",
"specialty": "计算机科学与技术",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [],
"work_exp": 0,
"notice_state": 1,
"job_name": "android开发工程师",
"interview_stage": 1
},
"1": {
"uid": "3ae63e44e24a38",
"age": 29,
"gender": "男",
"at_school": "6年",
"name": "陈亚雄",
"event_time": "2022-07-15T15:32:56",
"owner_name": 2,
"education": 2,
"school": "武汉纺织大学",
"specialty": "计算机软件",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [
"{'name': '中软国际科技服务有限公司', 'time': '2016.08-2017.6'}"
],
"work_exp": 6,
"notice_state": 1,
"job_name": "Android软件工程师",
"interview_stage": 1
}
}
}

View File

@ -0,0 +1,18 @@
路由: /api/v1/itr/interview_update
参数:
{
"data_in": {"interview_stage": 2}, # 字典,要修改的数据
"interview_query": {"uid": "3ae63e44e24a38"}, # 修改默认传当前简历数据的uid
"find_column": [ # 需要查询的字段list包str
"name"
]
}
返回值:
{
"code": 200,
"msg": "ok",
"data": {} # 第几次投递简历
}

View File

@ -1,15 +1,15 @@
路由: /api/v1/itr/interview_find
路由: /api/v1/itr/interview_screen_find
参数:
{
"data_in": "string", # 任意类型 [修改数据和插入数据时需要使用]
"interview_query": {"interview_stage": 1}, # 查询条件dict类型
"interview_query": {"interview_stage": 2}, # 查询条件dict类型 可为空
"find_column": [ # 需要查询的字段list包str
"name"
]
}
# 仅用于参数说明
返回值:
{
"code": 200,
@ -46,4 +46,31 @@
"counts": 1 # 第几次投递简历
}
}
}
实际返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"uid": "3ae3f4d54e03ca",
"age": 20,
"gender": "男",
"at_school": "2005.9-2009.6",
"name": "陈超峰",
"event_time": "2022-07-12T17:42:13",
"owner_name": 2,
"education": 2,
"school": "中南民族大学",
"specialty": "计算机科学与技术",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [],
"work_exp": 0,
"notice_state": 1,
"job_name": "android开发工程师",
"interview_stage": 2
}
}
}

View File

@ -0,0 +1,80 @@
路由: /api/v1/itr/interview_waite_in_find
参数:
{
"data_in": "string", # 任意类型 [修改数据和插入数据时需要使用]
"interview_query": {"interview_stage": 5}, # 查询条件dict类型 可为空
"find_column": [ # 需要查询的字段list包str
"name"
]
}
# 仅用于参数说明
返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"interview_name": "张三", # 面试官
"interview_type": 0, # 面试类型 0:线上面试1:线下面试
"interview_sign": 1, # 面试签到 1:已签到0:未签到
"feedback": 0, # 面试反馈 1:已反馈0:未反馈
"interview_round": 1, # 面试阶段 1初试2复试3终试
"star_time": "2022-07-11T10:30:00", # 面试开始时间
"end_time": "2022-07-11T11:00:00", # 面试结束时间
"event_time": "2022-07-01T10:00:00", # 简历投递时间
"uid": "123456789", # 唯一id
"name": "李四", # 面试者姓名
"phone": "13789923799", # 手机号
"job_name": "python开发", # 应聘职位
"hr_name": "王五", # 面试负责人 候选人所有者
"work_exp": "2年", # 工作经验
"interview_stage": 1, # 简历阶段 1:初筛 2:复筛 3:面试 4:沟通offer 5:待入职
"owner_name": 2, # 简历来源 1:前程无忧,2:人才库,3:智联招聘,4:Boss直聘,5:58同城
"education": 1, # 学历 1:大专,2:本科,3:研究生,4:博士,5:硕士
"work_undergo": "", # 工作经历
"school": "武汉大学", # 毕业院校
"specialty": "计算机专业", # 专业
"mmended_state": 0, # 推荐状态
"mail": "250213000@qq.com", # 邮箱
"account": "湖北武汉", # 所在地
"id_card": "421202199986750339", # 身份证号
"gender": "男", # 性别
"interview_state": 2, # 当前面试状态 1:待安排 2:面试中 3:已结束
"graduate_time": "2022-07-01T08:00:00", # 毕业时间
"counts": 1 # 第几次投递简历
}
}
}
实际返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"uid": "3ae3f4d54e03ca",
"age": 20,
"gender": "男",
"at_school": "2005.9-2009.6",
"name": "陈超峰",
"event_time": "2022-07-12T17:42:13",
"owner_name": 2,
"education": 2,
"school": "中南民族大学",
"specialty": "计算机科学与技术",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [],
"work_exp": 0,
"job_name": "android开发工程师",
"feedback": 0,
"interview_round": 0,
"interview_state": 1,
"interview_stage": 5,
"pass_why": 0,
"pass_text": []
}
}
}

View File

@ -0,0 +1,35 @@
接口: api/v1/itr/add_remark
参数:
{
"remark_uid": "3ae3f4d54e03ca", # 查询的简历uid
"where": {} # 预留字段额外删选条件
}
返回值:
{
"code": 200,
"msg": "ok",
"data": [
{
"remark_id": "1657867100",
"remark_from": "吴操",
"comment": "吴操觉得可以",
"stage_num": 0,
"remark_time": "2022-07-15T14:38:20.279000",
"remark_uid": "3ae3f4d54e03ca",
"remark_stage": 5
},
{
"remark_id": 1657872635,
"remark_from": "吴操",
"comment": "吴操觉得不是很可以",
"stage_num": 0,
"remark_time": "2022-07-15T16:10:35.622000",
"remark_uid": "3ae3f4d54e03ca",
"remark_stage": 5
}
]
}

View File

@ -0,0 +1,19 @@
接口: api/v1/itr/add_remark
参数:
{
"remark_from": "吴操", # 编写备注的人
"comment": "吴操觉得可以", # 备注内容
"stage_num": 0, # 备注查看权限
"remark_uid": "3ae3f4d54e03ca", # 被备注的简历的uid
"remark_stage": 5 # 备注时简历所处阶段
}
返回值:
{
"code": 200,
"msg": "ok",
"data": ""
}

View File

@ -0,0 +1,78 @@
路由: /api/v1/itr/interview_exam_find
参数:
{
"data_in": "string", # 任意类型 [修改数据和插入数据时需要使用]
"interview_query": {"interview_stage": 3}, # 查询条件dict类型 可为空
"find_column": [ # 需要查询的字段list包str
"name"
]
}
# 仅用于参数说明
返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"interview_name": "张三", # 面试官
"interview_type": 0, # 面试类型 0:线上面试1:线下面试
"interview_sign": 1, # 面试签到 1:已签到0:未签到
"feedback": 0, # 面试反馈 1:已反馈0:未反馈
"interview_round": 1, # 面试阶段 1初试2复试3终试
"star_time": "2022-07-11T10:30:00", # 面试开始时间
"end_time": "2022-07-11T11:00:00", # 面试结束时间
"event_time": "2022-07-01T10:00:00", # 简历投递时间
"uid": "123456789", # 唯一id
"name": "李四", # 面试者姓名
"phone": "13789923799", # 手机号
"job_name": "python开发", # 应聘职位
"hr_name": "王五", # 面试负责人 候选人所有者
"work_exp": "2年", # 工作经验
"interview_stage": 1, # 简历阶段 1:初筛 2:复筛 3:面试 4:沟通offer 5:待入职
"owner_name": 2, # 简历来源 1:前程无忧,2:人才库,3:智联招聘,4:Boss直聘,5:58同城
"education": 1, # 学历 1:大专,2:本科,3:研究生,4:博士,5:硕士
"work_undergo": "", # 工作经历
"school": "武汉大学", # 毕业院校
"specialty": "计算机专业", # 专业
"mmended_state": 0, # 推荐状态
"mail": "250213000@qq.com", # 邮箱
"account": "湖北武汉", # 所在地
"id_card": "421202199986750339", # 身份证号
"gender": "男", # 性别
"interview_state": 2, # 当前面试状态 1:待安排 2:面试中 3:已结束
"graduate_time": "2022-07-01T08:00:00", # 毕业时间
"counts": 1 # 第几次投递简历
}
}
}
实际返回值:
{
"code": 200,
"msg": "ok",
"data": {
"0": {
"uid": "3ae3f4d54e03ca",
"age": 20,
"gender": "男",
"at_school": "2005.9-2009.6",
"name": "陈超峰",
"event_time": "2022-07-12T17:42:13",
"owner_name": 2,
"education": 2,
"school": "中南民族大学",
"specialty": "计算机科学与技术",
"interview_name": "吴操",
"mmended_state": 0,
"work_list": [],
"work_exp": 0,
"job_name": "android开发工程师",
"feedback": 0,
"interview_round": 0,
"interview_state": 1,
"interview_stage": 3
}
}
}