# Client 登录与注册模块指引 ## 路径基准与读取顺序 - 本文件适用于 `src/modules/auth/`,代码路径相对本目录;应用公共规则见 `../../../AGENTS.md`。 - 页面:`views/LoginView.vue`、`views/RegisterView.vue`、`views/LegalDocumentView.vue`(`/login`、`/register`、`/legal/*`);会话状态在 `store/auth.ts`,请求在 `api/auth.ts`。 - 后端:登录与 Token 归 `auth/`,注册与资质归 `iam/` + `file/`。 ## 页面与入口 | 目标 | 页面/入口 | API 与后端 | |---|---|---| | 登录、记住账号 | `views/LoginView.vue` | `api/auth.ts`、`store/auth.ts`;`auth/` | | 企业注册与资质上传 | `views/RegisterView.vue` | `api/auth.ts`;`iam/`、`file/` | | 用户协议与隐私政策 | `views/LegalDocumentView.vue`、`legalDocuments.ts` | 静态文案 | | 认证壳层与布局 | `components/AuthShell.vue` | — | | 令牌解析与刷新 | `store/auth.ts`、`utils/jwt.ts` | `../../api/http.ts`、`../../api/session.ts` | ## 关键边界 - 页面不拼 `Authorization`、不自行持久化密码;Access/Refresh Token 只在 `store/auth.ts` 与 `src/api/session.ts` 编排。 - 注册时登录手机号同时初始化公司联系电话,注册完成后两者独立维护;企业资料只改 `contactPhone`。 - “记住账号”只保存登录 ID,不改变 Token 的持久化与续期策略。 - 注册必填资质仅营业执照与统一社会信用代码,法人身份证选填;上传成功不等于审核通过。 - 并发或跨标签页 401 共用一次刷新,每个原请求最多重放一次。 ## 验证 - 定向:`pnpm test src/modules/auth/<目标测试>`;登录或注册字段变化同时核对 `auth/`、`iam/` 合同。 - 本文件或索引变更后,从后端根运行 `./scripts/agents-index-contract.ps1`。