Files
vibe_data_ana/tests/__pycache__/test_plan_adjustment.cpython-311-pytest-8.3.3.pyc

63 lines
10 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00><><EFBFBD>i<EFBFBD><00><00><><00>dZddlZddlmcmZddlZddlmZddl m
Z
m Z m Z ddl mZmZddlmZddlmZd<08>Zd <09>Zd
<EFBFBD>Zd <0B>Zd <0C>ZdS) z"Tests for dynamic plan adjustment.<2E>N)<01>datetime)<03> adjust_plan<61>identify_anomalies<65>_fallback_plan_adjustment)<02> AnalysisPlan<61> AnalysisTask)<01>AnalysisResult)<01>AnalysisObjectivec <00><><00>ttddgd<03><04><00>gtddddd<08> <09><00>td
d d dd <0A> <09><00>gtj<00><00>tj<00><00><00><0E><00>}t ddddgd<11><12><00>g}t ||<01><00>}|j}|j}||k}|s<>tj
d|fd||f<02><00>dtj <00><00>vstj |<02><00>rtj|<02><00>ndtj|<03><00>dtj <00><00>vstj |<00><00>rtj|<00><00>ndtj|<04><00>d<17>z}dd|iz}ttj|<07><00><00><00><00>dx}x}}t#d<1B>|jD<00><00><00><00>}|j}d} || k}|s<>tj
d|fd|| f<02><00>d
tj <00><00>vstj |<08><00>rtj|<08><00>nd
tj|<03><00>tj| <09><00>d<1D>z}
dd|
iz} ttj| <0B><00><00><00><00>dx}x}} dS) u
Property 8: For any analysis plan and intermediate results, if results
contain anomaly findings, the plan adjustment function should be able to
generate new deep-dive tasks or adjust existing task priorities.
Validates: 场景4验收.2, 场景4验收.3, FR-3.3
u 数据分析u 分析数据<E695B0>)<04>name<6D> description<6F>metrics<63>priority<74>task_1<5F>Task 1<>
First task<73> completed<65><05>idr rr<00>status<75>task_2<5F>Task 2z Second task<73>pending<6E><04>
objectives<EFBFBD>tasks<6B>
created_at<EFBFBD>
updated_atTu6发现异常某类别占比90%远超正常范围<E88C83><00>?<3F><05>task_id<69> task_name<6D>success<73>insights<74>execution_time<6D><01>>=<3D>zR%(py2)s
{%(py2)s = %(py0)s.updated_at
} >= %(py6)s
{%(py6)s = %(py4)s.created_at
}<7D> adjusted_plan<61>plan<61><04>py0<79>py2<79>py4<79>py6<79>assert %(py8)s<>py8Nc3<00>0K<00>|]}|jdk<00> |V<00><00>dS)rN)r)<02>.0<EFBFBD>ts <20>AD:\code\iov_data_analysis_agent_old\tests\test_plan_adjustment.py<70> <genexpr>z4test_plan_adjustment_with_anomaly.<locals>.<genexpr>Is.<00><00><00><00>E<>E<><01>A<EFBFBD>D<EFBFBD>H<EFBFBD>4D<34>4D<34>!<21>4D<34>4D<34>4D<34>4D<34>E<>E<>)z0%(py2)s
{%(py2)s = %(py0)s.priority
} >= %(py5)s)r-r.<00>py5zassert %(py7)s<>py7)rr
rr<00>nowr rrr<00>
@pytest_ar<61>_call_reprcompare<72> @py_builtins<6E>locals<6C>_should_repr_global_name<6D> _saferepr<70>AssertionError<6F>_format_explanation<6F>nextrr) r+<00>resultsr*<00> @py_assert1<74> @py_assert5<74> @py_assert3<74> @py_format7<74> @py_format9r<00> @py_assert4<74> @py_format6<74> @py_format8s r6<00>!test_plan_adjustment_with_anomalyrNs<00><00> <18> <1D>#<23>*<2A><1A><1A>  <0E> <0E> <0E>
<EFBFBD> <19><1B><1D>(<28><1A>"<22>  <0E> <0E> <0E> <19><1B><1D>)<29><1A> <20>  <0E> <0E> <0E>
<EFBFBD> <1C><<3C>><3E>><3E><1B><<3C>><3E>><3E>5 <06> <06> <06>D<EFBFBD>> <17><1C><1E><18>N<>O<><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD><06>G<EFBFBD>.<2E>d<EFBFBD>G<EFBFBD><<3C><<3C>M<EFBFBD>7<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<><12>E<>E<>]<5D>0<>E<>E<>E<> E<> E<>F<EFBFBD><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F><1F>r8c<00><><00>tdddddgd<06><07><00>tdd dd
gd<06><07><00>g}t|<00><00>}t|<01><00>}d }||k}|s<>tjd |fd ||f<02><00>dt j<00><00>vstjt<00><00>rtjt<00><00>nddt j<00><00>vstj|<01><00>rtj|<01><00>ndtj|<02><00>tj|<03><00>d<10>z}dd|iz}ttj
|<06><00><00><00><00>dx}x}}|dd}d}||k}|sltjd|fd||f<02><00>tj|<07><00>tj|<08><00>d<18>z} dd| iz}ttj
|<05><00><00><00><00>dx}x}}dS)z)Test anomaly identification from results.rrTu发现异常数据u 正常分布r r!rr<00> 一切正常<E6ADA3>r')z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)s<>len<65> anomalies<65>r-<00>py1<79>py3r0r1r2Nrr"<00><01>==)z%(py1)s == %(py4)s)rUr/zassert %(py6)sr0<00> r rrRr<r=r>r?r@rArBrC)
rErS<00> @py_assert2rGrKrIrJ<00> @py_assert0rH<00> @py_format5s
r6<00>test_identify_anomaliesr]MsK<00><00> <17><1C><1E><18>*<2A>N<EFBFBD>;<3B><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD> <17><1C><1E><18>$<24>%<25><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD><06>G<EFBFBD>"#<23>7<EFBFBD>+<2B>+<2B>I<EFBFBD><1F><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.r8c
<00><><00>tgtddddd<05><06><00>gtj<00><00>tj<00><00><00><07><00>}t dddd gd
<EFBFBD> <0B><00>g}t ||<01><00>}|j}|j}||k}|s<>tj d |fd ||f<02><00>dtj <00><00>vstj |<02><00>rtj |<02><00>ndtj |<03><00>dtj <00><00>vstj |<00><00>rtj |<00><00>ndtj |<04><00>d<10>z}dd|iz}ttj|<07><00><00><00><00>dx}x}}dS)z-Test plan adjustment when no anomalies found.rrrr rrrTrPr r!r'r)r*r+r,r1r2N)rrrr;r rrrr<r=r>r?r@rArBrC)r+rEr*rFrGrHrIrJs r6<00>test_plan_adjustment_no_anomalyr_gs<><00><00> <17><15> <18><1B><1D>(<28><1A>"<22>  <0E> <0E> <0E>
<EFBFBD><1C><<3C>><3E>><3E><1B><<3C>><3E>><3E> <06> <06> <06>D<EFBFBD> <17><1C><1E><18>$<24>%<25><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD><06>G<EFBFBD>.<2E>d<EFBFBD>G<EFBFBD><<3C><<3C>M<EFBFBD>7<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6<>6r8c<00>n<00>tg<00><00>}g}||k}|s<>tjd|fd||f<02><00>dtj<00><00>vstj|<00><00>rtj|<00><00>ndtj|<01><00>d<04>z}dd|iz}ttj|<04><00><00><00><00>dx}}dS)z/Test anomaly identification with empty results.rW)z%(py0)s == %(py3)srS)r-rVzassert %(py5)sr9N) rr<r=r>r?r@rArBrC)rSrZrF<00> @py_format4rLs r6<00>%test_identify_anomalies_empty_resultsrb<00>s<><00><00>"<22>2<EFBFBD>&<26>&<26>I<EFBFBD><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A><1A>r8c<00>t<00>tdddddgd<06><07><00>g}t|<00><00>}t|<01><00>}d}||k}|s<>tjd |fd
||f<02><00>d t j<00><00>vstjt<00><00>rtjt<00><00>nd d t j<00><00>vstj|<01><00>rtj|<01><00>nd tj|<02><00>tj|<03><00>d <0A>z}dd|iz}ttj
|<06><00><00><00><00>dx}x}}dS)z%Test that failed results are skipped.rrF<>Failedu 发现异常r )r"r#r$<00>errorr%r&rrW)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)srRrSrTr1r2NrY)rErSrZrGrKrIrJs r6<00>&test_identify_anomalies_failed_resultsrf<00>sr<00><00> <17><1C><1E><19><1A>$<24>%<25><1E> 
<EFBFBD>
<EFBFBD>
<EFBFBD> <06>G<EFBFBD>#<23>7<EFBFBD>+<2B>+<2B>I<EFBFBD><1F><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E><1E>r8)<19>__doc__<5F>builtinsr><00>_pytest.assertion.rewrite<74> assertion<6F>rewriter<<00>pytestr<00>src.engines.plan_adjustmentrrr<00>src.models.analysis_planrr<00>src.models.analysis_resultr <00>src.models.requirement_specr
rNr]r_rbrf<00>r8r6<00><module>rrs<00><01>(<28>(<28><00><00><00><00><00><00><00><00><00><00><00><00><00> <0A> <0A> <0A> <0A><1D><1D><1D><1D><1D><1D><02><02><02><02><02><02><02><02><02><02>
@<01>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>5<>5<>5<>5<>5<>5<>9<>9<>9<>9<>9<>9<>9 <20>9 <20>9 <20>x/<2F>/<2F>/<2F>47<>7<>7<>B<1B><1B><1B><1F><1F><1F><1F>r8