thefinalboss commited on
Commit
fc2c4ef
·
verified ·
1 Parent(s): 939913e

Add AICL example: 03_chat.aicl

Browse files
Files changed (1) hide show
  1. data/aicl/examples/03_chat.aicl +182 -0
data/aicl/examples/03_chat.aicl ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # AICL Example: Chat Application
2
+ # A multiplayer chat application
3
+
4
+ Goal:
5
+ Create a multiplayer chat application
6
+
7
+ Constraint:
8
+ Must support at least 100 concurrent users
9
+
10
+ Constraint:
11
+ Maximum memory usage 512 MB
12
+
13
+ Constraint:
14
+ Messages must be delivered in order
15
+
16
+ Risk:
17
+ Server becomes unavailable
18
+
19
+ Recovery:
20
+ Reconnect automatically with exponential backoff
21
+
22
+ Risk:
23
+ Network latency exceeds threshold
24
+
25
+ Recovery:
26
+ Enable offline mode with message queue
27
+
28
+ Risk:
29
+ User disconnects unexpectedly
30
+
31
+ Recovery:
32
+ Retry connection three times then show status
33
+
34
+ Risk:
35
+ Message delivery failure
36
+
37
+ Recovery:
38
+ Store locally and retry on reconnect
39
+
40
+ Layer:
41
+ User Interface
42
+ Sublayer:
43
+ Message display
44
+ Sublayer:
45
+ Input field
46
+ Sublayer:
47
+ User list
48
+ Sublayer:
49
+ Status indicators
50
+
51
+ Layer:
52
+ Networking
53
+ Sublayer:
54
+ WebSocket client
55
+ Sublayer:
56
+ Message serialization
57
+ Sublayer:
58
+ Heartbeat system
59
+
60
+ Layer:
61
+ Chat Logic
62
+ Sublayer:
63
+ Message routing
64
+ Sublayer:
65
+ User management
66
+ Sublayer:
67
+ Channel management
68
+
69
+ Layer:
70
+ Persistence
71
+ Sublayer:
72
+ Message history
73
+ Sublayer:
74
+ User preferences
75
+ Sublayer:
76
+ Offline queue
77
+
78
+ Entity User
79
+ name: string
80
+ id: integer
81
+ status: string
82
+ avatar_url: string
83
+
84
+ Entity Message
85
+ content: string
86
+ timestamp: datetime
87
+ sender: User
88
+
89
+ Entity Channel
90
+ name: string
91
+ id: integer
92
+ members: list
93
+
94
+ Behavior SendMessage
95
+
96
+ Input:
97
+ User Message
98
+
99
+ Output:
100
+ DeliveredMessage
101
+
102
+ Action:
103
+ transmit message to server and broadcast to channel
104
+
105
+ Behavior JoinChannel
106
+
107
+ Input:
108
+ User Channel
109
+
110
+ Action:
111
+ add user to channel and notify members
112
+
113
+ Condition:
114
+
115
+ When server unavailable
116
+
117
+ Then enable offline mode
118
+
119
+ Condition:
120
+
121
+ When network restored
122
+
123
+ Then sync offline messages
124
+
125
+ Event:
126
+
127
+ On message received
128
+
129
+ Action:
130
+ display message in channel
131
+
132
+ Event:
133
+
134
+ On user join
135
+
136
+ Action:
137
+ update user list
138
+
139
+ Event:
140
+
141
+ On user leave
142
+
143
+ Action:
144
+ remove from user list and notify
145
+
146
+ Parallel:
147
+
148
+ User Interface
149
+ Networking
150
+
151
+ Optimize:
152
+ Memory usage
153
+
154
+ Optimize:
155
+ Network latency
156
+
157
+ Security:
158
+
159
+ Encrypt:
160
+ message content
161
+
162
+ Protect:
163
+ user credentials
164
+
165
+ Learn:
166
+
167
+ User behavior
168
+
169
+ Goal:
170
+ improve message suggestions
171
+
172
+ Validation:
173
+ Send and receive messages successfully
174
+
175
+ Validation:
176
+ Average latency below 100 ms
177
+
178
+ Validation:
179
+ No data loss after reconnect
180
+
181
+ Validation:
182
+ 100 concurrent users can chat without errors