1.2.41-alpha.32 • Published 14 days ago

eli-video-interview v1.2.41-alpha.32

Weekly downloads
-
License
MIT
Repository
-
Last release
14 days ago

鳄梨科技-AI视频面试web端插件

AI视频面试web端插件是鳄梨科技提供的【AI视频题目+AI视频报告】的服务,致力于用AI解决大规模人力资源问题,此插件需搭配【小程序插件】来使用。

:sparkles: 特性

  • 简单易用
  • 包含的组件有AI视频题目、AI视频报告、视频预览
  • 使用 TypeScript 构建,提供完整的类型定义文件

:package: 安装

// npm
npm i eli-video-interview --save

// yarn
yarn add eli-video-interview

🔨 配置

import { avocadoVideoInterview } from 'eli-video-interview';

const App: React.FC = () => {
  useEffect(() => {
    avocadoVideoInterview.init({
      server_url: '', // 接口域名地址
      auth_callback: () => new Promise((resolve, reject) => { // 授权认证回调 return Promise
        resolve({
          accessToken: '', // 必须返回accessToken为接口授权认证
          expireTime: 0, // accessToken过期时间(可以不返回)
        });
      }),
    });
  }, []);
}

AI视频题目

AI视频题目组件内置了AI测评题目模版,支持9种题型【普通题、色盲检测、英文字母识别、语言能力、游戏决策-气球、数字记忆、情绪判断、全身素质检测、局部纹身检测】,也可以根据自身需求自定义自由作答题或语言能力题,可自定义引导视频。

Example

import { AiQuestion, useAiQuestion } from 'eli-video-interview';

const { handleSubmit, handleValues, ...aiQuestionProps } = useAiQuestion({ token });

const handleSave = async () => {
  const { code, message, data } = await handleSubmit();
  if (code === 0) { // code === 0: 提交成功
    console.log({ code, message, data });
    // 具体业务实现逻辑
  }
};

return (
  <AiQuestion {...aiQuestionProps} />
)

API

参数说明类型必传默认值
token-string-
name职位名称string-
historyPatterns已有岗位模型,当数据为空时会禁用已有岗位模型切换Array<any>[]
mediaList引导视频Array<MediaList>[]

AiQuestionInstance

名称说明类型
handleValues获取AI视频题目所有字段值() => AiQuestionValues
handleSubmit提交AI视频题目() => Promise<AiQuestionSubmitRes>

MediaList

参数说明类型
url视频地址string
thumbUrl视频图片string

AiQuestionValues

名称说明类型
data题目信息{ name?: string; token?: string; steps: QuestionModelStep[] | undefined; }
media引导视频{ mediaUrl?: string; thumbUrl?: string; }

AiQuestionSubmitRes

名称说明类型
code业务状态码number
data主体信息{ token: string; mediaUrl: string; thumbUrl: string; } | undefined
message提示信息string

QuestionModelStep

名称说明类型
name题目名称string
token题目IDstring
type题目类型number
desc题目描述string
prepareTime准备时长number
duration回答时长number
minResponseDuration最少回答时长number
category标签信息string[]
broadcastType题目播报类型number
aiSwitch题目是否开启AI分析number
aiType是否可AI评分,值为2视为是可AI评分题目number
weight题目权重number | string
language语种number
aiShowType题目作答类型number
answerStatus题目重复作答状态number
videoBroadcast题目播报类型为视频播报时存储的参数VideoBroadcast
aiAbilities题目AI分析参数集合AiAbilityParams[]

VideoBroadcast

名称说明类型
videoRetry允许重复听题number
videoUrl视频地址string

AiAbilityParams

名称说明类型
nameAI维度名称string
tokenAI维度IDstring
typeAI维度类型number
categoryAI维度分类number
descAI维度描述string
weightAI维度权重number | string
relatedAbilities语种所关联的AI维度类型集合number[]
extraAI维度【是否意愿、要点分析】字段值string
sortAI维度排序number

AI视频报告

AI视频报告组件可根据面试者的答题情况,计算出视频面试得分及单题目的综合评分,您也可以手动调节单题的评分分值,手动调节后会重新计算视频面试得分。

Example

import React, { FC, useState, useCallback } from 'react';
import { Box } from 'fbm-ui';
import { AiReport, VideoPreview, useAiReport } from 'eli-video-interview';

const Report: FC = () => {
  const token = ''; // 具体业务token
  const [steps, setSteps] = useState<any[]>([]); // 题目信息
  const [faceAnalysis, setFaceAnalysis] = useState<any>({}); // 人脸识别信息
  const [pageStepIndexes, setPageStepIndexes] = useState<number[]>([]); // 具有视频信息的下标集合
  const [stepIndex, setStepIndex] = useState<number>(0); // 当前题目下标

  const aiReport = useAiReport({
    token,
    disabledScore: false,
    scoreRankIntervals: [],
    stepToken: steps[pageStepIndexes[stepIndex]]?.token,
    operableButtons: ['export', 'refresh', 'scoreRank', 'abilities'],
    onLoad: params => {
      setSteps(params.steps);
      setFaceAnalysis(params.faceAnalysis);
      setPageStepIndexes(params.pageStepIndexes);
    },
    onScoreChange: scoreState => {
      console.log(scoreState);
    },
    onStepChange: stepToken => {
      const index = steps.findIndex(({ token }) => token === stepToken);
      const stepIndex = pageStepIndexes.findIndex(i => i === index);
      setStepIndex(stepIndex);
    },
    onScoreRankIntervalsChange: scoreRankIntervals => {
      console.log(scoreRankIntervals);
    },
  });

  const handlePrev = useCallback(() => {
    setStepIndex(stepIndex - 1);
  }, [stepIndex]);

  const handleNext = useCallback(() => {
    setStepIndex(stepIndex + 1);
  }, [stepIndex]);

  return (
    <Box sx={{ width: '100%', height: '100%', overflow: 'hidden' }}>
      <Box sx={{ position: 'absolute', left: 100 }}>
        {steps.length > 0 && pageStepIndexes.length > 0 && (
          <VideoPreview
            url={steps[stepIndex].answer.videoUrl}
            faceAnalysis={faceAnalysis}
            currentPage={pageStepIndexes[stepIndex] + 1}
            totalPage={steps.length}
            disabledPrev={stepIndex === 0}
            disabledNext={stepIndex === pageStepIndexes.length - 1}
            onNext={handleNext}
            onPrev={handlePrev}
          />
        )}
      </Box>
      <Box sx={{ width: '584px', height: '100%', margin: '0 auto' }}>
        <AiReport {...aiReport} />
      </Box>
    </Box>
  );
};

export default Report;

API

参数说明类型必传默认值
token订单IDstring-
scoreRankIntervals排名区间ScoreRankInterval[]-
disabledScore禁用调整分值booleantrue
reminderSent是否已提醒面试者作答boolean-
operableButtons可操作按钮组Array<'export' | 'refresh' | 'scoreRank' | 'abilities' | 'sendReminder'>-
stepToken当前选中视频题目tokenstring-
onLoad报告数据获取成功后回调事件(values: AiReportLoadedValues) => void-
onExportReportClick点击导出报告后回调事件() => void-
onScoreChange分值更新时触发回调事件(scoreState?: ScoreManualUpdateState) => void-
onStepChange选中视频题更新时触发回调事件(stepToken: string) => void-
onSendReminderClick点击发送提醒后回调事件() => void-
onScoreRankIntervalsChange排名区间更新时触发回调事件(scoreRankIntervals?: ScoreRankIntervals[]) => void-
onScoreRankIntervalsSubmit排名区间提交成功后触发回调事件(scoreRankIntervals?: ScoreRankIntervals[]) => Promise<any>-

AiReportInstance

名称说明类型
handleRefresh刷新报告数据() => void

AiReportLoadedValues

名称说明类型
faceUrl人脸照片string
faceAnalysis人脸分析(颜值得分、年龄)FaceAnalysis
steps题目信息any[]
pageStepIndexes具有视频信息的下标集合number[]

FaceAnalysis

名称说明类型
age年龄number
beauty颜值得分number

ScoreRankInterval

名称说明类型
rank-number
scoreRankIntervals排名区间ScoreRankIntervals
score排名分数Score

ScoreRankIntervals

名称说明类型
startRankProportion开始区间比例number
endRankProportion结束区间比例number

Score

名称说明类型
startScore开始区间分数number
endScore结束区间分数number

ScoreManualUpdateState

名称说明类型
flowStepToken当前分值的tokenstring
type分值类型(1: 总分;2: ai纬度)1 | 2
aiAbilityChangeType纬度类型,type=2时存在number
score分值number

AI视频预览

AI视频预览组件可配合AI视频报告组件使用,展示单题答题者的视频情况。

Example

import { VideoPreview } from 'eli-video-interview';

// 具体示例请在AI视频报告查看

API

参数说明类型必传默认值
url预览视频链接string-
faceAnalysis人脸分析(颜值得分、年龄)FaceAnalysis-
isShowPageTurning是否显示分页booleantrue
currentPage当前页数number1
totalPage总页数number1
disabledPrev禁用上一页按钮booleanfalse
disabledNext禁用下一页按钮booleanfalse
width组件宽度number | string-
style自定义样式CSSProperties-
onPrev点击上一页后回调事件() => void-
onNext点击下一页后回调事件() => void-

全局类型常量

题目作答类型

1: 自由作答
2: 跟读

题目播报类型

1: 语音播报
2: 视频播报

题目是否开启AI分析

1: 开启
2: 关闭

题目重复作答状态

1: 允许重复作答
2: 不允许重复作答

AI分析语种

2: 普通话
11: 英文
12: 日语
16: 粤语

AI维度类型

1: 形象打分
3: 语意流畅
4: 保持微笑
5: 语言丰富
6: 要点分析
7: 语速
8: 是否意愿
9: 年龄
10: 颜值

AI维度分类

1: 语种
2: 语意
3: 表达
4: 形象
6: 语言能力

允许重复听题

0: 不允许
1: 允许

HTTP状态码

API采用标准HTTP错误码来表示接口的错误:

状态码含义
200OK -- 请求成功
400Bad Request -- 接口请求参数错误.
401Unauthorized -- 认证信息非法.
403Forbidden -- 所访问的资源拒绝访问.
404Not Found -- 访问的资源不存在.
405Method Not Allowed -- 错误的请求Method.
500Internal Server Error -- 服务器内部错误.
503Service Unavailable -- 服务器暂时不可用.

业务状态码

状态码含义
0OK -- 请求成功
其他codeERROR -- 请求失败
1.2.41-alpha.31

14 days ago

1.2.41-alpha.32

14 days ago

1.2.41-alpha.30

15 days ago

1.2.41-alpha.29

21 days ago

1.2.41-alpha.28

28 days ago

1.2.41-alpha.25

1 month ago

1.2.41-alpha.26

1 month ago

1.2.41-alpha.27

29 days ago

1.2.41-alpha.24

1 month ago

1.2.41-alpha.23

1 month ago

1.2.41-alpha.22

1 month ago

1.2.41-alpha.21

2 months ago

1.2.41-alpha.20

2 months ago

1.2.41-alpha.17

2 months ago

1.2.41-alpha.18

2 months ago

1.2.41-alpha.19

2 months ago

1.2.41-alpha.15

3 months ago

1.2.41-alpha.16

3 months ago

1.2.41-alpha.12

3 months ago

1.2.41-alpha.13

3 months ago

1.2.41-alpha.14

3 months ago

1.2.41-alpha.11

4 months ago

1.2.39-alpha.19

5 months ago

1.2.41-alpha.9

6 months ago

1.2.41-alpha.7

6 months ago

1.2.41-alpha.8

6 months ago

1.2.41-alpha.1

7 months ago

1.2.41-alpha.2

6 months ago

1.2.41-alpha.5

6 months ago

1.2.41-alpha.6

6 months ago

1.2.41-alpha.3

6 months ago

1.2.41-alpha.4

6 months ago

1.2.41-alpha.10

6 months ago

1.2.41-alpha.0

7 months ago

1.2.39-alpha.16

8 months ago

1.2.39-alpha.17

8 months ago

1.2.39-alpha.18

8 months ago

1.2.40-alpha.11

8 months ago

1.2.40-alpha.10

8 months ago

1.2.40-alpha.9

8 months ago

1.2.40-alpha.8

8 months ago

1.2.40-alpha.7

8 months ago

1.2.40-alpha.6

8 months ago

1.2.40-alpha.5

8 months ago

1.2.40-alpha.4

8 months ago

1.2.40-alpha.3

8 months ago

1.2.40-alpha.2

8 months ago

1.2.40-alpha.1

8 months ago

1.2.39-alpha.11

9 months ago

1.2.39-alpha.12

9 months ago

1.2.39-alpha.10

9 months ago

1.2.36-alpha.0

9 months ago

1.2.39-alpha.15

8 months ago

1.2.39-alpha.13

9 months ago

1.2.39-alpha.14

9 months ago

1.2.39-alpha.3

9 months ago

1.2.39-alpha.4

9 months ago

1.2.39-alpha.5

9 months ago

1.2.39-alpha.6

9 months ago

1.2.39-alpha.7

9 months ago

1.2.39-alpha.8

9 months ago

1.2.39-alpha.9

9 months ago

1.2.3-5.alpha.10

10 months ago

1.2.3-5.alpha.14

10 months ago

1.2.3-5.alpha.13

10 months ago

1.2.3-5.alpha.12

10 months ago

1.2.3-5.alpha.11

10 months ago

1.2.3-9.alpha.1

9 months ago

1.2.3-5.alpha.3

10 months ago

1.2.3-5.alpha.2

10 months ago

1.2.3-5.alpha.1

10 months ago

1.2.38-alpha.1

10 months ago

1.2.3-5.alpha.9

10 months ago

1.2.3-5.alpha.8

10 months ago

1.2.3-5.alpha.7

10 months ago

1.2.3-5.alpha.6

10 months ago

1.2.3-5.alpha.5

10 months ago

1.2.3-5.alpha.4

10 months ago

1.2.37-beta.4

10 months ago

1.2.37-beta.3

10 months ago

1.2.37-beta.2

10 months ago

1.2.37-beta.1

10 months ago

1.2.37-beta.0

10 months ago

1.2.3-5.alpha

10 months ago

1.2.36-beta.0

11 months ago

1.2.36-beta.1

11 months ago

1.2.36-beta.2

10 months ago

1.2.39-alpha.1

9 months ago

1.2.39-alpha.2

9 months ago

1.2.3-5.alpha.17

10 months ago

1.2.3-5.alpha.16

10 months ago

1.2.3-5.alpha.15

10 months ago

1.2.38

10 months ago

1.2.39

10 months ago

1.2.36

10 months ago

1.2.37

10 months ago

1.2.35-beta.0

11 months ago

1.2.35

11 months ago

1.2.34-beta.3

12 months ago

1.2.34-beta.1

12 months ago

1.2.34-beta.2

12 months ago

1.2.34-beta.0

12 months ago

1.2.34

12 months ago

1.2.29-beta.4

1 year ago

1.2.29-beta.3

1 year ago

1.2.29

1 year ago

1.2.30

1 year ago

1.2.31

1 year ago

1.2.32

1 year ago

1.2.33

1 year ago

1.2.29-beta.0

1 year ago

1.2.23

1 year ago

1.2.27

1 year ago

1.2.28

1 year ago

1.2.25

1 year ago

1.2.26

1 year ago

1.2.29-beta.2

1 year ago

1.2.28-beta.2

1 year ago

1.2.29-beta.1

1 year ago

1.2.28-beta.3

1 year ago

1.2.28-beta.0

1 year ago

1.2.28-beta.1

1 year ago

1.2.28-beta.4

1 year ago

1.2.0

2 years ago

1.2.18

1 year ago

1.2.19

1 year ago

1.2.8

1 year ago

1.1.9

2 years ago

1.2.7

1 year ago

1.2.6

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

2 years ago

1.2.20

1 year ago

1.2.9

1 year ago

1.2.12

1 year ago

1.2.13

1 year ago

1.2.11

1 year ago

1.2.16

1 year ago

1.2.17

1 year ago

1.2.14

1 year ago

1.2.15

1 year ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago