refactor: existslegacy

This commit is contained in:
莘权 马 2024-06-04 15:47:03 +08:00
parent b0bafc12d4
commit 04e72c0597
4 changed files with 32 additions and 32 deletions

View file

@ -62,7 +62,7 @@ class WriteDesign(Action):
*,
user_requirement: str = "",
prd_filename: str = "",
exists_design_filename: str = "",
legacy_design_filename: str = "",
extra_info: str = "",
output_path: str = "",
**kwargs,
@ -73,7 +73,7 @@ class WriteDesign(Action):
Args:
user_requirement (str): The user's requirements for the system design.
prd_filename (str, optional): The filename of the Product Requirement Document (PRD).
exists_design_filename (str, optional): The filename of the existing design document.
legacy_design_filename (str, optional): The filename of the legacy design document.
extra_info (str, optional): Additional information to be included in the system design.
output_path (str, optional): The output path where the system design should be saved.
@ -92,9 +92,9 @@ class WriteDesign(Action):
# Modify an exists system design.
>>> user_requirement = "Your user requirements"
>>> extra_info = "Your extra information"
>>> exists_design_filename = "/path/to/exists/design/filename"
>>> legacy_design_filename = "/path/to/exists/design/filename"
>>> action = WriteDesign()
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename)
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename)
>>> print(result.content)
The design is balabala...
@ -111,9 +111,9 @@ class WriteDesign(Action):
>>> user_requirement = "Your user requirements"
>>> extra_info = "Your extra information"
>>> prd_filename = "/path/to/prd/filename"
>>> exists_design_filename = "/path/to/exists/design/filename"
>>> legacy_design_filename = "/path/to/exists/design/filename"
>>> action = WriteDesign()
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename, prd_filename=prd_filename)
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename, prd_filename=prd_filename)
>>> print(result.content)
The design is balabala...
@ -129,10 +129,10 @@ class WriteDesign(Action):
# Modify an exists system design and save to the directory.
>>> user_requirement = "Your user requirements"
>>> extra_info = "Your extra information"
>>> exists_design_filename = "/path/to/exists/design/filename"
>>> legacy_design_filename = "/path/to/exists/design/filename"
>>> output_path = "/path/to/save/"
>>> action = WriteDesign()
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename)
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename)
>>> print(result.content)
System Design filename: "/path/to/design/filename"
@ -150,10 +150,10 @@ class WriteDesign(Action):
>>> user_requirement = "Your user requirements"
>>> extra_info = "Your extra information"
>>> prd_filename = "/path/to/prd/filename"
>>> exists_design_filename = "/path/to/exists/design/filename"
>>> legacy_design_filename = "/path/to/exists/design/filename"
>>> output_path = "/path/to/save/"
>>> action = WriteDesign()
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, exists_design_filename=exists_design_filename, prd_filename=prd_filename)
>>> result = await action.run(user_requirement=user_requirement, extra_info=extra_info, legacy_design_filename=legacy_design_filename, prd_filename=prd_filename)
>>> print(result.content)
System Design filename: "/path/to/design/filename"
"""
@ -161,7 +161,7 @@ class WriteDesign(Action):
return await self._execute_api(
user_requirement=user_requirement,
prd_filename=prd_filename,
exists_design_filename=exists_design_filename,
legacy_design_filename=legacy_design_filename,
extra_info=extra_info,
output_path=output_path,
)
@ -266,7 +266,7 @@ class WriteDesign(Action):
self,
user_requirement: str = "",
prd_filename: str = "",
exists_design_filename: str = "",
legacy_design_filename: str = "",
extra_info: str = "",
output_path: str = "",
) -> AIMessage:
@ -276,11 +276,11 @@ class WriteDesign(Action):
if prd_filename:
prd_content = await aread(filename=prd_filename)
context += to_markdown_code_block(prd_content)
if not exists_design_filename:
if not legacy_design_filename:
node = await self._new_system_design(context=context)
design = Document(content=node.instruct_content.model_dump_json())
else:
old_design_content = await aread(filename=exists_design_filename)
old_design_content = await aread(filename=legacy_design_filename)
design = await self._merge(
prd_doc=Document(content=context), system_design_doc=Document(content=old_design_content)
)

View file

@ -83,7 +83,7 @@ class WritePRD(Action):
*,
user_requirement: str = "",
output_path: str = "",
exists_prd_filename: str = "",
legacy_prd_filename: str = "",
extra_info: str = "",
**kwargs,
) -> AIMessage:
@ -93,7 +93,7 @@ class WritePRD(Action):
Args:
user_requirement (str): A string detailing the user's requirements.
output_path (str, optional): The file path where the output document should be saved. Defaults to "".
exists_prd_filename (str, optional): The file path of an existing Product Requirement Document to use as a reference. Defaults to "".
legacy_prd_filename (str, optional): The file path of the legacy Product Requirement Document to use as a reference. Defaults to "".
extra_info (str, optional): Additional information to include in the document. Defaults to "".
**kwargs: Additional keyword arguments.
@ -112,9 +112,9 @@ class WritePRD(Action):
# Modify a exists PRD(Product Requirement Document)
>>> user_requirement = "YOUR REQUIREMENTS"
>>> extra_info = "YOUR EXTRA INFO"
>>> exists_prd_filename = "/path/to/exists/prd_filename"
>>> legacy_prd_filename = "/path/to/exists/prd_filename"
>>> write_prd = WritePRD()
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, exists_prd_filename=exists_prd_filename)
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, legacy_prd_filename=legacy_prd_filename)
>>> print(result.content)
The PRD is about balabala...
@ -130,10 +130,10 @@ class WritePRD(Action):
# Modify a exists PRD(Product Requirement Document) and save to the directory.
>>> user_requirement = "YOUR REQUIREMENTS"
>>> extra_info = "YOUR EXTRA INFO"
>>> exists_prd_filename = "/path/to/exists/prd_filename"
>>> legacy_prd_filename = "/path/to/exists/prd_filename"
>>> output_path = "/path/to/prd/directory/"
>>> write_prd = WritePRD()
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, exists_prd_filename=exists_prd_filename, output_path=output_path)
>>> result = await write_prd.run(user_requirement=user_requirement, extra_info=extra_info, legacy_prd_filename=legacy_prd_filename, output_path=output_path)
>>> print(result.content)
PRD filename: "/path/to/prd/directory/213434ad.json"
@ -142,7 +142,7 @@ class WritePRD(Action):
return await self._execute_api(
user_requirement=user_requirement,
output_path=output_path,
exists_prd_filename=exists_prd_filename,
legacy_prd_filename=legacy_prd_filename,
extra_info=extra_info,
)
@ -306,18 +306,18 @@ class WritePRD(Action):
self.repo.git_repo.rename_root(self.project_name)
async def _execute_api(
self, user_requirement: str, output_path: str, exists_prd_filename: str, extra_info: str
self, user_requirement: str, output_path: str, legacy_prd_filename: str, extra_info: str
) -> AIMessage:
content = to_markdown_code_block(val=user_requirement, type_="text")
if extra_info:
content += to_markdown_code_block(val=extra_info)
req = Document(content=content)
if not exists_prd_filename:
if not legacy_prd_filename:
node = await self._new_prd(requirement=req.content)
new_prd = Document(content=node.instruct_content.model_dump_json())
else:
content = await aread(filename=exists_prd_filename)
content = await aread(filename=legacy_prd_filename)
old_prd = Document(content=content)
new_prd = await self._merge(req=req, related_doc=old_prd)

View file

@ -55,7 +55,7 @@ async def test_design(context):
@pytest.mark.parametrize(
("user_requirement", "prd_filename", "exists_design_filename"),
("user_requirement", "prd_filename", "legacy_design_filename"),
[
("我们需要一个音乐播放器,它应该有播放、暂停、上一曲、下一曲等功能。", None, None),
("write 2048 game", str(METAGPT_ROOT / "tests/data/prd.json"), None),
@ -67,10 +67,10 @@ async def test_design(context):
],
)
@pytest.mark.asyncio
async def test_design_api(context, user_requirement, prd_filename, exists_design_filename):
async def test_design_api(context, user_requirement, prd_filename, legacy_design_filename):
action = WriteDesign()
result = await action.run(
user_requirement=user_requirement, prd_filename=prd_filename, exists_design_filename=exists_design_filename
user_requirement=user_requirement, prd_filename=prd_filename, legacy_design_filename=legacy_design_filename
)
assert isinstance(result, AIMessage)
assert result.content
@ -79,7 +79,7 @@ async def test_design_api(context, user_requirement, prd_filename, exists_design
@pytest.mark.parametrize(
("user_requirement", "prd_filename", "exists_design_filename"),
("user_requirement", "prd_filename", "legacy_design_filename"),
[
("我们需要一个音乐播放器,它应该有播放、暂停、上一曲、下一曲等功能。", None, None),
("write 2048 game", str(METAGPT_ROOT / "tests/data/prd.json"), None),
@ -91,12 +91,12 @@ async def test_design_api(context, user_requirement, prd_filename, exists_design
],
)
@pytest.mark.asyncio
async def test_design_api_dir(context, user_requirement, prd_filename, exists_design_filename):
async def test_design_api_dir(context, user_requirement, prd_filename, legacy_design_filename):
action = WriteDesign()
result = await action.run(
user_requirement=user_requirement,
prd_filename=prd_filename,
exists_design_filename=exists_design_filename,
legacy_design_filename=legacy_design_filename,
output_path=context.config.project_path,
)
assert isinstance(result, AIMessage)

View file

@ -91,7 +91,7 @@ async def test_write_prd_api(context):
legacy_prd_filename = result.instruct_content.changed_prd_filenames[-1]
result = await action.run(user_requirement="Add moving enemy.", exists_prd_filename=legacy_prd_filename)
result = await action.run(user_requirement="Add moving enemy.", legacy_prd_filename=legacy_prd_filename)
assert isinstance(result, AIMessage)
assert result.content
m = json.loads(result.content)
@ -100,7 +100,7 @@ async def test_write_prd_api(context):
result = await action.run(
user_requirement="Add moving enemy.",
output_path=str(context.config.project_path),
exists_prd_filename=legacy_prd_filename,
legacy_prd_filename=legacy_prd_filename,
)
assert isinstance(result, AIMessage)
assert result.content