AlsuGibadullina commited on
Commit
aeda505
·
verified ·
1 Parent(s): 8f36f3e

Update src/tasks.py

Browse files
Files changed (1) hide show
  1. src/tasks.py +12 -19
src/tasks.py CHANGED
@@ -9,23 +9,18 @@ class TaskContext:
9
  extra: Dict[str, Any] = None
10
 
11
 
12
- def _diagram_hint(has_image: bool) -> str:
13
- if not has_image:
14
  return ""
15
- return (
16
- "\nДополнительно: пользователь приложил изображение/фото диаграммы. "
17
- "Если на ней есть элементы (сущности, связи, состояния, экраны, потоки), "
18
- "вытащи их в текст: список объектов, связей, бизнес-правил и неясностей.\n"
19
- )
20
 
21
 
22
- def build_analyzer_prompt(requirements_text: str, has_image: bool, ctx: Optional[TaskContext] = None) -> str:
23
  ctx = ctx or TaskContext()
24
  return f"""Ты — аналитик требований к ПО. Проанализируй текст требований и выдай структурированный результат.
25
- {_diagram_hint(has_image)}
26
 
27
  Требования (сырой текст):
28
- {requirements_text}
29
 
30
  Нужно:
31
  1) Выявить неясности/двусмысленности
@@ -42,17 +37,16 @@ def build_analyzer_prompt(requirements_text: str, has_image: bool, ctx: Optional
42
  """
43
 
44
 
45
- def build_refactor_prompt(requirements_text: str, analysis_result: str, has_image: bool, ctx: Optional[TaskContext] = None) -> str:
46
  ctx = ctx or TaskContext()
47
  return f"""Ты — специалист по рефакторингу требований. Перепиши требования так, чтобы они стали:
48
  - однозначными,
49
  - тестируемыми,
50
  - структурированными,
51
  - без лишних предположений.
52
- {_diagram_hint(has_image)}
53
 
54
  Исходные требования:
55
- {requirements_text}
56
 
57
  Результат анализа:
58
  {analysis_result}
@@ -60,7 +54,7 @@ def build_refactor_prompt(requirements_text: str, analysis_result: str, has_imag
60
  Нужно:
61
  1) Сгенерировать улучшенную версию требований (разделы, нумерация, критерии приемки)
62
  2) Явно отметить места, где без уточнений нельзя сделать требования однозначными (TODO/Questions)
63
- 3) Добавить минимальный набор acceptance criteria (Given/When/Then или bullet list)
64
 
65
  Формат ответа:
66
  - Рефакторинг требований
@@ -69,13 +63,12 @@ def build_refactor_prompt(requirements_text: str, analysis_result: str, has_imag
69
  """
70
 
71
 
72
- def build_critic_prompt(requirements_text: str, refactored: str, has_image: bool, ctx: Optional[TaskContext] = None) -> str:
73
  ctx = ctx or TaskContext()
74
  return f"""Ты — строгий ревьюер требований. Проверь качество рефакторинга.
75
- {_diagram_hint(has_image)}
76
 
77
  Исходные требования:
78
- {requirements_text}
79
 
80
  Рефакторинг:
81
  {refactored}
@@ -87,9 +80,9 @@ def build_critic_prompt(requirements_text: str, refactored: str, has_image: bool
87
  4) Структура и читабельность
88
 
89
  Также:
90
- - укажи конкретные проблемы (с примерами)
91
  - предложи правки
92
- - дай финальный вердикт: можно ли отдавать в разработку сейчас
93
 
94
  Формат ответа:
95
  - Оценки
 
9
  extra: Dict[str, Any] = None
10
 
11
 
12
+ def _diagram_block(diagram_context: Optional[str]) -> str:
13
+ if not diagram_context or not diagram_context.strip():
14
  return ""
15
+ return f"\n\nКонтекст из диаграммы (OCR/описание):\n{diagram_context}\n"
 
 
 
 
16
 
17
 
18
+ def build_analyzer_prompt(requirements_text: str, diagram_context: Optional[str] = None, ctx: Optional[TaskContext] = None) -> str:
19
  ctx = ctx or TaskContext()
20
  return f"""Ты — аналитик требований к ПО. Проанализируй текст требований и выдай структурированный результат.
 
21
 
22
  Требования (сырой текст):
23
+ {requirements_text}{_diagram_block(diagram_context)}
24
 
25
  Нужно:
26
  1) Выявить неясности/двусмысленности
 
37
  """
38
 
39
 
40
+ def build_refactor_prompt(requirements_text: str, analysis_result: str, diagram_context: Optional[str] = None, ctx: Optional[TaskContext] = None) -> str:
41
  ctx = ctx or TaskContext()
42
  return f"""Ты — специалист по рефакторингу требований. Перепиши требования так, чтобы они стали:
43
  - однозначными,
44
  - тестируемыми,
45
  - структурированными,
46
  - без лишних предположений.
 
47
 
48
  Исходные требования:
49
+ {requirements_text}{_diagram_block(diagram_context)}
50
 
51
  Результат анализа:
52
  {analysis_result}
 
54
  Нужно:
55
  1) Сгенерировать улучшенную версию требований (разделы, нумерация, критерии приемки)
56
  2) Явно отметить места, где без уточнений нельзя сделать требования однозначными (TODO/Questions)
57
+ 3) Добавить минимальный набор acceptance criteria
58
 
59
  Формат ответа:
60
  - Рефакторинг требований
 
63
  """
64
 
65
 
66
+ def build_critic_prompt(requirements_text: str, refactored: str, diagram_context: Optional[str] = None, ctx: Optional[TaskContext] = None) -> str:
67
  ctx = ctx or TaskContext()
68
  return f"""Ты — строгий ревьюер требований. Проверь качество рефакторинга.
 
69
 
70
  Исходные требования:
71
+ {requirements_text}{_diagram_block(diagram_context)}
72
 
73
  Рефакторинг:
74
  {refactored}
 
80
  4) Структура и читабельность
81
 
82
  Также:
83
+ - укажи конкретные проблемы
84
  - предложи правки
85
+ - дай вердикт: можно ли отдавать в разработку сейчас
86
 
87
  Формат ответа:
88
  - Оценки