# Client 企业设置模块指引 ## 路径基准与读取顺序 - 本文件适用于 `src/modules/tenant-management/`,代码路径相对本目录;应用公共规则见 `../../../AGENTS.md`,层级与权限语义见 `../../../docs/平台客户层级与权限契约.md`。 - 本模块承载企业资料、成员、角色与权限(`company/profile`、`organization/*`);账号与登录标识归 `backend auth/`,接入侧实现归 `backend iam/`。 - 模块对外只暴露 `public.ts` 与 `contracts.ts`,其他模块不得穿透内部 `views/`、`store/`。 ## 页面与入口 | 目标 | 页面/路由 | API 与后端 | |---|---|---| | 企业资料、资质上传与状态 | `views/CompanyProfileView.vue`;编辑为 `views/CompanyProfileEditView.vue`、`company/profile/edit`;文件工具为 `utils/qualificationFile.ts`、`utils/qualificationStatus.ts` | `api/merchantIam.ts`;`iam/`、`file/` | | 企业成员管理 | 列表 `views/MembersView.vue`、`organization/members`;新增/编辑 `views/MemberEditorView.vue`、`organization/members/create`、`organization/members/:memberId/edit` | 页面经 `store/tenantAdministration.ts` → `api/merchantIam.ts`;`iam/`、`auth/` | | 企业角色 | `views/RolesView.vue`;`organization/roles` | 页面经 `store/tenantAdministration.ts` → `api/merchantIam.ts`;`iam/` | | 角色权限分配 | `views/PermissionsView.vue`;`organization/permissions` | 页面经 `store/tenantAdministration.ts` → `api/merchantIam.ts`;权限码常量见 `contracts.ts` | | 跨页状态与稳定契约 | `store/tenantAdministration.ts`、`contracts.ts`、`public.ts` | 服务端 DTO | ## 关键边界 - 企业资料编辑、成员新增/编辑使用独立路由页面;角色新增/编辑使用居中弹框;权限分配保持独立页面。资质上传、文件预览、密码重置沿用专项弹框。当前承载依据见 [Client 界面样式规范](../../../../../docs/Client界面样式规范.md) 的“企业设置承载方式”。 - 企业资料只修改 `contactPhone` 等企业联系信息,不提交或回填成员登录手机号;两者独立维护。 - 成员登录手机号可选;修改时由 IAM/Auth 同步并撤销该账号现有会话,前端不互相回填或联动提交。 - 审核必填资质仅营业执照与统一社会信用代码;法人身份证选填,可在已有营业执照后单独补传或替换。 - 企业成员、角色与权限只能管理当前企业范围;前端隐藏不是安全控制,服务端必须重复校验租户与权限。 - 认证与会话统一经 `../../api/http.ts`、`../../api/session.ts`;页面不读写 Token,不自行处理 401 刷新。 ## 验证 - 定向:`pnpm test src/modules/tenant-management/<目标测试>`;成员或权限字段变化同时运行 `pnpm typecheck`。 - 本文件或索引变更后,从后端根运行 `./scripts/agents-index-contract.ps1`。