AlsuGibadullina commited on
Commit
60fa983
·
verified ·
1 Parent(s): e1fbc11

Create tasks.py

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