shenchucheng commited on
Commit
5ce3b16
1 Parent(s): a0d6fb3

change the uid when pack project

Browse files
Files changed (1) hide show
  1. software_company.py +25 -13
software_company.py CHANGED
@@ -1,17 +1,14 @@
1
  import asyncio
2
- from functools import partial
3
- import json
4
- from pydantic import BaseModel, Field
5
  import datetime
 
6
  import os
 
7
  from pathlib import Path
8
  from typing import Any, Coroutine, Optional
9
 
10
  import aiofiles
11
  from aiobotocore.session import get_session
12
  from mdutils.mdutils import MdUtils
13
- from zipstream import AioZipStream
14
-
15
  from metagpt.actions import Action
16
  from metagpt.actions.action_output import ActionOutput
17
  from metagpt.actions.design_api import WriteDesign
@@ -21,13 +18,19 @@ from metagpt.actions.summarize_code import SummarizeCode
21
  from metagpt.actions.write_code import WriteCode
22
  from metagpt.actions.write_prd import WritePRD
23
  from metagpt.config import CONFIG
24
- from metagpt.const import COMPETITIVE_ANALYSIS_FILE_REPO, DATA_API_DESIGN_FILE_REPO, SEQ_FLOW_FILE_REPO, SERDESER_PATH
 
 
 
 
 
25
  from metagpt.roles import Architect, Engineer, ProductManager, ProjectManager, Role
26
  from metagpt.schema import Message
27
  from metagpt.team import Team
28
  from metagpt.utils.common import any_to_str, read_json_file, write_json_file
29
  from metagpt.utils.git_repository import GitRepository
30
-
 
31
 
32
  _default_llm_stream_log = partial(print, end="")
33
 
@@ -59,7 +62,7 @@ class PackProject(Action):
59
  workspace = CONFIG.git_repo.workdir
60
  workspace = str(workspace)
61
  for r, _, fs in os.walk(workspace):
62
- _r = r[len(workspace):].lstrip("/")
63
  for f in fs:
64
  files.append({"file": os.path.join(r, f), "name": os.path.join(_r, f)})
65
  # aiozipstream
@@ -71,6 +74,7 @@ class PackProject(Action):
71
 
72
  class SoftwareCompany(Role):
73
  """封装软件公司成角色,以快速接入agent store。"""
 
74
  finish: bool = False
75
  company: Team = Field(default_factory=Team)
76
  active_role: Optional[Role] = None
@@ -90,7 +94,7 @@ class SoftwareCompany(Role):
90
  """软件公司运行需要4轮
91
 
92
  BOSS -> ProductManager -> Architect -> ProjectManager -> Engineer
93
- BossRequirement -> WritePRD -> WriteDesign -> WriteTasks -> WriteCode ->
94
  """
95
  if self.finish:
96
  self._rc.todo = None
@@ -128,7 +132,7 @@ class SoftwareCompany(Role):
128
  if isinstance(self._rc.todo, PackProject):
129
  workdir = CONFIG.git_repo.workdir
130
  name = workdir.name
131
- uid = workdir.parent.parent.name
132
  now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
133
  key = f"{uid}/metagpt-{name}-{now}.zip"
134
  output = await self._rc.todo.run(key)
@@ -201,7 +205,9 @@ class SoftwareCompany(Role):
201
 
202
  title = "Competitive Quadrant Chart"
203
  mdfile.new_header(2, title, add_table_of_contents=False)
204
- competitive_analysis_path = CONFIG.git_repo.workdir / Path(COMPETITIVE_ANALYSIS_FILE_REPO) / Path(prd_doc.filename).with_suffix(".png")
 
 
205
 
206
  if competitive_analysis_path.exists():
207
  key = str(competitive_analysis_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
@@ -248,7 +254,11 @@ class SoftwareCompany(Role):
248
  title = "Data structures and interfaces"
249
  mdfile.new_header(2, title, add_table_of_contents=False)
250
 
251
- data_api_design_path = CONFIG.git_repo.workdir / Path(DATA_API_DESIGN_FILE_REPO) / Path(system_design_doc.filename).with_suffix(".png")
 
 
 
 
252
  if data_api_design_path.exists():
253
  key = str(data_api_design_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
254
  url = await upload_file_to_s3(data_api_design_path, key)
@@ -258,7 +268,9 @@ class SoftwareCompany(Role):
258
 
259
  title = "Program call flow"
260
  mdfile.new_header(2, title, add_table_of_contents=False)
261
- seq_flow_path = CONFIG.git_repo.workdir / SEQ_FLOW_FILE_REPO / Path(system_design_doc.filename).with_suffix(".png")
 
 
262
  if seq_flow_path.exists():
263
  key = str(seq_flow_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
264
  url = await upload_file_to_s3(seq_flow_path, key)
 
1
  import asyncio
 
 
 
2
  import datetime
3
+ import json
4
  import os
5
+ from functools import partial
6
  from pathlib import Path
7
  from typing import Any, Coroutine, Optional
8
 
9
  import aiofiles
10
  from aiobotocore.session import get_session
11
  from mdutils.mdutils import MdUtils
 
 
12
  from metagpt.actions import Action
13
  from metagpt.actions.action_output import ActionOutput
14
  from metagpt.actions.design_api import WriteDesign
 
18
  from metagpt.actions.write_code import WriteCode
19
  from metagpt.actions.write_prd import WritePRD
20
  from metagpt.config import CONFIG
21
+ from metagpt.const import (
22
+ COMPETITIVE_ANALYSIS_FILE_REPO,
23
+ DATA_API_DESIGN_FILE_REPO,
24
+ SEQ_FLOW_FILE_REPO,
25
+ SERDESER_PATH,
26
+ )
27
  from metagpt.roles import Architect, Engineer, ProductManager, ProjectManager, Role
28
  from metagpt.schema import Message
29
  from metagpt.team import Team
30
  from metagpt.utils.common import any_to_str, read_json_file, write_json_file
31
  from metagpt.utils.git_repository import GitRepository
32
+ from pydantic import BaseModel, Field
33
+ from zipstream import AioZipStream
34
 
35
  _default_llm_stream_log = partial(print, end="")
36
 
 
62
  workspace = CONFIG.git_repo.workdir
63
  workspace = str(workspace)
64
  for r, _, fs in os.walk(workspace):
65
+ _r = r[len(workspace) :].lstrip("/")
66
  for f in fs:
67
  files.append({"file": os.path.join(r, f), "name": os.path.join(_r, f)})
68
  # aiozipstream
 
74
 
75
  class SoftwareCompany(Role):
76
  """封装软件公司成角色,以快速接入agent store。"""
77
+
78
  finish: bool = False
79
  company: Team = Field(default_factory=Team)
80
  active_role: Optional[Role] = None
 
94
  """软件公司运行需要4轮
95
 
96
  BOSS -> ProductManager -> Architect -> ProjectManager -> Engineer
97
+ BossRequirement -> WritePRD -> WriteDesign -> WriteTasks -> WriteCode ->
98
  """
99
  if self.finish:
100
  self._rc.todo = None
 
132
  if isinstance(self._rc.todo, PackProject):
133
  workdir = CONFIG.git_repo.workdir
134
  name = workdir.name
135
+ uid = workdir.parent.name
136
  now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
137
  key = f"{uid}/metagpt-{name}-{now}.zip"
138
  output = await self._rc.todo.run(key)
 
205
 
206
  title = "Competitive Quadrant Chart"
207
  mdfile.new_header(2, title, add_table_of_contents=False)
208
+ competitive_analysis_path = (
209
+ CONFIG.git_repo.workdir / Path(COMPETITIVE_ANALYSIS_FILE_REPO) / Path(prd_doc.filename).with_suffix(".png")
210
+ )
211
 
212
  if competitive_analysis_path.exists():
213
  key = str(competitive_analysis_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
 
254
  title = "Data structures and interfaces"
255
  mdfile.new_header(2, title, add_table_of_contents=False)
256
 
257
+ data_api_design_path = (
258
+ CONFIG.git_repo.workdir
259
+ / Path(DATA_API_DESIGN_FILE_REPO)
260
+ / Path(system_design_doc.filename).with_suffix(".png")
261
+ )
262
  if data_api_design_path.exists():
263
  key = str(data_api_design_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
264
  url = await upload_file_to_s3(data_api_design_path, key)
 
268
 
269
  title = "Program call flow"
270
  mdfile.new_header(2, title, add_table_of_contents=False)
271
+ seq_flow_path = (
272
+ CONFIG.git_repo.workdir / SEQ_FLOW_FILE_REPO / Path(system_design_doc.filename).with_suffix(".png")
273
+ )
274
  if seq_flow_path.exists():
275
  key = str(seq_flow_path.relative_to(CONFIG.git_repo.workdir.parent.parent))
276
  url = await upload_file_to_s3(seq_flow_path, key)