Skip to content

Commit 29fb83a

Browse files
committed
add app spec doc
1 parent 506c9c7 commit 29fb83a

1 file changed

Lines changed: 141 additions & 0 deletions

File tree

selfagent_java/APP_SPEC.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# SelfAgent App 功能规格说明
2+
3+
## 概述
4+
5+
SelfAgent 是一个 Android 原生应用,主要功能是作为一个**站点管理器 + 实时消息推送客户端**。用户可以管理多个网站入口,通过内置 WebView 访问,同时接收服务器推送的实时消息通知。
6+
7+
## 核心功能
8+
9+
### 1. 站点管理
10+
11+
- **添加站点**: 用户可以添加自定义网站,输入名称和 URL
12+
- **删除站点**: 长按站点卡片可删除
13+
- **打开站点**: 点击站点卡片,在内置 WebView 中打开网页
14+
- **持久化存储**: 站点列表保存在 SharedPreferences,重启后保留
15+
16+
默认站点:
17+
```
18+
名称: 主系统
19+
URL: http://111.170.6.103:9999/
20+
```
21+
22+
### 2. WebSocket 实时消息推送
23+
24+
- **连接地址**: `ws://111.170.6.103:9999/ws`
25+
- **自动重连**: 断开后 5 秒自动重连
26+
- **消息格式**: 支持 JSON 和纯文本
27+
28+
JSON 消息格式:
29+
```json
30+
{
31+
"title": "消息标题",
32+
"message": "消息内容" // 或 "body"
33+
}
34+
```
35+
36+
收到消息后:
37+
1. 弹出系统通知 (Notification)
38+
2. 添加到应用内通知列表
39+
3. 更新通知角标数量
40+
41+
### 3. 日程管理
42+
43+
- **API 地址**: `http://111.170.6.103:9999/api/daily.php`
44+
- **功能**: 获取今日日程列表
45+
- **展示**: 底部弹窗显示,支持刷新
46+
47+
日程数据格式:
48+
```json
49+
[
50+
{
51+
"id": "1",
52+
"time": "09:00",
53+
"title": "会议",
54+
"description": "项目周会"
55+
}
56+
]
57+
```
58+
59+
### 4. 通知面板
60+
61+
- 点击顶部通知图标展开/收起
62+
- 显示所有收到的推送消息
63+
- 支持一键清空
64+
65+
## 技术架构
66+
67+
### 服务器端点
68+
69+
| 功能 | 地址 | 协议 |
70+
|------|------|------|
71+
| 主系统 | http://111.170.6.103:9999/ | HTTP |
72+
| WebSocket | ws://111.170.6.103:9999/ws | WebSocket |
73+
| 日程 API | http://111.170.6.103:9999/api/daily.php | HTTP GET |
74+
75+
### 依赖库
76+
77+
- OkHttp: HTTP 请求和 WebSocket
78+
- Gson: JSON 解析
79+
- AndroidX: UI 组件
80+
81+
### 权限
82+
83+
- `INTERNET`: 网络访问
84+
- `POST_NOTIFICATIONS`: 发送通知
85+
86+
## UI 结构
87+
88+
```
89+
MainActivity (主界面)
90+
├── Header (顶部栏)
91+
│ ├── 标题 "SelfAgent"
92+
│ ├── 日程按钮 → ScheduleDialog
93+
│ └── 通知按钮 (带角标) → 通知面板
94+
├── 通知面板 (可展开/收起)
95+
│ ├── 消息列表
96+
│ └── 清空按钮
97+
├── 站点列表 (RecyclerView)
98+
│ └── 站点卡片 (点击打开, 长按删除)
99+
└── 添加站点按钮 → 添加弹窗
100+
101+
WebViewActivity (网页浏览)
102+
├── Header
103+
│ ├── 返回按钮
104+
│ └── 站点名称
105+
└── WebView
106+
```
107+
108+
## 主题色
109+
110+
- 主色: `#667eea` (紫蓝色)
111+
- 背景: `#f5f7fa` (浅灰)
112+
- 角标: `#ff4757` (红色)
113+
114+
## 数据流
115+
116+
```
117+
服务器 WebSocket ──推送消息──→ App
118+
├─→ 系统通知
119+
└─→ 通知列表
120+
121+
用户 ──点击站点──→ WebView ──加载──→ 服务器网页
122+
123+
用户 ──点击日程──→ App ──HTTP GET──→ 日程 API
124+
←─JSON─┘
125+
```
126+
127+
## 构建
128+
129+
使用 Google Colab 构建:
130+
1. 打开 `build_colab.ipynb`
131+
2. 运行所有单元格
132+
3. 下载生成的 APK
133+
134+
## 扩展建议
135+
136+
如需修改或扩展功能:
137+
138+
1. **更换服务器地址**: 修改 `MainActivity.java` 中的常量
139+
2. **添加新功能**: 在 `MainActivity` 中添加新的 UI 和逻辑
140+
3. **修改 UI 样式**: 编辑 `res/layout/``res/drawable/` 中的 XML 文件
141+
4. **添加新页面**: 创建新的 Activity 并在 AndroidManifest.xml 中注册

0 commit comments

Comments
 (0)