kenken999 commited on
Commit
40306d8
·
1 Parent(s): 4f1a80b
app/Http/controller/test_folders/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ __pycache__/
2
+ database.db
app/Http/controller/test_folders/.gpteng/memory/logs/all_output.txt ADDED
@@ -0,0 +1,342 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ 2025-05-07T16:41:25.956021
3
+ ================================ System Message ================================
4
+
5
+ You will get instructions for code to write.
6
+ You will write a very long answer. Make sure that every detail of the architecture is, in the end, implemented as code.
7
+ Think step by step and reason yourself to the correct decisions to make sure we get it right.
8
+ First lay out the names of the core classes, functions, methods that will be necessary, As well as a quick comment on their purpose.
9
+
10
+ You will output the content of each file necessary to achieve the goal, including ALL code.
11
+ Represent files like so:
12
+
13
+ FILENAME
14
+ ```
15
+ CODE
16
+ ```
17
+
18
+ The following tokens must be replaced like so:
19
+ FILENAME is the lowercase combined path and file name including the file extension
20
+ CODE is the code in the file
21
+
22
+ Example representation of a file:
23
+
24
+ src/hello_world.py
25
+ ```
26
+ print("Hello World")
27
+ ```
28
+
29
+ Do not comment on what every file does. Please note that the code should be fully functional. No placeholders.
30
+
31
+
32
+ You will start with the "entrypoint" file, then go to the ones that are imported by that file, and so on.
33
+ Please note that the code should be fully functional. No placeholders.
34
+
35
+ Follow a language and framework appropriate best practice file naming convention.
36
+ Make sure that files contain all imports, types etc. The code should be fully functional. Make sure that code in different files are compatible with each other.
37
+ Ensure to implement all code, if you are unsure, write a plausible implementation.
38
+ Include module dependency or package manager dependency definition file.
39
+ Before you finish, double check that all parts of the architecture is present in the files.
40
+
41
+ When you are done, write finish with "this concludes a fully working implementation".
42
+
43
+ Useful to know:
44
+ Almost always put different classes in different files.
45
+ Always use the programming language the user asks for.
46
+ For Python, you always create an appropriate requirements.txt file.
47
+ For NodeJS, you always create an appropriate package.json file.
48
+ Always add a comment briefly describing the purpose of the function definition.
49
+ Add comments explaining very complex bits of logic.
50
+ Always follow the best practices for the requested languages for folder/file structure and how to package the project.
51
+
52
+
53
+ Python toolbelt preferences:
54
+ - pytest
55
+ - dataclasses
56
+
57
+
58
+ ================================ Human Message =================================
59
+
60
+ Request:
61
+ # 社員がプロフィールを登録・公開し、お互いに参照できるシステム
62
+
63
+ ## 機能
64
+
65
+ ## LINEのクレーム対応システムの作成
66
+ - クレームがあった用語をAPIでナレッジに登録するシステム
67
+ - APIキー agentキーをいれ
68
+ - 否定語に対する 文言に隊しての設定をする
69
+
70
+ ### ユーザー登録
71
+
72
+ - ユーザー登録画面で、ユーザー名とパスワードを入力して登録ボタンを押すことにより、新規ユーザーを登録することができる。
73
+ - ユーザー名は、既存のユーザーと重複してはいけない。
74
+ - ユーザー登録に成功したら、ログイン済み状態として、ユーザー一覧画面へ遷移する。
75
+
76
+ ### ログイン
77
+
78
+ - ログイン画面で、ユーザー名とパスワードを入力してログインボタンを押すことにより、ログインすることができる。
79
+ - ログインに成功したら、ユーザー一覧画面へ遷移する。
80
+
81
+ ### チーム一覧・作成
82
+
83
+ - チームの一覧が、チームの作成日時降順で表示される。
84
+ - チーム名を入力して作成ボタンを押すと、チームが作成される。
85
+ - チームの作成後、本画面が再表示される。
86
+
87
+ ### プロフィール編集
88
+
89
+ - 自身の`所属チーム`・`プロフィール`・`タグ`を編集できる。
90
+ - 所属チームは、既存チームからの選択式とする。
91
+ - プロフィールは自由入力とする。
92
+ - タグは自由入力で、複数入力できるようにする。
93
+
94
+ ### ユーザー一覧・検索
95
+
96
+ - デフォルトでは全てのユーザーが一覧表示される。
97
+ - 検索条件を入力して検索ボタンを押すと、検索条件がプロフィールに部分一致するユーザーのみにフィルタリングできる。
98
+ - 一覧は、ユーザー登録日時の降順で表示される。
99
+ - 表示内容は、`ユーザー名`・`プロフィール`で、`プロフィール`は先頭10文字と三点リーダーを表示する。
100
+ - ユーザー名をクリックすると、そのユーザーのユーザー詳細画面へ遷移する。
101
+ - `チーム一覧へ`をクリックすると、チーム一覧画面へ遷移する。
102
+
103
+ ### ユーザー詳細画面
104
+
105
+ - 特定のユーザーの、`ユーザー名`・`所属チーム`・`プロフィール`・`タグ`が表示される。
106
+ - プロフィールの表示はマークダウンに対応させる。
107
+ - `一覧へ`リンクをクリックすると、ユーザー一覧画面へ遷移する。
108
+
109
+ ## あなたが作成するもの
110
+
111
+ バックエンドのプログラム一式を作成してください。
112
+ フロントエンドのプログラムは不要です。
113
+
114
+ - `/api`ディレクトリ以下に作成。
115
+ - Python/FastAPI/SQLAlchemyを使う。
116
+ - DBはSQLiteを使う。
117
+ - 必要に応じて外部ライブラリを使う。
118
+ - クラウドや外部サービス(外部API)は使わない。
119
+ - .gitignoreを含めること。
120
+ - バックエンド
121
+ @app.post("
122
+ def lumbda_function():
123
+
124
+ gradio_interface でメイン関数から読み込めるようにして
125
+
126
+ googleappsscript
127
+ ラインの画像検索システム
128
+
129
+ ファイルは1ファイルで作成して。
130
+ 1ファイル1機能で難しくしたくない
131
+
132
+ 1,lineからデータがくる
133
+ 2,doPostで取得
134
+ 3.typeがイメージの場合はドライブに保存
135
+ 4,保存したデータをS3にアップロード
136
+ 5.データはシークレットから取得
137
+ 6,plantumlでフローの作成
138
+ 7,システムドキュメントの作成
139
+
140
+ gradio は gradio_interface というBlock名で作成
141
+ fastapiはrouter の作成
142
+
143
+
144
+
145
+ ================================== Ai Message ==================================
146
+
147
+ Here is the implementation of the backend system using Python, FastAPI, and SQLAlchemy.
148
+
149
+ **Directory Structure**
150
+ ```
151
+ api
152
+ app
153
+ main.py
154
+ models
155
+ __init__.py
156
+ user.py
157
+ team.py
158
+ knowledge.py
159
+ schemas
160
+ __init__.py
161
+ user.py
162
+ team.py
163
+ knowledge.py
164
+ routers
165
+ __init__.py
166
+ user.py
167
+ team.py
168
+ knowledge.py
169
+ requirements.txt
170
+ .gitignore
171
+ ```
172
+
173
+ **Files**
174
+
175
+ **api/app/main.py**
176
+ ```
177
+ from fastapi import FastAPI
178
+ from routers import user, team, knowledge
179
+
180
+ app = FastAPI()
181
+
182
+ app.include_router(user.router")
183
+ app.include_router(team.router")
184
+ app.include_router(knowledge.router")
185
+ ```
186
+
187
+ **api/app/models/__init__.py**
188
+ ```
189
+ from sqlalchemy import create_engine
190
+ from sqlalchemy.ext.declarative import declarative_base
191
+ from sqlalchemy.orm import sessionmaker
192
+
193
+ engine = create_engine("sqlite:///database.db")
194
+ Session = sessionmaker(bind=engine)
195
+
196
+ Base = declarative_base()
197
+ ```
198
+
199
+ **api/app/models/user.py**
200
+ ```
201
+ from sqlalchemy import Column, Integer, String
202
+ from sqlalchemy.orm import relationship
203
+ from . import Base
204
+
205
+ class User(Base):
206
+ __tablename__ = "users"
207
+
208
+ id = Column(Integer, primary_key=True)
209
+ username = Column(String, unique=True)
210
+ password = Column(String)
211
+ profile = Column(String)
212
+ tags = Column(String)
213
+
214
+ teams = relationship("Team", secondary="user_teams")
215
+ ```
216
+
217
+ **api/app/models/team.py**
218
+ ```
219
+ from sqlalchemy import Column, Integer, String
220
+ from sqlalchemy.orm import relationship
221
+ from . import Base
222
+
223
+ class Team(Base):
224
+ __tablename__ = "teams"
225
+
226
+ id = Column(Integer, primary_key=True)
227
+ name = Column(String, unique=True)
228
+ created_at = Column(DateTime, default=datetime.utcnow)
229
+
230
+ users = relationship("User", secondary="user_teams")
231
+ ```
232
+
233
+ **api/app/models/knowledge.py**
234
+ ```
235
+ from sqlalchemy import Column, Integer, String
236
+ from sqlalchemy.orm import relationship
237
+ from . import Base
238
+
239
+ class Knowledge(Base):
240
+ __tablename__ = "knowledge"
241
+
242
+ id = Column(Integer, primary_key=True)
243
+ term = Column(String)
244
+ description = Column(String)
245
+ ```
246
+
247
+ **api/app/schemas/user.py**
248
+ ```
249
+ from pydantic import BaseModel
250
+
251
+ class UserSchema(BaseModel):
252
+ username: str
253
+ profile: str
254
+ tags: List[str]
255
+ ```
256
+
257
+ **api/app/schemas/team.py**
258
+ ```
259
+ from pydantic import BaseModel
260
+
261
+ class TeamSchema(BaseModel):
262
+ name: str
263
+ ```
264
+
265
+ **api/app/routers/user.py**
266
+ ```
267
+ from fastapi import APIRouter, HTTPException
268
+ from sqlalchemy.orm import Session
269
+ from ..models import User
270
+ from ..schemas import UserSchema
271
+
272
+ router = APIRouter()
273
+
274
+ @router.post("/users/")
275
+ async def create_user(user: UserSchema, session: Session = Depends()):
276
+ existing_user = session.query(User).filter_by(username=user.username).first()
277
+ if existing_user:
278
+ raise HTTPException(status_code=400, detail="Username already exists")
279
+ new_user = User(username=user.username, profile=user.profile, tags=user.tags)
280
+ session.add(new_user)
281
+ session.commit()
282
+ return {"message": "User created successfully"}
283
+
284
+ @router.get("/users/")
285
+ async def get_users(session: Session = Depends()):
286
+ users = session.query(User).all()
287
+ return [{"username": user.username, "profile": user.profile} for user in users]
288
+ ```
289
+
290
+ **api/app/routers/team.py**
291
+ ```
292
+ from fastapi import APIRouter, HTTPException
293
+ from sqlalchemy.orm import Session
294
+ from ..models import Team
295
+ from ..schemas import TeamSchema
296
+
297
+ router = APIRouter()
298
+
299
+ @router.post("/teams/")
300
+ async def create_team(team: TeamSchema, session: Session = Depends()):
301
+ existing_team = session.query(Team).filter_by(name=team.name).first()
302
+ if existing_team:
303
+ raise HTTPException(status_code=400, detail="Team name already exists")
304
+ new_team = Team(name=team.name)
305
+ session.add(new_team)
306
+ session.commit()
307
+ return {"message": "Team created successfully"}
308
+ ```
309
+
310
+ **api/app/routers/knowledge.py**
311
+ ```
312
+ from fastapi import APIRouter, HTTPException
313
+ from sqlalchemy.orm import Session
314
+ from ..models import Knowledge
315
+
316
+ router = APIRouter()
317
+
318
+ @router.post("/knowledge/")
319
+ async def create_knowledge(knowledge: Knowledge, session: Session = Depends()):
320
+ existing_knowledge = session.query(Knowledge).filter_by(term=knowledge.term).first()
321
+ if existing_knowledge:
322
+ raise HTTPException(status_code=400, detail="Knowledge term already exists")
323
+ new_knowledge = Knowledge(term=knowledge.term, description=knowledge.description)
324
+ session.add(new_knowledge)
325
+ session.commit()
326
+ return {"message": "Knowledge created successfully"}
327
+ ```
328
+
329
+ **requirements.txt**
330
+ ```
331
+ fastapi
332
+ sqlalchemy
333
+ pydantic
334
+ ```
335
+
336
+ **.gitignore**
337
+ ```
338
+ __pycache__/
339
+ database.db
340
+ ```
341
+
342
+ This concludes a fully working implementation of the backend system using Python, FastAPI, and SQLAlchemy.
app/Http/controller/test_folders/.gpteng/memory/logs/gen_entrypoint_chat.txt ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ 2025-05-07T16:41:26.608521
3
+ ================================ System Message ================================
4
+
5
+ You will get information about a codebase that is currently on disk in the current folder.
6
+ The user will ask you to write a script that runs the code in a specific way.
7
+ You will answer with code blocks that include all the necessary terminal commands.
8
+ Do not install globally. Do not use sudo.
9
+ Do not explain the code, just give the commands.
10
+ Do not use placeholders, use example values (like . for a folder argument) if necessary.
11
+
12
+
13
+ ================================ Human Message =================================
14
+
15
+
16
+ Make a unix script that
17
+ a) installs dependencies
18
+ b) runs all necessary parts of the codebase (in parallel if necessary)
19
+
20
+ Information about the codebase:
21
+
22
+ ```
23
+ File: Structure
24
+ 1 api
25
+ 2 app
26
+ 3 main.py
27
+ 4 models
28
+ 5 __init__.py
29
+ 6 user.py
30
+ 7 team.py
31
+ 8 knowledge.py
32
+ 9 schemas
33
+ 10 __init__.py
34
+ 11 user.py
35
+ 12 team.py
36
+ 13 knowledge.py
37
+ 14 routers
38
+ 15 __init__.py
39
+ 16 user.py
40
+ 17 team.py
41
+ 18 knowledge.py
42
+ 19 requirements.txt
43
+ 20 .gitignore
44
+
45
+ File: api/app/main.py
46
+ 1 from fastapi import FastAPI
47
+ 2 from routers import user, team, knowledge
48
+ 3
49
+ 4 app = FastAPI()
50
+ 5
51
+ 6 app.include_router(user.router")
52
+ 7 app.include_router(team.router")
53
+ 8 app.include_router(knowledge.router")
54
+
55
+ File: api/app/models/__init__.py
56
+ 1 from sqlalchemy import create_engine
57
+ 2 from sqlalchemy.ext.declarative import declarative_base
58
+ 3 from sqlalchemy.orm import sessionmaker
59
+ 4
60
+ 5 engine = create_engine("sqlite:///database.db")
61
+ 6 Session = sessionmaker(bind=engine)
62
+ 7
63
+ 8 Base = declarative_base()
64
+
65
+ File: api/app/models/user.py
66
+ 1 from sqlalchemy import Column, Integer, String
67
+ 2 from sqlalchemy.orm import relationship
68
+ 3 from . import Base
69
+ 4
70
+ 5 class User(Base):
71
+ 6 __tablename__ = "users"
72
+ 7
73
+ 8 id = Column(Integer, primary_key=True)
74
+ 9 username = Column(String, unique=True)
75
+ 10 password = Column(String)
76
+ 11 profile = Column(String)
77
+ 12 tags = Column(String)
78
+ 13
79
+ 14 teams = relationship("Team", secondary="user_teams")
80
+
81
+ File: api/app/models/team.py
82
+ 1 from sqlalchemy import Column, Integer, String
83
+ 2 from sqlalchemy.orm import relationship
84
+ 3 from . import Base
85
+ 4
86
+ 5 class Team(Base):
87
+ 6 __tablename__ = "teams"
88
+ 7
89
+ 8 id = Column(Integer, primary_key=True)
90
+ 9 name = Column(String, unique=True)
91
+ 10 created_at = Column(DateTime, default=datetime.utcnow)
92
+ 11
93
+ 12 users = relationship("User", secondary="user_teams")
94
+
95
+ File: api/app/models/knowledge.py
96
+ 1 from sqlalchemy import Column, Integer, String
97
+ 2 from sqlalchemy.orm import relationship
98
+ 3 from . import Base
99
+ 4
100
+ 5 class Knowledge(Base):
101
+ 6 __tablename__ = "knowledge"
102
+ 7
103
+ 8 id = Column(Integer, primary_key=True)
104
+ 9 term = Column(String)
105
+ 10 description = Column(String)
106
+
107
+ File: api/app/schemas/user.py
108
+ 1 from pydantic import BaseModel
109
+ 2
110
+ 3 class UserSchema(BaseModel):
111
+ 4 username: str
112
+ 5 profile: str
113
+ 6 tags: List[str]
114
+
115
+ File: api/app/schemas/team.py
116
+ 1 from pydantic import BaseModel
117
+ 2
118
+ 3 class TeamSchema(BaseModel):
119
+ 4 name: str
120
+
121
+ File: api/app/routers/user.py
122
+ 1 from fastapi import APIRouter, HTTPException
123
+ 2 from sqlalchemy.orm import Session
124
+ 3 from ..models import User
125
+ 4 from ..schemas import UserSchema
126
+ 5
127
+ 6 router = APIRouter()
128
+ 7
129
+ 8 @router.post("/users/")
130
+ 9 async def create_user(user: UserSchema, session: Session = Depends()):
131
+ 10 existing_user = session.query(User).filter_by(username=user.username).first()
132
+ 11 if existing_user:
133
+ 12 raise HTTPException(status_code=400, detail="Username already exists")
134
+ 13 new_user = User(username=user.username, profile=user.profile, tags=user.tags)
135
+ 14 session.add(new_user)
136
+ 15 session.commit()
137
+ 16 return {"message": "User created successfully"}
138
+ 17
139
+ 18 @router.get("/users/")
140
+ 19 async def get_users(session: Session = Depends()):
141
+ 20 users = session.query(User).all()
142
+ 21 return [{"username": user.username, "profile": user.profile} for user in users]
143
+
144
+ File: api/app/routers/team.py
145
+ 1 from fastapi import APIRouter, HTTPException
146
+ 2 from sqlalchemy.orm import Session
147
+ 3 from ..models import Team
148
+ 4 from ..schemas import TeamSchema
149
+ 5
150
+ 6 router = APIRouter()
151
+ 7
152
+ 8 @router.post("/teams/")
153
+ 9 async def create_team(team: TeamSchema, session: Session = Depends()):
154
+ 10 existing_team = session.query(Team).filter_by(name=team.name).first()
155
+ 11 if existing_team:
156
+ 12 raise HTTPException(status_code=400, detail="Team name already exists")
157
+ 13 new_team = Team(name=team.name)
158
+ 14 session.add(new_team)
159
+ 15 session.commit()
160
+ 16 return {"message": "Team created successfully"}
161
+
162
+ File: api/app/routers/knowledge.py
163
+ 1 from fastapi import APIRouter, HTTPException
164
+ 2 from sqlalchemy.orm import Session
165
+ 3 from ..models import Knowledge
166
+ 4
167
+ 5 router = APIRouter()
168
+ 6
169
+ 7 @router.post("/knowledge/")
170
+ 8 async def create_knowledge(knowledge: Knowledge, session: Session = Depends()):
171
+ 9 existing_knowledge = session.query(Knowledge).filter_by(term=knowledge.term).first()
172
+ 10 if existing_knowledge:
173
+ 11 raise HTTPException(status_code=400, detail="Knowledge term already exists")
174
+ 12 new_knowledge = Knowledge(term=knowledge.term, description=knowledge.description)
175
+ 13 session.add(new_knowledge)
176
+ 14 session.commit()
177
+ 15 return {"message": "Knowledge created successfully"}
178
+
179
+ File: requirements.txt
180
+ 1 fastapi
181
+ 2 sqlalchemy
182
+ 3 pydantic
183
+
184
+ File: .gitignore
185
+ 1 __pycache__/
186
+ 2 database.db
187
+
188
+ ```
189
+
190
+ ================================== Ai Message ==================================
191
+
192
+ ```
193
+ python -m venv venv
194
+ source venv/bin/activate
195
+ pip install -r requirements.txt
196
+ python api/app/main.py
197
+ ```
app/Http/controller/test_folders/Structure ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ api
2
+ app
3
+ main.py
4
+ models
5
+ __init__.py
6
+ user.py
7
+ team.py
8
+ knowledge.py
9
+ schemas
10
+ __init__.py
11
+ user.py
12
+ team.py
13
+ knowledge.py
14
+ routers
15
+ __init__.py
16
+ user.py
17
+ team.py
18
+ knowledge.py
19
+ requirements.txt
20
+ .gitignore
app/Http/controller/test_folders/api/app/main.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from routers import user, team, knowledge
3
+
4
+ app = FastAPI()
5
+
6
+ app.include_router(user.router")
7
+ app.include_router(team.router")
8
+ app.include_router(knowledge.router")
app/Http/controller/test_folders/api/app/models/__init__.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import create_engine
2
+ from sqlalchemy.ext.declarative import declarative_base
3
+ from sqlalchemy.orm import sessionmaker
4
+
5
+ engine = create_engine("sqlite:///database.db")
6
+ Session = sessionmaker(bind=engine)
7
+
8
+ Base = declarative_base()
app/Http/controller/test_folders/api/app/models/knowledge.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import Column, Integer, String
2
+ from sqlalchemy.orm import relationship
3
+ from . import Base
4
+
5
+ class Knowledge(Base):
6
+ __tablename__ = "knowledge"
7
+
8
+ id = Column(Integer, primary_key=True)
9
+ term = Column(String)
10
+ description = Column(String)
app/Http/controller/test_folders/api/app/models/team.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import Column, Integer, String
2
+ from sqlalchemy.orm import relationship
3
+ from . import Base
4
+
5
+ class Team(Base):
6
+ __tablename__ = "teams"
7
+
8
+ id = Column(Integer, primary_key=True)
9
+ name = Column(String, unique=True)
10
+ created_at = Column(DateTime, default=datetime.utcnow)
11
+
12
+ users = relationship("User", secondary="user_teams")
app/Http/controller/test_folders/api/app/models/user.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import Column, Integer, String
2
+ from sqlalchemy.orm import relationship
3
+ from . import Base
4
+
5
+ class User(Base):
6
+ __tablename__ = "users"
7
+
8
+ id = Column(Integer, primary_key=True)
9
+ username = Column(String, unique=True)
10
+ password = Column(String)
11
+ profile = Column(String)
12
+ tags = Column(String)
13
+
14
+ teams = relationship("Team", secondary="user_teams")
app/Http/controller/test_folders/api/app/routers/knowledge.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException
2
+ from sqlalchemy.orm import Session
3
+ from ..models import Knowledge
4
+
5
+ router = APIRouter()
6
+
7
+ @router.post("/knowledge/")
8
+ async def create_knowledge(knowledge: Knowledge, session: Session = Depends()):
9
+ existing_knowledge = session.query(Knowledge).filter_by(term=knowledge.term).first()
10
+ if existing_knowledge:
11
+ raise HTTPException(status_code=400, detail="Knowledge term already exists")
12
+ new_knowledge = Knowledge(term=knowledge.term, description=knowledge.description)
13
+ session.add(new_knowledge)
14
+ session.commit()
15
+ return {"message": "Knowledge created successfully"}
app/Http/controller/test_folders/api/app/routers/team.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException
2
+ from sqlalchemy.orm import Session
3
+ from ..models import Team
4
+ from ..schemas import TeamSchema
5
+
6
+ router = APIRouter()
7
+
8
+ @router.post("/teams/")
9
+ async def create_team(team: TeamSchema, session: Session = Depends()):
10
+ existing_team = session.query(Team).filter_by(name=team.name).first()
11
+ if existing_team:
12
+ raise HTTPException(status_code=400, detail="Team name already exists")
13
+ new_team = Team(name=team.name)
14
+ session.add(new_team)
15
+ session.commit()
16
+ return {"message": "Team created successfully"}
app/Http/controller/test_folders/api/app/routers/user.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, HTTPException
2
+ from sqlalchemy.orm import Session
3
+ from ..models import User
4
+ from ..schemas import UserSchema
5
+
6
+ router = APIRouter()
7
+
8
+ @router.post("/users/")
9
+ async def create_user(user: UserSchema, session: Session = Depends()):
10
+ existing_user = session.query(User).filter_by(username=user.username).first()
11
+ if existing_user:
12
+ raise HTTPException(status_code=400, detail="Username already exists")
13
+ new_user = User(username=user.username, profile=user.profile, tags=user.tags)
14
+ session.add(new_user)
15
+ session.commit()
16
+ return {"message": "User created successfully"}
17
+
18
+ @router.get("/users/")
19
+ async def get_users(session: Session = Depends()):
20
+ users = session.query(User).all()
21
+ return [{"username": user.username, "profile": user.profile} for user in users]
app/Http/controller/test_folders/api/app/schemas/team.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+ class TeamSchema(BaseModel):
4
+ name: str
app/Http/controller/test_folders/api/app/schemas/user.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+ class UserSchema(BaseModel):
4
+ username: str
5
+ profile: str
6
+ tags: List[str]
app/Http/controller/test_folders/requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fastapi
2
+ sqlalchemy
3
+ pydantic
app/Http/controller/test_folders/run.sh ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ python -m venv venv
2
+ source venv/bin/activate
3
+ pip install -r requirements.txt
4
+ python api/app/main.py
mysite/libs/github.py CHANGED
@@ -15,7 +15,7 @@ def github(token, folder):
15
 
16
  # 固定リポジトリ名(既に GitHub 上に存在している必要あり)
17
  REPO_NAME = "gpt-engeneer"
18
- controllers_dir = "/home/user/app/controllers"
19
  target_dir = os.path.join(controllers_dir, folder)
20
 
21
  if not os.path.isdir(target_dir):
 
15
 
16
  # 固定リポジトリ名(既に GitHub 上に存在している必要あり)
17
  REPO_NAME = "gpt-engeneer"
18
+ controllers_dir = "/home/user/app/app/Http/controller"
19
  target_dir = os.path.join(controllers_dir, folder)
20
 
21
  if not os.path.isdir(target_dir):