diff --git a/Project/fonrey/PRD/组织人事管理/组织人事管理模块PRD.md b/Project/fonrey/PRD/组织人事管理/组织人事管理模块PRD.md new file mode 100644 index 00000000..7c053c98 --- /dev/null +++ b/Project/fonrey/PRD/组织人事管理/组织人事管理模块PRD.md @@ -0,0 +1,630 @@ +# PRD: 组织人事管理模块 +**状态**: Draft +**作者**: 产品经理 +**最后更新**: 2026-04-24(v1.1 新增 Story 11-14,补充员工离职、员工调动、奖惩记录查看与新增,并同步更新技术实现与附录) +**版本**: 1.1 +**所属系统**: Fonrey 房产经纪管理系统 +**关联模块**: 权限管理、房源管理、客源管理、系统设置 + +--- + +## 1. 问题陈述 + +### 背景 + +房产经纪公司普遍存在多层级组织架构(总部 → 事业部 → 大区 → 区域 → 片区 → 门店 → 店组),人员流动性极高(入职、离职、调岗、复职频繁)。传统管理方式(纸质档案、Excel)导致以下核心痛点: + +- **组织信息不透明**:架构变更无法实时同步,各部门人员情况只有 HR 知晓,业务管理层无法自助查看当前组织全貌 +- **人员异动追踪困难**:调岗、离职、复职等操作缺乏系统记录,无法事后审计,纠纷时无据可查 +- **权限与身份管理混乱**:系统账号与员工档案分离管理,账号状态变更(冻结/启用)不能与人事异动联动 +- **实名认证合规风险**:房产经纪行业受监管,经纪人身份证信息需与公安系统比对,手工管理容易遗漏,产生合规风险 +- **通讯录维护成本高**:员工联系方式散落在微信群、纸质通讯录,新人入职、老员工离职后无法快速更新 +- **跨端口账号管理复杂**:经纪人同时使用 58 安居客、中国网络经纪人等第三方平台,账号绑定状态需统一管理 + +### 目标用户 + +| 角色 | 描述 | 使用频率 | +|------|------|----------| +| 系统管理员 / HR 行政 | 负责新增/编辑部门、办理员工入职/离职/调岗,维护账号状态与证件信息 | 每日 | +| 店长 / 区域经理 | 查看本部门组织架构、员工列表,发起入职邀请 | 每日 | +| 一线经纪人 | 查看同事联系方式(通讯录),查看自己的档案信息 | 按需 | +| 公司管理层 | 通过架构图了解全公司组织结构,监控人员异动动态 | 按需 | + +--- + +## 2. 目标与成功指标 + +| 目标 | 指标 | 当前基准 | 目标值 | 衡量周期 | +|------|------|----------|--------|----------| +| 提升人事操作效率 | 完成一次员工入职录入耗时 | 约 15 分钟(估算) | < 5 分钟 | 上线后 60 天 | +| 降低合规风险 | 实名未认证 / 证件不匹配员工数量 | 待统计 | 0 | 持续 | +| 提升组织透明度 | 管理层查阅组织架构的操作路径步骤数 | 待统计 | ≤ 2 步触达架构图 | 上线后 30 天 | +| 降低异动追踪成本 | 异动记录查询耗时 | 约 30 分钟(估算) | < 1 分钟 | 上线后 60 天 | +| 提升账号管理效率 | 账号冻结/启用操作耗时 | 待统计 | < 30 秒 | 上线后 60 天 | + +--- + +## 3. 非目标(本期不做) + +- 不包含薪酬管理、绩效考核、排班管理等 HR 深度功能(后续 OA 模块规划) +- 不包含招聘管理(简历库、面试流程) +- 不包含移动端 App(本期为 Web 端,移动端适配为 v2 规划) +- 不包含合同电子签署(合同模块另行规划) +- 不包含考勤打卡系统集成 +- 不包含组织架构图的直接编辑(仅展示,编辑通过部门管理页操作) + +--- + +## 4. 用户故事与验收标准 + +> **说明**:以下用户故事按核心业务流程顺序排列,覆盖组织人事管理模块「组织结构」子模块的全部核心功能。 + +--- + +### Story 1:管理员查看组织人员列表 + +**As** 系统管理员/店长,**I want** 在组织结构页面查看公司所有部门及其员工信息,**So that** 能快速掌握当前人员分布并进行管理操作。 + +**验收标准**: +- [ ] 页面入口路径:顶部导航「人事」→「组织人事」→「组织结构」,面包屑显示「人事OA / 组织人事 / 组织结构」 +- [ ] 页面包含两个视图 Tab:「组织结构」(默认选中)和「部门架构图」,Tab 切换无需刷新页面 +- [ ] 左侧展示部门树形列表,包含:「+ 新增部门」按钮、部门搜索框、「显示已关闭部门」复选框、公司名称(根节点)及各子部门节点(显示员工人数) +- [ ] 点击部门节点后,右侧展示该部门及其下级部门员工列表(可通过「显示下属部门员工」下拉切换) +- [ ] 右上角显示全局系统提示(账号数量上限、实名认证不匹配人数等),提示可点击「立即筛选数据」跳转至对应筛选结果 +- [ ] 页面右上角有「员工入黑名单」快捷操作入口 +- [ ] 员工列表支持多条件筛选:姓名/工号/电话(文本搜索)、职务(下拉选择)、职务类别(全选/单选)、员工状态(下拉,含已选 N 个计数)、审批状态(下拉)、冻结状态(全选)、登录账号(全选)、系统管理员(请选择)、入职时间(日期范围)、离职时间(日期范围)、显示下属部门员工(显示/隐藏)、部门级别(全选)、证件状态(不限)、证件号搜索 +- [ ] 点击「查询」按钮执行筛选,点击「清空条件」重置所有筛选项 +- [ ] 员工列表支持批量操作:勾选复选框后,可执行「批量调动员工」「批量设置员工上级」,通过「更多」下拉展开更多批量操作 +- [ ] 列表操作区包含:「新增员工」(主按钮,带下拉箭头)、「导出员工」、「批量调动员工」、「批量设置员工上级」、「更多」、「员工异动记录」(链接) +- [ ] 员工列表展示列:复选框、头像+姓名/昵称、员工工号、职务、部门、部门级别、上级、电话(脱敏显示,带信息图标)、入职时间、审批状态、操作列(查看 / 异动 / 更多) +- [ ] 异动记录状态(如「入职审」)展示在审批状态列 +- [ ] 员工头像旁若有合规风险(如证件不匹配)展示红色警告图标 +- [ ] 列表底部分页:显示「共 X 条 上一页 [当前页] 下一页 20 条/页 跳至 [页] 确定」 +- [ ] 列表支持水平滚动以展示更多列 + +--- + +### Story 2:管理员新增部门 + +**As** 系统管理员,**I want** 新增一个业务部门并配置其基本信息,**So that** 新部门能纳入组织架构并支持员工归属。 + +**验收标准**: +- [ ] 点击左侧「+ 新增部门」按钮,跳转至「部门新增」页面,面包屑显示「人事OA / 组织人事 / 组织结构 / 部门新增」 +- [ ] 页面顶部展示业务规则提示(蓝色信息框): + - 1. 店组级别部门必须挂在门店下; + - 2. 经纪人/店管的所属部门只能是门店/店组; + - 3. 经纪人是职务类别为置业顾问的员工; +- [ ] 「部门基本信息」区块包含以下字段: + - **部门名称**(必填,文本输入) + - **上级部门**(必填,关联选择,默认预填为当前登录公司名称,可通过 X 清除并重新选择) + - **部门级别**(必填,单选:事业部 / 大区 / 区域 / 片区 / 门店 / 店组 / 职能) + - **部门地址**(选填,城市下拉 + 县区下拉 + 详细地址文本输入,三段式) + - **部门坐标**(选填,点击「坐标」链接打开地图选点,坐标图标为橙色定位针) + - **部门负责人**(选填,员工关联下拉选择) + - **成立时间**(选填,日期选择器) + - **部门电话**(选填,文本输入) + - **分机范围**(选填,起始分机号 - 结束分机号,两个数字输入框) +- [ ] 底部操作按钮:「保存」(主按钮,橙色)、「取消」(次级按钮) +- [ ] 点击「保存」时校验所有必填字段,未填写时高亮红色错误提示 +- [ ] 保存成功后返回组织结构列表并展示成功提示 +- [ ] 点击「取消」返回组织结构列表,不保存数据 + +--- + +### Story 3:管理员编辑部门信息 + +**As** 系统管理员,**I want** 编辑已有部门的基本信息,**So that** 组织信息保持最新准确状态。 + +**验收标准**: +- [ ] 通过部门详情页右上角「编辑」按钮进入「部门编辑」页面,面包屑显示「人事OA / 组织人事 / 组织结构 / 部门编辑」 +- [ ] 编辑页面包含新增页面的全部字段,且已预填当前部门信息 +- [ ] 编辑页面**额外包含**以下字段(新增页不含): + - **部门属性**(必填,单选:直营 / 加盟) + - **部门状态**(单选:启用 / 关闭) + - **部门关联人员**区块(显示该部门的关联人员列表,右上角有「添加人员」操作链接) +- [ ] 部门级别、上级部门修改后若违反业务规则(如店组不在门店下),保存时应提示错误 +- [ ] 底部操作按钮:「保存」「取消」,行为与新增页一致 +- [ ] 保存成功后返回该部门详情页并展示成功提示 + +--- + +### Story 4:查看部门详情 + +**As** 管理员/店长,**I want** 查看某个部门的完整信息,**So that** 能快速了解部门基本情况及关联人员。 + +**验收标准**: +- [ ] 点击左侧部门树节点进入部门详情页,标题显示部门名称,面包屑显示「人事OA / 组织人事 / 组织结构 / 部门详情」 +- [ ] 页面右上角操作按钮:「入职邀请」(次级按钮)、「编辑」(主按钮,橙色) +- [ ] 「部门基本信息」区块展示:部门名称、上级部门、部门级别、部门属性(直营/加盟)、部门地址、部门坐标、部门负责人、成立时间、部门电话、分机范围、部门状态 +- [ ] 无内容的字段显示「-」占位 +- [ ] 「部门关联人员」区块展示该部门配置的关联人员列表,无关联人员时显示「暂无部门关联人员」空态 + +--- + +### Story 5:查看部门架构图 + +**As** 管理层/店长,**I want** 以可视化树状图方式查看公司完整组织架构,**So that** 能直观了解层级关系和各部门人员规模。 + +**验收标准**: +- [ ] 点击「部门架构图」Tab 切换至架构图视图,与「组织结构」列表视图共用顶部 Tab +- [ ] 架构图以树状结构展示,根节点为公司名称(显示总人数),向下展开各级部门节点 +- [ ] 每个部门节点卡片展示:部门名称、部门级别标签(如「事业部」标签,蓝色)、部门负责人(未设置时显示「未设置部门负责人」)、部门人数、直属下级数量 +- [ ] 部门级别标签颜色区分显示(如:事业部-蓝色、职能-蓝色,不同级别可配置不同颜色) +- [ ] 架构图支持交互操作: + - 点击节点上的展开/折叠图标(「○」)收起/展开子部门 + - 缩放:支持放大(+)、缩小(-)、适应窗口(自适应按钮)、重置(刷新按钮) + - 下载:支持导出架构图为图片 +- [ ] 右上角工具栏:放大、下载、缩小、适应、重置(5 个图标按钮) +- [ ] 顶部筛选:「部门」下拉选择(可指定从某部门开始展示)、「显示已关闭部门」复选框 +- [ ] 提示文字:「最多 8 个层级数量,可对下图进行拖拽/缩放操作」 +- [ ] 架构图支持拖拽画布(平移视图) + +--- + +### Story 6:查看员工详情 - 员工基本信息 + +**As** HR 管理员,**I want** 查看某员工的完整档案信息,**So that** 能全面了解员工的任职、个人、来源等情况。 + +**验收标准**: +- [ ] 点击员工列表的「查看」操作进入员工详情页,页面标题显示「[部门名称] [员工姓名]」,面包屑显示「人事OA / 组织人事 / 组织结构 / 员工详情」 +- [ ] 左侧边栏展示员工卡片:头像、姓名、所属部门、职务标签、工号;下方为详情导航菜单(员工基本信息 / 奖惩记录 / 异动记录 / 账号信息 / 员工相关资料) +- [ ] 「员工基本信息」Tab 包含「编辑」按钮(右上角,橙色),内容分为以下区块: + + **任职信息区块**: + - 昵称、工号(并排双列) + - 首次入职日期、工龄(如「44天」)(并排) + - 复职日期、离职日期(并排) + - 入职次数、状态(正式/试用等)(并排) + - 行业经验、师傅(并排) + - 业务类型、职务(并排) + - 部门、职务类别(并排) + - 部门级别、角色(并排) + - 职级、银行名称(并排) + - 直属上级、联号(并排) + - 开户行、银行卡号 + + **联系方式区块**: + - 「查看员工电话」操作链接(权限控制,非授权角色不可见完整号码) + - 手机号(脱敏显示,如 159\*\*\*\*\*\*96) + - 通讯录号码(显示「不隐藏」或「隐藏」状态) + + **个人信息区块**: + - 「查看员工隐私信息」操作链接(权限控制) + - 真实姓名、证件类型(并排) + - 性别、证件号码(并排,证件号脱敏,后跟「已认证」绿色标签或「未认证」状态) + - 籍贯、出生日期(并排) + - 户籍性质、婚姻状况(并排) + - 政治面貌、有无子女(并排) + - 最高学历、紧急联系人(并排) + - 民族、紧急联系人电话(并排) + - 户口所在地、参加工作时间(并排) + - 住址 + + **来源信息区块**: + - 招聘人、招聘来源(并排) + - 转介人 + + **备注区块**:表格展示(添加时间 + 备注内容),空时显示「暂无数据」 + + **工作经历区块**:表格展示(任职时间 / 单位名称 / 担任职务 / 离职原因 / 证明人 / 证明人电话),空时显示「暂无数据」 + + **教育经历区块**:表格展示(阶段 / 时间段 / 学校名称 / 专业 / 学籍状态 / 学位),空时显示「暂无数据」 + + **培训经历区块**:表格展示(培训时间 / 培训名称 / 获取证书),空时显示「暂无数据」 + + **家庭主要成员区块**:表格展示(称谓 / 姓名 / 出生日期 / 职业 / 工作单位 / 联系方式),空时显示「暂无数据」 + +--- + +### Story 7:查看员工详情 - 异动记录 + +**As** HR 管理员,**I want** 在员工详情页查看该员工的所有人事异动历史,**So that** 能追溯员工入职、调岗、上级变动等完整轨迹。 + +**验收标准**: +- [ ] 在员工详情页左侧导航点击「异动记录」切换至异动记录 Tab +- [ ] 异动记录以表格形式展示,列为:异动时间 / 操作时间 / 类别 / 旧(变动前值)/ 新(变动后值)/ 备注 / 操作人 +- [ ] 异动类别枚举包含(不限于):入职、上级变动、员工调动、离职、复职 +- [ ] 表格按异动时间倒序排列,最新记录在首行 +- [ ] 旧/新字段为空时显示空白(不显示「-」),有值时直接展示变动的内容值 +- [ ] 操作人格式为「姓名 - 所属部门」(如「金怡 - 都市港湾店」) +- [ ] 异动记录为只读,无编辑入口 + +--- + +### Story 8:查看员工详情 - 账号信息 + +**As** HR 管理员/系统管理员,**I want** 在员工详情页查看和管理该员工的系统账号及第三方平台账号,**So that** 能统一管理员工的登录凭证和外部账号绑定状态。 + +**验收标准**: +- [ ] 在员工详情页左侧导航点击「账号信息」切换至账号信息 Tab +- [ ] 「员工登录系统账号信息」区块,包含两个子区块: + + **登录账号区块**: + - 账号(手机号,后跟「登录账号」绿色标签,提示文字「此账号也可登录58安居客经纪人」) + - 手机号(完整显示,提示文字「若此手机号无法收到验证码,请到58安居客经纪人修改」) + - 账号状态(单选:启用 / 冻结,当前状态高亮显示) + + **原登录账号区块**: + - 账号(显示格式:「[部门名称] [员工姓名]」) + - 密码(密文输入框,可修改) + - 确认密码(密文输入框) + + **微信公众号区块**: + - 绑定情况(显示「已绑定」/「未绑定」) + +- [ ] 「中国网络经纪人账号」区块: + - 以表格形式展示:账号 / 手机号 / 实名信息是否一致 + - 账号后显示「登录账号」绿色标签和「跳转中国网络经纪人后台账号」操作链接 + - 实名信息一致性显示「一致」/「不一致」 +- [ ] 账号状态变更(启用 ↔ 冻结)操作即时生效,无需额外保存步骤 +- [ ] 密码修改需两次输入一致才能保存,不一致时提示错误 + +--- + +### Story 9:查看员工通讯录 + +**As** 经纪人/员工,**I want** 查看公司所有同事的联系方式,**So that** 能快速找到需要联系的同事并拨打电话。 + +**验收标准**: +- [ ] 通讯录页面入口:顶部导航「人事」→「组织人事」→「员工通讯录」(或通过标签页打开),面包屑显示「人事OA / 组织人事 / 员工通讯录」 +- [ ] 顶部筛选区:部门(下拉选择)、职务(下拉选择)、生日(不限/本月生日等选项)、关键字(姓名/电话/分机/邮件文本搜索);「查询」(橙色按钮)、「清除条件」(链接) +- [ ] 通讯录以列表形式展示,列为:部门 / 姓名(含头像)/ 职务 / 性别 / 生日(月-日格式,如「10-02」)/ 电话(脱敏 + 「拨打」操作链接 + 「查看号码」链接)/ 分机 / 邮箱 +- [ ] 电话列显示脱敏号码(如 159\*\*\*\*\*\*96),同时提供「拨打」和「查看号码」两个操作 + - 「拨打」点击后触发拨号动作(浏览器 tel: 协议或系统拨号) + - 「查看号码」需要有对应权限,授权后展示完整手机号 +- [ ] 生日列仅显示月日(不含年份),用于保护隐私同时支持生日提醒功能 +- [ ] 通讯录支持分页,底部展示分页控件 +- [ ] 无分机、邮箱时显示「-」 + +--- + +### Story 10:查看组织员工异动记录(全局视图) + +**As** HR 管理员,**I want** 在组织结构模块查看全公司所有员工的异动记录汇总,**So that** 能统一审计和追踪所有人事变动。 + +**验收标准**: +- [ ] 异动记录入口:组织结构员工列表页右上角「员工异动记录」链接,跳转至异动记录汇总页,面包屑显示「人事OA / 组织人事 / 组织结构 / 异动记录」 +- [ ] 页面标题:「异动记录」 +- [ ] 顶部筛选区:类型(下拉,请选择类型)、日期范围(起止日期选择器)、部门(下拉,请选择部门)、操作人(下拉,请选择)、搜索关键字(姓名/员工编号文本输入)、备注(文本输入);「查询」(橙色按钮)、「清空条件」(链接) +- [ ] 操作区:「新增异动记录」按钮、「报表导出」按钮 +- [ ] 异动记录表格列:当前部门 / 员工 / 员工编号 / 员工状态 / 当前职务 / 类型 / 旧(变动前)/ 新(变动后)/ 备注 / 操作人 / 异动时间 / 操作时间 +- [ ] 类型枚举包含(不限于):入职、上级变动、员工调动、离职、复职 +- [ ] 旧/新字段:无值时显示「-」 +- [ ] 操作人格式为「所属部门 - 姓名」(如「都市港湾店 - 金怡」) +- [ ] 分页:「共 X 条 上一页 [N] 下一页 [页码列表] 20 条/页 跳至 [页] 确定」(支持大数据量,示例图显示 575 条,29 页) +- [ ] 「新增异动记录」功能:支持手动录入异动记录(字段与表格列对应),保存后记录追加至列表 +- [ ] 「报表导出」:异步导出当前筛选条件下的异动记录为 Excel,触发后显示「正在导出,请稍候」提示,完成后可下载 + +--- + +### Story 11:员工离职操作 + +**As** HR 管理员/店长,**I want** 在组织结构员工列表中对在职员工发起离职操作,**So that** 员工状态及时变更为「离职」,并触发业务数据的归属处理流程。 + +**验收标准**: +- [ ] 离职操作入口:员工列表行右侧「异动」下拉菜单中点击「离职」,弹出「员工离职」对话框(Modal 形式,背景遮罩,不跳转页面) +- [ ] 对话框标题:「员工离职」,右上角有「×」关闭按钮 +- [ ] 对话框顶部展示该员工**业务信息统计**: + - 房源数量(如:564) + - 客源数量(如:21) + - 营销客数量(如:3) + - 数据以「标签 + 数值」形式并排展示,帮助操作人了解离职影响范围 +- [ ] 对话框中部展示红色警示提示文字:「注:若不转给任何账号,则离职成功后业务信息仍属于该离职员工 转移业务归属」,其中「转移业务归属」为可点击的操作链接(跳转至业务归属转移页面) +- [ ] 表单字段(全部必填): + - **离职日期**(必填,日期选择器,默认空) + - **离职类型**(必填,下拉选择,枚举由运营维护,如:自离、协商离职、辞退等) + - **备注**(选填,多行文本输入框,占位符「50字以内」) +- [ ] 底部操作按钮:「确定」(橙色主按钮)、「取消」(次级按钮) +- [ ] 点击「确定」时校验必填字段:离职日期、离职类型均未填时拦截提交并高亮错误提示 +- [ ] 离职操作成功后: + - 员工状态变更为「离职」 + - 在员工异动记录中自动生成一条类型为「离职」的异动记录,记录离职日期、离职类型、备注及操作人 + - 员工列表中该员工行状态更新,不再计入在职账号数 + - 展示「操作成功」Toast 提示 +- [ ] 点击「取消」或「×」关闭对话框,不执行任何操作 +- [ ] 离职操作需有权限控制,非授权角色不显示「离职」操作入口 + +--- + +### Story 12:员工调动操作 + +**As** HR 管理员,**I want** 通过右侧抽屉面板对员工发起调动操作并修改其部门、上级、职务等信息,**So that** 员工的组织归属变更即时生效并留下完整的调动记录。 + +**验收标准**: +- [ ] 调动操作入口:员工列表行右侧「异动」下拉菜单中点击「调动」,从页面右侧滑出「员工调动」抽屉面板(不跳转页面,背景列表可见但交互禁用) +- [ ] 抽屉面板标题:「员工调动」,显示被调动员工姓名(如「周炜 的业务信息统计」) +- [ ] 抽屉顶部展示该员工**业务信息统计**: + - 房源数量(如:13) + - 红色警示提示文字:「注:若不转给任何账号,则业务信息跟随到新部门 转移业务归属」,「转移业务归属」为可点击操作链接 +- [ ] 表单采用「调动前 → 调动后」双列对比布局,左列为「调动前」(只读展示当前值),右列为「调动后」(可编辑): + + | 字段 | 必填 | 调动前(只读) | 调动后(可编辑) | + |------|------|---------------|-----------------| + | 调动日期 | 必填 | — | 日期选择器,默认今日 | + | 分类 | — | — | 文本说明(如「此次调动为:平调」,系统自动判断) | + | 部门 | 必填 | 当前部门(如「上海豪园店二组」)| 部门选择器(带清除按钮 ○)| + | 部门级别 | — | 当前部门级别(如「店组」)| 自动跟随部门联动,只读 | + | 职务 | 必填 | 当前职务(如「高级业务员」)| 职务下拉选择器 | + | 职务类别 | — | 当前职务类别(如「置业顾问」)| 自动跟随职务联动,只读 | + | 职级 | — | 当前职级(如「3」)| 数字输入框 | + | 员工状态 | — | 当前状态(如「正式」)| 状态下拉选择器 | + | 角色 | 必填 | 当前角色(如「高级业务员」)| 角色多选选择器(支持添加多个角色标签) | + | 直属上级 | 必填 | 当前上级(如「刘文龙」)| 员工选择器(格式「部门-姓名」,如「上海豪园店二组-刘文龙 ○」)+ 「无直属上级」复选项 | + | 直属下级 | — | 当前下级 | 「+ 添加该员工工直属下级」操作链接 | + +- [ ] 调动日期说明文字:「若日期为今日之前的日期,若当天有已提交的日报,当天之后的日报将进行调动」 +- [ ] 调动分类由系统根据调动前后部门级别自动判断:同级调动显示「平调」,晋升显示「晋升」,降职显示「降职」 +- [ ] 备注字段(选填):多行文本,提示「备注内容不超过30个字符」,字数实时计数 +- [ ] 底部操作按钮:「提交」(橙色主按钮)、「取消」(次级按钮),按钮固定在抽屉底部 +- [ ] 点击「提交」校验必填字段,未填写时在对应字段旁展示红色错误提示 +- [ ] 调动成功后: + - 员工部门、上级、职务等信息即时更新 + - 自动生成异动记录,类型为「员工调动」,记录调动前/后各字段变化值、调动日期、备注及操作人 + - 关闭抽屉,列表数据刷新,展示「操作成功」Toast 提示 +- [ ] 点击「取消」或抽屉外部区域关闭抽屉,不执行操作 + +--- + +### Story 13:查看员工奖惩记录 + +**As** HR 管理员/店长,**I want** 在员工详情页查看该员工的所有奖惩记录,**So that** 能了解员工的奖励与处罚历史,作为绩效管理和晋升的参考依据。 + +**验收标准**: +- [ ] 在员工详情页左侧导航点击「奖惩记录」切换至奖惩记录 Tab,当前选中项高亮(橙色文字 + 左侧橙色指示条) +- [ ] 页面右上角有「新增」按钮(橙色),用于发起新增奖惩记录操作 +- [ ] 奖惩记录以表格形式展示,列为:日期 / 奖惩类别 / 奖惩名称 / 备注 / 操作 +- [ ] 无记录时表格内展示空态文字「暂无数据」,居中显示 +- [ ] 操作列包含每条记录的「编辑」和「删除」操作(具体操作入口待补充截图确认) +- [ ] 表格按日期倒序排列,最新记录在首行 + +--- + +### Story 14:新增员工奖惩记录 + +**As** HR 管理员,**I want** 在员工奖惩记录页面新增一条奖惩记录,**So that** 员工的奖励或处罚情况被系统留档,可追溯查询。 + +**验收标准**: +- [ ] 点击奖惩记录页面右上角「新增」按钮,弹出「新增奖惩记录」对话框(Modal 形式,标题「新增奖惩记录」,右上角有「×」关闭按钮) +- [ ] 对话框表单字段: + - **奖惩日期**(必填,日期选择器,默认填充当日日期,如「2026-04-24」,可修改) + - **奖惩类别**(必填,下拉选择器,枚举值由系统/运营维护,区分奖励类与惩戒类) + - **奖惩名称**(必填,下拉选择器,与奖惩类别存在联动关系,选择类别后名称列表随之过滤) + - **备注**(选填,多行文本输入框,占位符「请输入备注」) +- [ ] 必填字段均标有红色「*」前缀标识 +- [ ] 底部操作按钮:「确定」(橙色主按钮)、「取消」(次级按钮) +- [ ] 点击「确定」时校验所有必填字段,未填写时在字段下方展示红色错误提示,阻止提交 +- [ ] 保存成功后: + - 对话框关闭 + - 奖惩记录列表中新增该条记录 + - 展示「保存成功」Toast 提示 +- [ ] 点击「取消」或「×」关闭对话框,不保存任何数据 + +--- + +## 5. 解决方案概述 + +### 5.1 整体架构 + +组织人事管理模块(人事OA)作为 Fonrey 系统的组织底座,承担三大核心职责: + +1. **组织结构维护**:多层级部门树管理(最多 8 层),支持直营/加盟属性区分 +2. **员工档案管理**:员工入职到离职的完整生命周期档案,含任职信息、个人信息、账号信息 +3. **人事异动追踪**:所有人事变动自动记录异动日志,支持全局汇总查询与个人维度查询 + +### 5.2 部门层级模型 + +系统支持以下部门级别(按层级从高到低): + +| 级别 | 说明 | 约束规则 | +|------|------|----------| +| 事业部 | 最高业务单元 | 挂在公司根节点下 | +| 大区 | 跨城市/跨区域管理单元 | — | +| 区域 | 区域管理层 | — | +| 片区 | 片区管理层 | — | +| 门店 | 独立经营单元(实体店铺) | 经纪人/店管只能归属此级或下级 | +| 店组 | 门店下的小组 | 必须挂在门店下 | +| 职能 | 后台支撑部门(行政/财务等)| — | + +**业务约束规则**: +- 店组级别部门必须挂在门店下 +- 经纪人/店管的所属部门只能是门店/店组 +- 经纪人是职务类别为「置业顾问」的员工 + +### 5.3 员工档案结构 + +员工档案分五大模块通过左侧导航访问: + +``` +员工详情 +├── 员工基本信息(任职信息 / 联系方式 / 个人信息 / 来源信息 / 备注 / 工作经历 / 教育经历 / 培训经历 / 家庭主要成员) +├── 奖惩记录 +├── 异动记录 +├── 账号信息(系统登录账号 / 原登录账号 / 微信公众号 / 中国网络经纪人账号) +└── 员工相关资料 +``` + +### 5.4 账号体系设计 + +员工账号与多个平台关联: + +| 账号类型 | 说明 | +|----------|------| +| 系统登录账号 | Fonrey 系统主账号,以手机号为账号,支持启用/冻结 | +| 原登录账号 | 系统内部账号(部门+姓名格式),支持密码设置 | +| 微信公众号 | 绑定公众号用于消息通知,显示绑定状态 | +| 58安居客经纪人 | 系统账号同时可登录 58 安居客平台 | +| 中国网络经纪人 | 显示绑定账号及实名一致性状态,提供跳转链接 | + +### 5.5 数据脱敏策略 + +| 数据类型 | 默认展示 | 授权后展示 | +|----------|----------|------------| +| 手机号 | 159\*\*\*\*\*\*96 | 15901850696 | +| 证件号码 | 410\*\*\*\*\*\*\*\*\*\*3037 | 完整号码 | +| 通讯录号码 | 脱敏显示 | 点击「查看号码」后展示 | + +--- + +## 6. 技术实现说明 + +### 6.1 数据模型 + +```python +# apps/org/ 模块核心数据模型 + +class OrgUnit(TenantModel): + """部门/组织单元""" + name = CharField(max_length=100) # 部门名称 + parent = ForeignKey('self', null=True, blank=True) # 上级部门(树形结构) + level = CharField(choices=LEVEL_CHOICES) # 级别:事业部/大区/区域/片区/门店/店组/职能 + attribute = CharField(choices=[('direct', '直营'), ('franchise', '加盟')]) # 部门属性 + status = CharField(choices=[('active', '启用'), ('closed', '关闭')]) + address_city = CharField(blank=True) + address_district = CharField(blank=True) + address_detail = CharField(blank=True) + lat = DecimalField(null=True) # 坐标纬度 + lng = DecimalField(null=True) # 坐标经度 + manager = ForeignKey('Staff', null=True, related_name='managed_depts') # 负责人 + phone = CharField(blank=True) + ext_range_start = IntegerField(null=True) # 分机范围起 + ext_range_end = IntegerField(null=True) # 分机范围止 + founded_at = DateField(null=True) + +class Staff(TenantModel): + """员工档案""" + # 任职信息 + nickname = CharField() # 昵称 + staff_no = CharField() # 工号 + org_unit = ForeignKey(OrgUnit) # 所属部门 + position = ForeignKey('Position') # 职务 + position_type = CharField() # 职务类别 + level = IntegerField() # 职级 + status = CharField(choices=STAFF_STATUS_CHOICES) # 正式/试用/离职 + supervisor = ForeignKey('self', null=True) # 直属上级 + first_joined_at = DateField() + rejoined_at = DateField(null=True) + left_at = DateField(null=True) + # 个人信息 + real_name = CharField() + id_type = CharField() + id_number_encrypted = CharField() # 加密存储 + id_verified = BooleanField(default=False) + gender = CharField() + birth_date = DateField(null=True) + # 联系方式 + phone_encrypted = CharField() # 手机号加密存储 + phone_visible = BooleanField(default=True) # 通讯录是否隐藏 + # 账号 + login_account = OneToOneField('StaffAccount') + # ... 其他个人信息字段 + +class StaffRewardPunishment(TenantModel): + """员工奖惩记录""" + staff = ForeignKey(Staff) + date = DateField() # 奖惩日期 + category = CharField() # 奖惩类别(奖励/惩戒,下拉枚举) + name = CharField() # 奖惩名称(与类别联动,下拉枚举) + remark = TextField(blank=True) # 备注 + created_by = ForeignKey(Staff, related_name='created_rewards') + created_at = DateTimeField(auto_now_add=True) + +class StaffMutationLog(TenantModel): + """员工异动记录""" + staff = ForeignKey(Staff) + org_unit = ForeignKey(OrgUnit) # 异动时所在部门 + mutation_type = CharField() # 入职/上级变动/员工调动/离职/复职 + mutation_at = DateField() # 异动时间 + operated_at = DateTimeField() # 操作时间 + old_value = CharField(blank=True) + new_value = CharField(blank=True) + remark = TextField(blank=True) + operator = ForeignKey(Staff, related_name='operated_mutations') +``` + +### 6.2 关键技术约束 + +**依赖关系**: +- `apps/org/` — 组织人事核心 App,被 `apps/property/`、`apps/client/`、`apps/permissions/` 等模块引用(员工归属、权限主体) +- `apps/permissions/` — 权限控制,决定哪些角色可查看员工完整手机号、隐私信息 +- `core/encryption.py` — 手机号、证件号加密工具(所有敏感字段加密存储) + +**性能约束**: +- 部门树形列表使用 MPTT(Modified Preorder Tree Traversal)或 Closure Table 优化多层级查询,避免 N+1 问题 +- 架构图最多支持 8 层级数量 +- 异动记录量大(示例图显示 575 条),需分页处理,默认 20 条/页 + +**异步任务**: +- 「报表导出」(员工列表、异动记录)通过 Celery 异步执行,避免大数据量导出阻塞请求 + +**HTMX 交互模式**: +- 左侧部门树点击切换右侧员工列表:HTMX 局部刷新右侧内容区 +- 员工详情 Tab 切换(员工基本信息/异动记录/账号信息):HTMX 局部刷新内容区 +- 架构图:Alpine.js 管理展开/折叠状态,SVG 或 Canvas 渲染树形结构 + +### 6.3 已知风险 + +| 风险 | 可能性 | 影响 | 缓解措施 | +|------|--------|------|----------| +| 部门树深度过大导致查询性能下降 | 中 | 高 | 使用 MPTT 存储,限制最大 8 层 | +| 手机号/证件号泄露 | 低 | 极高 | 全字段加密存储,权限控制脱敏展示 | +| 公安系统证件比对接口不稳定 | 中 | 中 | 系统内展示认证状态,接口失败时提示用户手动处理 | +| 多租户隔离失效 | 极低 | 极高 | `django-tenants` Schema 隔离,所有查询强制带租户上下文 | + +### 6.4 待确认问题 + +- [ ] 「入职邀请」功能的具体流程:是发送短信邀请链接自助填写,还是 HR 手动录入?—— 需与业务方确认 —— Deadline: 开发前 +- [ ] 证件实名认证是否需要对接公安部接口,还是仅展示状态由人工审核?—— 需与法务/产品负责人确认 —— Deadline: 开发前 +- [x] 员工「奖惩记录」字段结构(v1.1 已通过截图确认:日期/奖惩类别/奖惩名称/备注) +- [ ] 「员工相关资料」的具体字段结构(本期截图未覆盖)—— 需补充截图或访谈 —— Deadline: 下次迭代前 +- [ ] 架构图是否需要支持直接在图上拖拽节点来调整层级关系,还是只读展示?—— 截图提示支持拖拽缩放,但未确认是否支持编辑 —— Deadline: 设计评审前 +- [ ] 「员工入黑名单」的业务规则与对后续功能的影响(如是否可继续登录系统,名下房源/客源如何处理)—— Deadline: 开发前 +- [ ] 离职类型的枚举值清单(如:自离/协商离职/辞退/其他)—— 需与 HR 业务方确认 —— Deadline: 开发前 +- [ ] 奖惩类别与奖惩名称的完整枚举值及联动规则 —— 需与 HR 业务方提供配置清单 —— Deadline: 开发前 + +--- + +## 7. 上线计划 + +| 阶段 | 时间 | 受众 | 验收门槛 | +|------|------|------|----------| +| 内部 Alpha | 开发完成后 1 周 | 产品+研发团队 | 核心流程无 P0 Bug,部门 CRUD 功能完整 | +| 封闭 Beta | Alpha 后 2 周 | 2-3 家种子客户 HR | 错误率 < 5%,员工录入/异动记录功能可用 | +| 正式上线 | Beta 验收通过后 | 全量租户 | 各指标达到第 2 节目标值 | + +**回滚标准**:若上线后 48 小时内系统错误率超过 2% 或出现员工数据泄露事件,立即回滚并通知所有租户管理员。 + +--- + +## 8. 附录 + +### 8.1 截图来源 + +| 截图文件 | 对应功能 | +|----------|----------| +| `公司组织结构.png` | Story 1 — 组织人员列表页 | +| `员工详情.png` | Story 6 — 员工基本信息详情 | +| `员工通讯录.png` | Story 9 — 员工通讯录 | +| `员工详情异动记录.png` | Story 7 — 员工异动记录(个人维度)| +| `员工详情账号信息.png` | Story 8 — 员工账号信息 | +| `部门新增.png` | Story 2 — 新增部门 | +| `部门编辑.png` | Story 3 — 编辑部门 | +| `部门详情.png` | Story 4 — 部门详情 | +| `组织员工异动记录.png` | Story 10 — 全局异动记录汇总 | +| `部门架构图.png` | Story 5 — 部门架构图 | +| `员工离职.png` | Story 11 — 员工离职操作(Modal 弹窗)| +| `员工调动.png` | Story 12 — 员工调动操作(右侧抽屉面板)| +| `员工奖惩记录.png` | Story 13 — 员工奖惩记录列表 | +| `员工奖惩记录新增.png` | Story 14 — 新增奖惩记录(Modal 弹窗)| + +### 8.2 术语表 + +| 术语 | 定义 | +|------|------| +| 异动 | 员工人事状态变化的统称,包含入职、离职、调岗、复职、上级变动等 | +| 店组 | 门店内的业务小组,是经纪人的最小管理单元 | +| 职能部门 | 非业务线部门,如行政、财务等后台支撑部门 | +| 直营 | 公司直接运营的门店/部门 | +| 加盟 | 加盟商运营的门店/部门 | +| 工龄 | 员工首次入职日期至今的天数,系统自动计算 | +| 通讯录号码 | 员工在通讯录中展示的联系号码,可设置隐藏 | +| 中国网络经纪人 | 国家级房产经纪人实名注册平台,经纪人需在此平台实名认证 | diff --git a/wiki/index.md b/wiki/index.md index 2e8f8ff5..c1f3939a 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -4,6 +4,7 @@ - [Overview](overview.md) — living synthesis ## Sources +- [2026-04-24] [CTP Topic 62 AWS Secrets Manager](sources/ctp-topic-62-aws-secrets-manager.md) - [2026-04-24] [Public Cloud Learning Sessions - OpenText GIS Security Policies - 20241015](sources/public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me.md) - [2026-04-24] [CTP Topic 64 Scaling out with Amazon EKS](sources/ctp-topic-64-scaling-out-with-amazon-eks.md) - [2026-04-24] [CTP Topic 67 Cloud native observability using OpenTelemetry](sources/ctp-topic-67-cloud-native-observability-using-opentelemetry.md) @@ -413,7 +414,6 @@ - [2026-04-19] [ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management](sources/ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management.md) — (expected: wiki/sources/ctp-topic-52-3-lines-of-defence-3lod-framework-cloud-security-posture-management.md — source missing) - [2026-04-19] [ctp-topic-55-aws-firewall-manager](sources/ctp-topic-55-aws-firewall-manager.md) — (expected: wiki/sources/ctp-topic-55-aws-firewall-manager.md — source missing) - [2026-04-19] [ctp-topic-37-secrets-certificates-management](sources/ctp-topic-37-secrets-certificates-management.md) — (expected: wiki/sources/ctp-topic-37-secrets-certificates-management.md — source missing) -- [2026-04-19] [ctp-topic-62-aws-secrets-manager](sources/ctp-topic-62-aws-secrets-manager.md) — (expected: wiki/sources/ctp-topic-62-aws-secrets-manager.md — source missing) - [Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog](sources/Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog.md) — (expected: wiki/sources/Your-AI-Isn-t-Stupid---It-Just-Needs-a-Better-Harness--Lychee-Technology-Engineering-Blog.md — source missing) - [Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend](sources/Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend.md) — (expected: wiki/sources/Expose-hermes-agent-as-an-OpenAI-compatible-API-for-any-frontend.md — source missing) - [zk-steward](sources/zk-steward.md) — (expected: wiki/sources/zk-steward.md — source missing) diff --git a/wiki/log.md b/wiki/log.md index 02bb13d7..8d3a88ac 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,3 +1,12 @@ +## [2026-04-30] ingest | CTP Topic 62 AWS Secrets Manager +- Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-62-aws-secrets-manager.md +- Status: ✅ 成功摄入 +- Summary: AWS Secrets Manager 企业级密钥管理——Nurit & Daniel 分享。选型:HashiCorp Vault vs AWS Secrets Manager POC,AWS Secrets Manager 以更低成本和更简实施胜出。分阶段实施:集中化密钥 → 自动化获取 → 轮换。核心原则:开发者无需直接访问密钥,IAM 角色+标签控制访问。实施案例:Oracle DB 密码轮换(Lambda)、SendGrid API 密钥集中化轮换(无需应用重启)、JDBC Wrapper + AWS SDK 免密登录。 +- Concepts identified: [[Secrets-Management]], [[Secret-Rotation]], [[JDBC-Wrapper]], [[AWS-Secrets-Manager]], [[HashiCorp-Vault]](HashiCorp Vault 作为备选方案被记录于源页面,实体重要性待定) +- Entities identified: [[Nurit]], [[Daniel]], [[Victor]](CTP Topic 62 演讲者和演示者,作为演讲者提及一次,暂不创建独立页面) +- Source page: wiki/sources/ctp-topic-62-aws-secrets-manager.md +- Notes: 无冲突检测;相关来源 [[ctp-topic-37-secrets-certificates-management]] 和 [[ctp-topic-36-sendgrid-as-an-email-service]] 已于 Contradictions 和 Connections 节记录 + ## [2026-04-29] ingest | Public Cloud Learning Sessions - OpenText GIS Security Policies - 20241015 - Source file: Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me.md - Status: ✅ 成功摄入 diff --git a/wiki/overview.md b/wiki/overview.md index c21fe658..3e418dfa 100644 --- a/wiki/overview.md +++ b/wiki/overview.md @@ -131,6 +131,8 @@ Key concepts: [[Process]], [[Value]], [[Value-Stream]], [[Value-Adding]], [[Wast **[[public-cloud-learning-sessions-opentext-thor-platform-flows-20241210-160056-meet]]**(Learning Sessions,Arnold Dacan 主讲):Project Thor 平台架构与数据流设计详解——五大支柱框架(敏捷周期治理、产品发布治理、开发者门户 Backstage、安全与治理、Build Hub);核心数据流:源代码流(GitLab)→ 制造流程(Build Farms)→ Artifactory → 客户环境;地理分布:工具链主站点 Brook Park + 灾备站点 Sacramento;标准化目标:统一 GitLab/Artifactory/UCMDB 工具链,夯实供应链安全基础。属 [[DevOps Culture]] 企业级工具链标准化与供应链安全的深度补充,与 GitHub→GitLab 迁移文档共同构成 Project Thor 知识体系。 +**[[ctp-topic-62-aws-secrets-manager]]**(CTP Topic 62):AWS Secrets Manager 企业级密钥管理深度实践——Nurit 和 Daniel 分享。核心内容:①选型背景——HashiCorp Vault 与 AWS Secrets Manager POC 对比,AWS Secrets Manager 以更低成本和更简实施被选定为最终方案;②AWS Secrets Management Standard 文档——最佳实践文档演变为公有云密钥管理标准,基于 Control Tower 实施经验,包含分阶段方法论(集中化密钥 → 调整自动化获取 → 启动轮换);③核心原则——开发者无需直接访问密钥,通过 IAM 角色和标签实现访问控制;④实施机会——Oracle DB 用户密码轮换(Lambda 函数连接 Oracle 实例执行轮换,无需邮件传递密码)、SendGrid 集中邮件服务(API 密钥轮换通过集中 SMTP 服务实现,无需应用重启或代码修改);⑤Demo——Victor 演示使用 JDBC Wrapper + AWS SDK 免密登录 Oracle 数据库,用户名由角色控制,密钥可通过标签进行分类和访问控制。属 [[AWS-Secrets-Manager]] 在企业落地的核心实践,与 [[ctp-topic-37-secrets-certificates-management]](Secrets 与 Certificates 统一管理框架)互补,与 [[ctp-topic-36-sendgrid-as-an-email-service]](SendGrid 邮件服务)共同构成安全运维知识体系。 + **[[public-cloud-learning-sessions-opentext-gis-security-policies-20241015-160257-me]]**(Learning Sessions,Mike & Ed 主讲):OpenText 全球信息安全团队(GIS)安全策略全景——GIS 是分层组织架构,包含安全运营(事件响应与保障)、合规(认证与政策执行)、治理风险验证(GRV,季度审查 Admin 角色)、隐私(新增集成中)四个支柱。OpenText 采用分层方法定义安全策略——与各团队协作定义"做什么",与执行团队协作确定"怎么做";持有 FedRAMP 等多项行业及政府认证,可进入多个垂直市场销售;每月处理 2250 亿条日志,分诊约 350 个案例。姿态框架基于 ISO 27001(2022 年更新,新增 11 个控制方面);Global Information Security Policy(GISP)是最高纲领性政策,季度审查。安全运营涵盖 Cyber Response Center、威胁情报(BrightCloud)、云安全、安全工具与工程等核心服务;合规组织涵盖合规项目、路线图、产品风险评估、持续合规与审计、自动化等内容。属企业级安全治理体系的核心入门,与 [[ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security]](AWS 层面标签化安全)互补——GISP 定义全局政策纲领,Landing Zone 层面通过标签和 SCP 实现技术落地。 **[[ctp-topic-28-aws-tag-validation-tool]]**(CTP Topic 28):AWS 标签验证工具——Lewis Brown 主讲,SRE 团队开发的 Python/Boto3 工具。Checkpoint 防火墙通过读取 EC2、安全组、负载均衡器的标签值动态配置网络访问策略,标签缺失或无效将导致流量被拦截;SCPs 可阻止不合规资源创建但无法修复存量资源。该工具通过 `variables.yaml` 定义每个账户的合法标签值,自动扫描 EC2/安全组/负载均衡器/Lambda,生成 CSV 审计报告。使用 Poetry 管理 Python 环境,存放于 SRE Tools Repository。标签策略还计划用于未来成本核算,区分同一账户下不同产品的资源消耗。属 [[AWS-Landing-Zone]] 标签治理闭环的核心补充——制定规范(Topic 10)→ 强制执行(SCPs)→ 审计发现(Topic 28)。 diff --git a/wiki/sources/ctp-topic-62-aws-secrets-manager.md b/wiki/sources/ctp-topic-62-aws-secrets-manager.md new file mode 100644 index 00000000..1c072828 --- /dev/null +++ b/wiki/sources/ctp-topic-62-aws-secrets-manager.md @@ -0,0 +1,59 @@ +--- +title: "CTP Topic 62 AWS Secrets Manager" +type: source +tags: [] +date: 2026-04-14 +--- + +## Source File +- [[Cloud & DevOps/Public-Cloud-Learning-Sessions/07_Security/ctp-topic-62-aws-secrets-manager.md]] + +## Summary(用中文描述) +- 核心主题:AWS Secrets Manager 企业级密钥管理方案,包括选型对比、实施标准和落地案例 +- 问题域:云转型过程中密钥安全存储与轮换的标准化治理 +- 方法/机制:分阶段实施策略(集中化密钥 → 自动化获取 → 轮换);Lambda 函数驱动 Oracle 数据库密码轮换;SendGrid 集中邮件服务的密钥轮换方案;JDBC Wrapper + AWS SDK 无需应用感知密钥 +- 结论/价值:AWS Secrets Manager 相比 HashiCorp Vault 成本更低、实施更简单,无需客户端;开发者无需直接访问密钥,通过角色和标签实现安全访问控制 + +## Key Claims(用中文描述) +- AWS Secrets Manager 比 HashiCorp Vault 更具成本效益,被选定为最终方案 +- AWS Secrets Manager 易于实施,缺失功能可用多种语言自行开发 +- 分阶段实施策略:集中化密钥 → 调整自动化获取 → 启动轮换 +- 开发者无需直接访问密钥,密钥访问通过 IAM 角色控制 +- Lambda 函数可执行 Oracle 数据库密码轮换,无需人工介入 +- SendGrid 集中邮件服务实现 API 密钥轮换,无需应用重启 +- AWS Secrets Manager 无需客户端软件(对比 HashiCorp Vault) + +## Key Quotes +> "AWS Secrets Manager is easy and simple to implement. Missing features can be developed in multiple languages." — Nurit & Daniel +> "With that idea, developers actually do not need to have direct access to their Secrets." — Daniel +> "Secrets can be tagged for classification and access control. AWS Secrets Manager does not require clients, unlike HashiCorp Vault." — Victor(Demo) + +## Key Concepts +- [[Secrets-Management(密钥管理)]]:云环境下集中存储、获取和轮换敏感凭证(密码、API 密钥、证书)的标准化实践 +- [[AWS-Secrets-Manager]]:AWS 托管的密钥管理服务,支持密钥轮换、IAM 角色访问控制和标签分类,无需客户端软件 +- [[Secret-Rotation(密钥轮换)]]:定期自动更新密钥的机制,AWS Secrets Manager 内置 Lambda 函数支持主流数据库和服务密钥轮换 +- [[JDBC-Wrapper]]:JDBC 包装器封装数据库连接,通过 AWS SDK 从 Secrets Manager 动态获取凭证,应用无需硬编码密码 +- [[AWS-Lambda]]:无服务器函数,用于执行 Oracle 数据库密码轮换等自动化任务 +- [[SendGrid]]:云邮件服务,API 密钥轮换通过集中化 SMTP 服务实现,无需应用重启 + +## Key Entities +- [[Nurit]]:CTP Topic 62 主持人,AWS Secrets Manager 实施分享 +- [[Daniel]]:CTP Topic 62 主持人,AWS Secrets Management Standard 文档作者,深度解析实施机会 +- [[Victor]]:Demo 演示者,展示使用 JDBC Wrapper + AWS SDK 免密登录 Oracle 数据库 +- [[AWS-Secrets-Manager]]:AWS 密钥管理服务,企业选型最终方案 +- [[HashiCorp-Vault]]:密钥管理备选方案,POC 阶段对比后未被采用 +- [[AWS-Control-Tower]]:AWS 多账户治理服务,密钥管理方案基于其环境实施 +- [[SendGrid]]:邮件服务,API 密钥轮换通过集中化服务方案解决 + +## Connections +- [[ctp-topic-37-secrets-certificates-management]] ← relates_to ← [[ctp-topic-62-aws-secrets-manager]] +- [[ctp-topic-36-sendgrid-as-an-email-service]] ← extends ← [[ctp-topic-62-aws-secrets-manager]] +- [[ctp-topic-61-workload-vpc-provision-with-ipam-automation]] ← depends_on ← [[AWS-Secrets-Manager]] +- [[ctp-topic-10-aws-landing-zone-lz-data-collection-tagging-related-security]] ← extends ← [[ctp-topic-62-aws-secrets-manager]] + +## Contradictions +- 与 [[ctp-topic-37-secrets-certificates-management]] 存在覆盖范围差异: + - 冲突点:Topic 37 覆盖 Secrets 和 Certificates 两大类;Topic 62 仅聚焦 Secrets Management + - 当前观点:Topic 62 通过 AWS Secrets Manager 标准化 Secrets 管理,涵盖 Oracle DB 密码和 SendGrid API 密钥轮换 + - 对方观点:Topic 37 认为密钥与证书管理应统一为同一标准框架 + - 说明:两者可视为互补——证书管理(Certificates)由 Topic 37 覆盖,密钥管理(Secrets)由 Topic 62 深化