| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840 |
- openapi: 3.1.0
- info:
- title: 组织人事管理平台 API
- version: 1.0.0
- servers:
- - url: http://localhost:8080
- security:
- - bearerAuth: []
- paths:
- /api/v1/auth/login:
- post:
- summary: 本地账号登录
- security: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/LoginRequest"
- responses:
- "200":
- description: 登录成功
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/LoginResponse"
- /api/v1/auth/refresh:
- post:
- summary: 刷新令牌
- security: []
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- required: [refreshToken]
- properties:
- refreshToken:
- type: string
- deviceName:
- type: string
- responses:
- "200":
- description: 刷新成功
- /api/v1/auth/logout:
- post:
- summary: 注销会话
- responses:
- "200":
- description: 注销成功
- /api/v1/auth/me:
- get:
- summary: 当前用户
- responses:
- "200":
- description: 当前用户信息
- /api/v1/departments:
- get:
- summary: 部门列表
- responses:
- "200":
- description: 分页部门
- post:
- summary: 新增部门
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DepartmentRequest"
- responses:
- "200":
- description: 创建成功
- /api/v1/departments/{id}:
- put:
- summary: 更新部门
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- delete:
- summary: 停用部门
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 停用成功
- /api/v1/positions:
- get:
- summary: 岗位列表
- responses:
- "200":
- description: 分页岗位
- post:
- summary: 新增岗位
- responses:
- "200":
- description: 创建成功
- /api/v1/positions/{id}:
- put:
- summary: 更新岗位
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- delete:
- summary: 停用岗位
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 停用成功
- /api/v1/employees:
- get:
- summary: 员工列表
- responses:
- "200":
- description: 分页员工
- post:
- summary: 新增员工
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/EmployeeRequest"
- responses:
- "200":
- description: 创建成功
- /api/v1/employees/{id}:
- get:
- summary: 员工详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 员工详情
- put:
- summary: 更新员工
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- delete:
- summary: 归档员工
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 归档成功
- /api/v1/employees/{id}/transfer:
- post:
- summary: 员工转岗转部门
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 转岗完成
- /api/v1/job-requisitions:
- get:
- summary: 招聘需求列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增招聘需求
- responses:
- "200":
- description: 创建成功
- /api/v1/candidates:
- get:
- summary: 候选人列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增候选人
- responses:
- "200":
- description: 创建成功
- /api/v1/candidates/{id}/schedule-interview:
- post:
- summary: 安排面试
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 面试已安排
- /api/v1/candidates/{id}/interviews:
- get:
- summary: 候选人面试列表
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 面试列表
- /api/v1/interviews/{id}/result:
- post:
- summary: 登记面试结果
- parameters:
- - $ref: "#/components/parameters/Id"
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/InterviewResultRequest"
- responses:
- "200":
- description: 面试结果已登记
- /api/v1/candidates/{id}/issue-offer:
- post:
- summary: 发放 Offer
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已发放
- /api/v1/candidates/{id}/offer-decision:
- post:
- summary: 候选人 Offer 决策
- parameters:
- - $ref: "#/components/parameters/Id"
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/OfferDecisionRequest"
- responses:
- "200":
- description: Offer 决策已处理
- /api/v1/candidates/{id}/convert-to-onboarding:
- post:
- summary: 转入入职流程
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已转入职
- /api/v1/onboarding-cases:
- get:
- summary: 入职单列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增入职单
- responses:
- "200":
- description: 创建成功
- /api/v1/onboarding-cases/{id}/complete:
- post:
- summary: 完成入职
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 入职完成
- /api/v1/onboarding-cases/{id}/no-show:
- post:
- summary: 标记入职未到岗
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已标记未到岗
- /api/v1/offboarding-cases:
- get:
- summary: 离职单列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增离职单
- responses:
- "200":
- description: 创建成功
- /api/v1/offboarding-cases/{id}/close:
- post:
- summary: 关闭离职流程
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 离职关闭
- /api/v1/attendance/records:
- get:
- summary: 考勤记录列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增考勤记录
- responses:
- "200":
- description: 创建成功
- /api/v1/attendance/import-jobs:
- post:
- summary: 考勤 CSV 导入
- requestBody:
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- file:
- type: string
- format: binary
- responses:
- "200":
- description: 导入任务
- /api/v1/leave-requests:
- get:
- summary: 请假列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增请假
- responses:
- "200":
- description: 创建成功
- /api/v1/leave-requests/{id}/reject:
- post:
- summary: 拒绝请假申请
- parameters:
- - $ref: "#/components/parameters/Id"
- requestBody:
- required: false
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/DecisionRequest"
- responses:
- "200":
- description: 请假已拒绝
- /api/v1/payroll/periods:
- get:
- summary: 薪酬期间列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增薪酬期间
- responses:
- "200":
- description: 创建成功
- /api/v1/payroll/periods/{periodKey}/runs:
- post:
- summary: 发起薪酬核算
- parameters:
- - name: periodKey
- in: path
- required: true
- schema:
- type: string
- responses:
- "200":
- description: 核算批次
- /api/v1/payroll/items:
- get:
- summary: 薪资项目列表
- responses:
- "200":
- description: 薪资项目
- post:
- summary: 新增薪资项目
- responses:
- "200":
- description: 创建成功
- /api/v1/payroll/items/{id}:
- get:
- summary: 薪资项目详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 详情
- put:
- summary: 更新薪资项目
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- delete:
- summary: 删除薪资项目
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 删除成功
- /api/v1/payroll/variables:
- get:
- summary: 薪酬变量列表
- parameters:
- - name: scopeType
- in: query
- required: false
- schema:
- type: string
- enum: [DEPARTMENT, EMPLOYEE]
- - name: departmentId
- in: query
- required: false
- schema:
- type: integer
- format: int64
- - name: employeeId
- in: query
- required: false
- schema:
- type: integer
- format: int64
- responses:
- "200":
- description: 薪酬变量
- put:
- summary: 替换部门或员工薪酬变量
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/PayrollVariableRequest"
- responses:
- "200":
- description: 保存后的变量
- /api/v1/payroll/variables/effective:
- get:
- summary: 查询员工生效薪酬变量
- parameters:
- - name: employeeId
- in: query
- required: true
- schema:
- type: integer
- format: int64
- responses:
- "200":
- description: 员工、部门及上级部门合并后的变量来源
- /api/v1/payroll/runs/{id}/review:
- post:
- summary: 复核薪酬批次
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已复核
- /api/v1/payroll/runs/{id}:
- get:
- summary: 薪酬批次详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 批次详情与汇总
- /api/v1/payroll/runs/{id}/approve:
- post:
- summary: 审批薪酬批次
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已审批
- /api/v1/payroll/runs/{id}/lock:
- post:
- summary: 锁定薪酬批次
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已锁定
- /api/v1/payslips/{id}/publish:
- post:
- summary: 发布工资单
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已发布
- /api/v1/payslips/publish-batch:
- post:
- summary: 一键发布工资单
- requestBody:
- required: false
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/PayslipBatchPublishRequest"
- responses:
- "200":
- description: 发布数量
- /api/v1/payslips/{id}:
- get:
- summary: 工资单详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 工资单明细
- /api/v1/appraisal-cycles:
- get:
- summary: 绩效周期列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增绩效周期
- responses:
- "200":
- description: 创建成功
- /api/v1/appraisal-records:
- get:
- summary: 绩效记录列表
- responses:
- "200":
- description: 列表
- post:
- summary: 新增绩效记录
- responses:
- "200":
- description: 创建成功
- /api/v1/reports/headcount/export:
- post:
- summary: 人员结构导出
- responses:
- "200":
- description: 导出任务
- /api/v1/reports/payroll-summary/export:
- post:
- summary: 薪酬汇总导出
- responses:
- "200":
- description: 导出任务
- /api/v1/export-jobs/{id}:
- get:
- summary: 导出任务详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 任务详情
- /api/v1/export-jobs/{id}/download:
- get:
- summary: 下载导出文件
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 导出文件
- content:
- text/csv:
- schema:
- type: string
- format: binary
- /api/v1/import-jobs:
- get:
- summary: 导入任务列表
- responses:
- "200":
- description: 导入任务
- /api/v1/import-jobs/{id}:
- get:
- summary: 导入任务详情
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 任务详情
- /api/v1/audit-logs:
- get:
- summary: 审计日志列表
- responses:
- "200":
- description: 审计日志
- /api/v1/integration/webhooks/test-receiver:
- post:
- summary: Webhook 测试接收
- parameters:
- - name: X-Signature
- in: header
- required: true
- schema:
- type: string
- - name: Idempotency-Key
- in: header
- required: false
- schema:
- type: string
- responses:
- "200":
- description: 接收成功
- /api/v1/integration/events:
- get:
- summary: 集成事件列表
- responses:
- "200":
- description: 集成事件
- /api/v1/integration/events/{id}/retry:
- post:
- summary: 重试集成事件
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 已提交重试
- /api/v1/security/roles:
- get:
- summary: 角色列表
- responses:
- "200":
- description: 角色
- post:
- summary: 新增角色
- responses:
- "200":
- description: 创建成功
- /api/v1/security/permissions:
- get:
- summary: 权限列表
- responses:
- "200":
- description: 权限
- post:
- summary: 新增权限
- responses:
- "200":
- description: 创建成功
- /api/v1/security/permissions/{id}:
- put:
- summary: 编辑权限
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- delete:
- summary: 删除权限
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 删除成功
- /api/v1/security/roles/{id}:
- delete:
- summary: 删除角色
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 删除成功
- /api/v1/security/roles/{id}/permissions:
- get:
- summary: 查询角色权限
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 角色权限
- put:
- summary: 替换角色权限
- parameters:
- - $ref: "#/components/parameters/Id"
- responses:
- "200":
- description: 更新成功
- /api/v1/tasks/dead-letter:
- get:
- summary: 失败任务摘要
- responses:
- "200":
- description: 失败任务统计
- /api/v1/system/about:
- get:
- summary: 系统信息
- responses:
- "200":
- description: 系统版本信息
- /actuator/health:
- get:
- summary: 健康检查
- security: []
- responses:
- "200":
- description: healthy
- components:
- securitySchemes:
- bearerAuth:
- type: http
- scheme: bearer
- bearerFormat: JWT
- parameters:
- Id:
- name: id
- in: path
- required: true
- schema:
- type: integer
- format: int64
- schemas:
- LoginRequest:
- type: object
- required: [username, password]
- properties:
- username:
- type: string
- example: sys_admin
- password:
- type: string
- format: password
- example: ChangeMe123!
- deviceName:
- type: string
- example: web
- LoginResponse:
- type: object
- properties:
- code:
- type: string
- example: OK
- message:
- type: string
- example: success
- correlationId:
- type: string
- data:
- type: object
- properties:
- accessToken:
- type: string
- refreshToken:
- type: string
- expiresIn:
- type: integer
- user:
- type: object
- DepartmentRequest:
- type: object
- required: [deptCode, deptName]
- properties:
- parentId:
- type: integer
- format: int64
- deptCode:
- type: string
- deptName:
- type: string
- status:
- type: string
- sortNo:
- type: integer
- EmployeeRequest:
- type: object
- required: [employeeNo, departmentId, positionId, displayName]
- properties:
- employeeNo:
- type: string
- departmentId:
- type: integer
- format: int64
- positionId:
- type: integer
- format: int64
- displayName:
- type: string
- employmentStatus:
- type: string
- mobile:
- type: string
- email:
- type: string
- InterviewResultRequest:
- type: object
- required: [result]
- properties:
- result:
- type: string
- enum: [PASSED, FAILED, NO_SHOW]
- feedback:
- type: string
- score:
- type: number
- OfferDecisionRequest:
- type: object
- required: [decision]
- properties:
- decision:
- type: string
- enum: [ACCEPTED, REJECTED]
- reason:
- type: string
- DecisionRequest:
- type: object
- properties:
- reason:
- type: string
- PayrollVariableRequest:
- type: object
- required: [scopeType, variables]
- properties:
- scopeType:
- type: string
- enum: [DEPARTMENT, EMPLOYEE]
- departmentId:
- type: integer
- format: int64
- employeeId:
- type: integer
- format: int64
- variables:
- type: array
- minItems: 1
- items:
- type: object
- required: [variableKey, variableName, variableValue]
- properties:
- variableKey:
- type: string
- example: baseSalary
- variableName:
- type: string
- example: 基本工资
- variableValue:
- type: number
- example: 12000
- PayslipBatchPublishRequest:
- type: object
- properties:
- periodKey:
- type: string
- example: "2026-05"
- runId:
- type: integer
- format: int64
|