# NyaHome - 在线 AI 聊天室 基础设施

NyaHome 是由 FastAPI 后端、Vue WebUI 实现的在线 AI 文学创作平台的基础设施。

## 特色功能

* AI 创作聊天室
  * 接入 OpenAI 兼容模型提供商，自携带 API 凭据
* 用户系统
  * 由用户自行管理自己的聊天室
  * 安全的密码管理与 JWT 令牌签发和验证
  * 邮箱绑定、邮件验证码发送和验证
  * 用户安全事件记录、修改密码时自动登出所有设备
* NyaHome 系统功能
  * 在线后台管理面板
  * 邮件 SMTP 发件
  * 基于 mjml -> Jinja2 -> HTML 邮件的全链路渲染和发件流程
  * 异步邮件发送队列

## 未来功能计划

| 功能                        | 阶段  | 优先级 |
|---------------------------|-----|-----|
| **剧本市场** - 剧本分享、聊天室导出为剧本  | 规划中 | 低   |
| **用户功能** - 绑定手机号、接收收集验证码  | 规划中 | 低   |
| **用户功能** - 第三方账户 Oauth 登录 | 规划中 | 低   |

## 代码规范

NyaHome 的项目代码可以分为 Python 后端部分和 TypeScript 前端部分。

### Python 部分

NyaHome 使用 uv 作为项目管理工具，使用 ruff 和 mypy 进行代码检查。在新的代码提交之前，应使用以下命令进行代码检查：

```bash
uv run ruff check --fix
uv run ruff format
uv run mypy
```

以上检查也被写入了 git 的 pre-push 钩子中，会在推送前自动进行检查。

### TypeScript 部分

NyaHome 的 Vue 前端使用 TS。同时，使用 Oxc 的 linter 和 formatter。你可以在 webui 目录下使用以下命令进行代码检查：

```bash
pnpm run lint
pnpm run format
```

## 更新日志 CHANGELOD.md

NyaHome 尝试编写遵循 [Keep a changelog](https://keepachangelog.com/zh-CN/1.1.0/) 规范的更新日志。这意味着：

| 变动类型       | 变动含义             |
|------------|------------------|
| Added      | 新添加的功能。          |
| Changed    | 对现有功能的变更。        |
| Deprecated | 已经不建议使用，即将移除的功能。 |
| Removed    | 已经移除的功能。         |
| Fixed      | 对 bug 的修复。       |
| Security   | 对安全性的改进。         |

虽然 NyaHome 同时尝试维护规范的 git 日志，但是 git 日志毕竟是给开发者看的，而 CHANGELOG 是给所有人看的，包括你。