Files
asset_helper/app/CLAUDE.md
2026-04-25 22:05:35 +08:00

122 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# App — Claude Code 项目指南
本文件为 Claude Code及其它 AI Agent提供移动/桌面端项目的背景、结构说明和开发规范。
## 项目状态
> **当前状态:尚未初始化代码。** 技术栈待定,目录除本文件外为空。
> 在选定技术栈后,请补全本文件中标记为「⚠️ 待补充」的章节。
## 定位
`app/` 是 asset_helper 的 **移动端/桌面端客户端**,调用后端 API默认通过 Nginx 网关 `https://api.example.com` 暴露)。
-`backend/` 通过 HTTP/JSON 交互,遵循根目录 [CLAUDE.md](../CLAUDE.md) 中定义的跨端契约
-`frontend/`Web 端共享后端UI 实现独立
- 一套代码可能同时输出 iOS / Android / 桌面端,需根据运行平台动态设置 `device` 字段
## 技术栈
> ⚠️ 待补充:选定后请填写。建议候选:
>
> | 维度 | 候选 |
> |------|------|
> | 框架 | Flutter / React Native / Tauri |
> | 语言 | Dart / TypeScript / Rust |
> | 状态管理 | Riverpod / Provider / Redux Toolkit |
> | HTTP | dio / axios / reqwest |
> | 本地存储 | shared_preferences / AsyncStorage / tauri-plugin-store |
## 与后端的协作约定
以下约定来自 [backend/CLAUDE.md](../backend/CLAUDE.md),调用时**必须遵守**。
### 1. 请求包装(注册/业务类接口)
```
{
"device": <平台编码>,
"language": <语言编码>,
"data": { ... }
}
```
### 2. device 编码(按运行平台动态设置)
| 编码 | 平台 |
|------|------|
| `1` | iOS |
| `2` | Android |
| `3` | Web |
| `4` | iPad |
| `5` | macOS |
| `6` | Windows |
| `7` | Linux |
**实现要点:** 在 HTTP 客户端的拦截器/中间件中**自动注入** `device`,根据运行时平台判定,业务代码不直接关心。
### 3. language 编码
- `1` = 简体中文
- `2` = 繁体中文
- `3` = 英文
跟随系统 locale 或用户设置。
### 4. 响应/错误格式
详见 [frontend/CLAUDE.md](../frontend/CLAUDE.md#与后端的协作约定) 或 [backend/CLAUDE.md](../backend/CLAUDE.md),与 Web 前端保持一致。
### 5. JWT 存储
- iOSKeychain
- AndroidEncryptedSharedPreferences / Keystore
- 桌面端操作系统凭证存储macOS Keychain / Windows Credential Manager / libsecret
**禁止**直接存明文文件或 SharedPreferences/UserDefaults 未加密区域。
## 代码风格
- 注释使用**中文**(与后端、前端保持一致)
- 类型定义与后端 Rust 结构体一一对齐
- HTTP 客户端集中封装,统一处理 device/language 注入、错误转换、JWT 注入
## 目录结构
> ⚠️ 待补充技术栈选定后填写。常见骨架Flutter 示例):
>
> ```
> app/
> ├── lib/
> │ ├── api/ # API 客户端
> │ ├── models/ # 与后端对齐的数据模型
> │ ├── pages/ # 页面
> │ ├── widgets/ # 可复用组件
> │ ├── providers/ # 状态管理
> │ └── utils/ # device 平台判定等工具
> ├── ios/
> ├── android/
> ├── pubspec.yaml
> └── ...
> ```
## 常用命令
> ⚠️ 待补充:技术栈选定后填写(如 `flutter run` / `flutter build apk`)。
## 开发环境
- 真机/模拟器需要能访问后端网关。本地开发可通过:
- iOS 模拟器:`localhost` 直连
- Android 模拟器:`10.0.2.2` 指代宿主机
- 真机:与宿主机同网段,访问宿主机 IP或通过隧道ngrok/frp
## 扩展指南
新增功能时:
1.`models/` 定义与后端对齐的数据模型
2.`api/` 添加调用方法(通过统一封装注入 `device`/`language`/`token`
3. 再开发页面/组件
涉及平台差异时(如文件存储路径、相机权限),用平台判定 + 抽象层屏蔽。