← 返回
未分类

人才盘点系统生成技能

基于人员花名册Excel自动生成可视化、可交互的HTML人才盘点系统。涵盖年龄/学历/职称/考核/执业资格等多维分析, 支持多级筛选查询、点击图表下钻名单、Excel/CSV导出、管理员权限控制、后备人才库、在线数据收集、 AI智能问询及EdgeOne Pages/COS一键部署。触发词:人才盘点、人员花名册分析、生产系统人才报告、 人员画像、关键岗位分析、项目经理档案、人才梯队九宫格。
归鸿
未分类 community v1.0.0 1 版本 100000 Key: 无需
★ 3
Stars
📥 107
下载
💾 0
安装
1
版本
#latest

概述

人才盘点系统生成技能

从人员花名册 Excel 到可交互 HTML 人才盘点报告的全流程自动化技能。

工作流程总览

Excel花名册 → Python解析/增强 → JSON数据 → Python构建 → HTML报告 → 部署分享

Phase 1: 数据准备

1.1 输入要求

Excel 花名册(.xlsx),需包含以下标准字段(列名):

字段说明示例
------------------
序号编号1
二级单位如"华南大区"华南大区
三级单位如"华南钢结构公司"华南钢结构公司
部门/项目项目或部门名称深圳前海项目
姓名人员姓名张三
性别男/女
出生日期YYYY-MM-DD1990-05-15
政治面貌中共党员/共青团员/群众中共党员
参加工作时间YYYY-MM-DD2012-07-01
入职科工时间YYYY-MM-DD2012-07-01
职级数值或文本23
主任职如"项目经理"项目经理
第一学历学历大学本科
最高学历最高学历大学本科
职称正高级/副高级/中级/初级/无职称中级
职业资格资格名称一级建造师-建筑工程
2023/2024/2025年考核A/B+/B/CA
人员标签如"管理人员"管理人员
项目分类如"房建""桥梁""总部"房建
项目状态在施阶段/准备阶段/完工阶段等在施阶段

1.2 数据解析

用 Python 解析 Excel,生成 people_data_enhanced.json

import openpyxl, json, re
from datetime import date, datetime
from collections import Counter

AGE_BANDS = [(25, '25岁以下'), (30, '26-30岁'), (35, '31-35岁'),
             (40, '36-40岁'), (45, '41-45岁'), (50, '46-50岁'),
             (55, '51-55岁'), (999, '55岁以上')]

def parse_date(val):
    """解析各种格式的日期"""
    if isinstance(val, (date, datetime)):
        d = val if isinstance(val, date) else val.date()
        return d.strftime('%Y-%m-%d')
    if isinstance(val, str):
        for fmt in ['%Y-%m-%d', '%Y/%m/%d', '%Y.%m.%d', '%Y%m%d']:
            try: return datetime.strptime(val.strip(), fmt).strftime('%Y-%m-%d')
            except: pass
        m = re.match(r'^(\d{4})[-/.](\d{1,2})[-/.](\d{1,2})$', val)
        if m: return f'{m.group(1)}-{m.group(2).zfill(2)}-{m.group(3).zfill(2)}'
    return None

def calc_age(dob_str, ref=date(2025,5,1)):
    """根据出生日期计算年龄"""
    if not dob_str: return None
    try:
        parts = dob_str.split('-')
        yr, mo, dy = int(parts[0]), int(parts[1]), int(parts[2])
        age = ref.year - yr - ((ref.month, ref.day) < (mo, dy))
        return age
    except: return None

def calc_years(start_str, ref=date(2025,5,1)):
    """计算参加工作/司龄年限"""
    if not start_str: return None
    try:
        parts = start_str.split('-')
        yr, mo, dy = int(parts[0]), int(parts[1]), int(parts[2])
        return round((ref - date(yr, mo, dy)).days / 365.25, 1)
    except: return None

def get_age_band(age):
    """获取年龄段"""
    if age is None: return '未知'
    for max_age, band in AGE_BANDS:
        if age <= max_age: return band
    return '55岁以上'

def normalize_title(raw):
    """规范化职级(提取数字)"""
    if not raw: return None
    m = re.search(r'(\d+)', str(raw))
    return int(m.group(1)) if m else None

FIELD_MAP = {
    '序号': 'seq', '二级单位': 'unit2', '三级单位': 'unit3',
    '部门/项目': 'dept', '部门': 'dept', '姓名': 'name',
    '性别': 'gender', '出生日期': 'dob', '政治面貌': 'political',
    '参加工作时间': 'work_start', '入职科工时间': 'join_gjkg',
    '职级': 'level_raw', '主任职': 'title_post',
    '第一学历': 'edu1', '最高学历': 'edu_high',
    '职称': 'title', '职业资格': 'cert_raw',
    '2023年考核': 'assess_2023', '2024年考核': 'assess_2024',
    '2025年考核': 'assess_2025',
    '人员标签': 'person_tag', '项目分类': 'project_cat',
    '项目状态': 'project_status', '部门属性': 'dept_attr',
    '身份证号': 'id_no',
}

关键技术要点:

  • 日期支持多种格式解析(YYYY-MM-DD, YYYY/MM/DD, YYYY.MM.DD, 等)
  • 年龄基于基准日期(默认2025-05-01)动态计算
  • 职级从原始文本中提取数值(如"23上位值" → 23)
  • 职业资格按分号或逗号拆分为列表
  • 司龄/工龄精确到小数点后1位

1.3 CSV模板下载

在HTML报告中,后台数据页面提供模板下载,包含所有列名和示例数据:

  • 32个标准字段
  • 2条示例数据(含中文内容)

Phase 2: HTML报告构建

2.1 构建脚本

build_report_v3.pypeople_data_enhanced.json 读取数据,计算所有统计指标,嵌入完整的HTML模板。

统计计算模块

  • 年龄:平均年龄、年龄段分布(8个段)
  • 学历:最高学历分布(6类)
  • 职称:正高/副高/中级/初级/无职称
  • 司龄:平均司龄、6个段位分布
  • 政治面貌:中共党员/共青团员/群众统计
  • 职业资格:持证率、TOP15证书排名
  • 考核成绩:近三年ABCD分布、趋势对比
  • 项目分类:三大板块(一线/制造/机关)分组统计
  • 项目状态:在施/准备/完工/保修分布
  • 三级单位:各单位人数、平均年龄、本科率、职称率、项目经理数
  • 关键岗位:项目经理/项目班子/车间主任专项分析
  • 人才梯队:绩效×潜力九宫格(基于考核×学历/职称/荣誉/证书综合评分)

2.2 HTML页面结构(12个标签页)

标签页内容
--------------
总览KPI卡片(6个核心指标)、年龄/学历/职称/政治面貌图表、三级单位排名
年龄与性别年龄段柱状图+性别饼图、各单位年龄结构对比、核心发现+风险提示
学历与职称学历分布+职称饼图、各单位本科率/职称率对比、紧迫建议
执业资格TOP15持证人数柱状图、各单位持证率、证书人才名单
考核成绩🔒近三年考核对比、各层级趋势、各单位A级占比(管理员密码talent2025)
三级单位分析单位卡片网格(6维指标)、综合雷达图、全员名单
项目分类三大板块饼图、TOP12条形图、分类卡片、年龄/学历对比、施工状态分布
关键岗位项目经理/项目班子/车间主任概览卡片+分别的年龄/学历/职称图表
项目经理档案档案概览、人才梯队九宫格、考核趋势、荣誉/资质图表、个人履历详情
后备人才库添加/编辑/删除/导入/导出(localStorage持久化)、CSV/JSON互转
人员查询10维多选筛选+姓名搜索、敏感信息🔒模糊、Excel/CSV导出
后台数据Excel花名册导入(拖拽上传)、在线采集表(二维码/腾讯文档/表单)、模板下载

2.3 HTML特性

  • 自包含:单文件HTML,内嵌所有CSS/JS,无外部依赖(Chart.js/XLSX/QRCode通过CDN加载)
  • 手机端友好:响应式布局,@media适配900px以下
  • 微信兼容:无外部重定向,可直接通过EdgeOne Pages或已备案域名在微信打开
  • 隐私保护:管理员密码SHA-256验证,考核成绩/职级/职称自动模糊(filter:blur(4px)
  • 图表交互:所有Chart.js图表支持点击下钻查看详细人员名单
  • 多选下拉:自研MultiSelect组件,支持搜索过滤、多选、计数展示
  • 内置AI:键盘+规则匹配问答系统,支持自然语言查询花名册数据
  • 数据持久化:后备人才库、已收集数据、腾讯文档链接全部localStorage存储

2.4 管理员权限

默认管理员密码:talent2025(SHA-256哈希:5145aaca59e842d7b6d27cf7bb583bc69e5cec322fde3da496041c2fe9a9b065

登录后解锁:

  • 考核成绩页面完整可见
  • 主任职/职称/考核成绩列取消模糊
  • 人员查询中开放考核等级筛选
  • 后备人才库中显示职级/考核信息

Phase 3: 部署

3.1 EdgeOne Pages(推荐,微信可打开)

# 1. 确保HTML文件在部署目录
mkdir -p /tmp/talent-report-deploy
cp /path/to/人才盘点分析报告V3.html /tmp/talent-report-deploy/index.html

# 2. 部署
cd /tmp/talent-report-deploy && \
PAGES_SOURCE=skills \
/Users/macbook/.workbuddy/binaries/node/versions/22.12.0/bin/node \
/Users/macbook/.workbuddy/binaries/node/workspace/node_modules/edgeone/edgeone-bin/edgeone.js \
pages deploy -n talent-report

⚠️ 注意:

  • EdgeOne CLI需要先安装:npm install edgeone@latest
  • 部署后URL默认带 eo_token 鉴权参数
  • 需在控制台将项目设为公开访问,否则微信会显示401
  • *.edgeone.cool 域名未ICP备案,微信内需申请域名恢复(1-3个工作日)
  • 最佳方案:绑定自有已备案域名

3.2 腾讯云COS(备选)

# 上传并设置Content-Disposition为inline
python3 /path/to/cos_upload.py /path/to/report.html talent-report/v3.html

⚠️ COS直链和cos-website域名在微信内均会触发下载,需配合EdgeOne CDN加速使用。

3.3 htmlcode.fun(快速分享)

使用 html-deploy 技能快速部署到公网分享链接。


Phase 4: 简历增强(可选)

如需项目经理个人档案信息(工作履历、业绩亮点、荣誉获奖、资格证书),需要额外处理:

  1. 收集项目经理Word格式简历表(.docx)
  2. 运行 extract_resumes.py 解析简历
  3. 生成 resume_data.json
  4. 合并到 people_data_enhanced.json 中的 _resume 字段
# 简历字段结构
_resume = {
    "name": "张三",
    "gender": "男",
    "dob": "1985-03-15",
    "political": "中共党员",
    "phone": "13800138000",
    "work_start": "2008-07-01",
    "join_gjkg": "2008-07-01",
    "title": "高级工程师",
    "level_raw": "Z5",
    "positions": [],        # 历任职务
    "edu1": "大学本科",
    "edu_high": "硕士研究生",
    "work_history": [{"dates": ["2010","至今"], "desc": "..."}],
    "achievements": [{"year": "2024", "content": "..."}],
    "honors": [{"name": "优秀项目管理者", "level": "公司级", "date": "2024"}],
    "cert_abc": ["一级建造师-建筑工程"],   # 注册类
    "cert_pro": [],                          # 专业类
    "cert_qual": []                          # 岗位类
}

常见问题

问题原因解决方案
----------------------
微信打开显示下载Content-Disposition未设inline通过EdgeOne Pages部署
微信显示"申请恢复访问"域名未备案绑定已备案自定义域名
页面加载后图表空白Chart.js CDN加载失败检查网络/改用国内CDN
Excel导入后字段为空列名不匹配按模板调整Excel表头
中文路径npm报错Node.js对中文路径支持差将脚本和依赖放/tmp/
年龄计算不准确基准日期固定修改ref=date(2025,5,1)

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-21 16:20 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

ontology

oswalpalash
类型化知识图谱,用于结构化智能体记忆与可组合技能。支持创建/查询实体(人员、项目、任务、事件、文档)及关联...
★ 712 📥 243,795
security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,215 📥 266,508
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668 📥 324,121