## Context

系统使用 JWT 作为无状态会话票据，并通过 `XYW_SESSION` HttpOnly Cookie 让浏览器在后续请求中自动携带票据。现有 `AuthTokenService` 已按 `xyw.auth.cookie-secure` 配置正确签发 HTTP/HTTPS Cookie。当前 IntelliJ 运行配置却把项目目录设置成 Spring profile，且未显式设定工作目录，可能使根目录 `.env` 未按预期被 Spring 原生导入。

## Goals / Non-Goals

**Goals:**

- 本地后端从项目根目录启动，并由 `application.yml` 的 Spring 原生配置导入机制读取根目录 `.env`。
- 移除无效的 Spring profile 目录值，避免本地运行环境混乱。
- 保持现有 HTTP/HTTPS Cookie 策略及登录接口兼容。

**Non-Goals:**

- 不更换 JWT 算法、Cookie 名称、会话时长、接口路径或响应信封。
- 不修改数据库结构、用户权限模型、前端存储方式或认证业务代码。
- 不启用 EnvFile 插件，避免它与 Spring 原生 `.env` 导入重复。

## Decisions

### Spring 原生加载根目录 `.env`

IntelliJ 的 Spring Boot 运行配置移除 `ACTIVE_PROFILES=F:\Project\xyw_console`，并设置 `WORKING_DIRECTORY=$PROJECT_DIR$`。这让 `application.yml` 中的 `optional:file:.env[.properties]` 从项目根目录解析；不启用 EnvFile 插件。

备选方案是启用 EnvFile 插件，但当前配置没有声明文件条目，且 Spring 已具备原生导入机制；双重注入会使配置优先级难以判断，因此不采用。

### 以登录回归结果决定是否增加认证诊断

修正启动配置后先进行真实登录验证。若 `/api/auth/me` 仍返回 401，再新增不含敏感信息的过滤器诊断与自动化测试；在现有 Cookie 策略已正确的情况下，不预先增加无关认证代码。

## Risks / Trade-offs

- [根目录 `.env` 缺失或内容不完整] → 后端启动后验证必要认证配置是否存在，但不得输出密钥内容。
- [本地 `cookie-secure` 被外部环境覆盖为 true] → 使用同一 `localhost` 地址重新登录并查看 Cookie 属性；必要时修正外部环境变量。
- [用户在 `localhost` 和 `127.0.0.1` 间切换] → Cookie 属于不同主机存储；文档和手工验证统一使用 `localhost`。
- [认证失败原因来自数据库或密钥配置] → 保留统一 401，服务端日志提供安全诊断，不改变客户端安全边界。

## Migration Plan

1. 修正本地 IntelliJ 启动配置并保留 EnvFile 禁用状态。
2. 重启本地后端，统一通过 `http://localhost:5173/asset/` 重新登录。
3. 验证 `/api/auth/me` 及受保护的 GET/POST 接口。
4. 如出现问题，回滚本地运行配置；认证代码、接口和数据均无需迁移。

## Open Questions

- 当前运行中的后端实例是否被外部环境变量设置为 `XYW_AUTH_COOKIE_SECURE=true`，需要在重启后的响应 Cookie 属性中确认。
