
    ?iy              
          d Z ddlZddlmc mZ ddlZddl	Z
ddlmZ ddlmZ  ed        ed        ed        e         ed        e       Z eej$                  j'                  dg             Z ed	e d
        ed eej,                  j/                                        e         ed       e
j0                  j3                  d       dZ e
j6                  dde      Z e
j:                  e      Z ee      D ]j  \  Z Z!e!dk  r)de!dz  z
  e
j0                  jE                  dd      z   ee <   5e!dk  r,de!dz
  dz  z   e
j0                  jE                  dd      z   ee <   fe!dk  r,de!dz
  dz  z
  e
j0                  jE                  dd      z   ee <   e!dk  r,de!dz
  dz  z   e
j0                  jE                  dd      z   ee <   e!dk  r,de!dz
  dz  z
  e
j0                  jE                  dd      z   ee <   e!dk  r-d e!dz
  d!z  z   e
j0                  jE                  dd      z   ee <   +e!d"k  r-de!dz
  d#z  z
  e
j0                  jE                  dd$      z   ee <   ]d%e!d"z
  dz  z   ee <   m g Z#eD ]R  Z!e!dk  s(de!cxk  rdk  sn de!cxk  rdk  sn de!cxk  rd"k  rn ne#jI                  d&       Be#jI                  d'       T  ejJ                  eee#d(      Z& ed	 ee&       d)        e         ed*        ee&      Z' ed	 ee'       d+        ed,e'd-   d.        ed/e'j'                  d0d1      d2        ed3e'j'                  d4d1      d2d5        ed6e'j'                  d7d1      d2        ed8e'j'                  d9d1               e         ed:       d d;dd<dd=d>d?Z( ed@e(dA    dBe(dC    dD        e         edE       ejS                  e'e(      Z* ed	 ee*       dF       e*r edG        edH       e*ddI D ]m  Z+e+j'                  dJd1      Z,e+j'                  dKd      Z-e+j'                  dLd      Z.e+j'                  dMdN      ddO Z/ edPe-dQdRe,dSdTe.dUdV        edWe/        o  ee*      dIkD  r edX ee*      dIz
   dY        e        eja                  e*      Z1 edZ ee1       d[        edH       i Z2e1D ]1  Z3e3j'                  d\d]      Z4e4e2vrg e2e4<   e2e4   jI                  e3       3 e2jk                         D ]  \  Z4Z6 ed^e4jo                          d_       e6dd` D ]x  Z8e8j'                  dad1      ddb Z9e8j'                  dcdd      Z:e8j'                  dedd      Z;e8j'                  dfdd      Z<e:xs
 e;xs e<xs ddZ=e=r edge=dhdie9        n edge9        z  n edj        e         ed        edk        ed        e         edl        edme         edn ee'               edo ee*               edpe*r ee1      nd         e         edq        edr        eds        edt        edu       y)vuw   
Integration Test: Speedway Support v2.0
Tests complete pipeline: rules.json → engine.py → features.py → actions
    N)SpeedwayEngine)aggregate_metricszF======================================================================z/  SPEEDWAY SUPPORT v2.0 - FULL INTEGRATION TESTz.[ 1/5 ] Loading Engine with rules.json v2.0...rulesu           ✓ z rules loadedu           ✓ Globals: z&[ 2/5 ] Creating synthetic lap data...{   i     g      ?i*  i	  d      iR  2      i,     i4!  i     i.  i
  	   i#  ix  
   i
     iT$  curvestraight)	timestamprpmsegmentz  data points generated (12s lap)z1[ 3/5 ] Calculating metrics (basic + advanced)...z metrics calculatedz            StartDrop:    	StartDropz.0fz            CSI:          CSIzN/Az.3fz            EDT:          EDTsz            MSI:          MSIz            WSI:          WSIz[ 4/5 ] Building context...i,  FK      )PeakTorqueRPMPeakPowerRPMTrackGrip_1_10after_gradingheat_numberhumiditytemperatureu            ✓ Context: PeakTorque=r   z, Humidity=r#   %z[ 5/5 ] Evaluating rules...z rules matched
z+        MATCHED RULES (sorted by priority):zJ        ------------------------------------------------------------------   idpriority
confidencenotezNo description-   z	        [z>3z] z<30z (conf=z.2f)z              z        ... and z more rulesz        RECOMMENDED ACTIONS (z total):typeunknownz        :   reason7   	delta_deg delta_mmdelta_teethu             • z>+6z - u/           ⚠ No rules matched (check thresholds)u     ✓ INTEGRATION TEST COMPLETEzSummary:u     • Rules loaded:       u     • Metrics calculated: u     • Rules matched:      u     • Actions generated:  zNext Steps:z%  1. Test with real Karger .log filesz*  2. Calibrate corner detection thresholdsz2  3. Integrate into dashboard frontend (js/app.js)z  4. Deploy v2.0 to production)>__doc__builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arpandaspdnumpynpanalysis.enginer   analysis.featuresr   printenginelenr   gettotal_ruleslistglobalskeysrandomseedn_pointslinspacetimezerosr   	enumerateitnormalsegmentsappend	DataFramedfmetricscontextevaluate_rulesmatched_rulesrulerule_idr(   r)   r*   apply_actionsactionsaction_typesactionatypeitemsactsupperactr1   r3   r5   r6   delta     2/home/ralf/speedway-support/test_integration_v2.py<module>rm      s  
     * / h 7 8 h  6 7		&,,""7B/0 [M/ 0 d6>>#6#6#89:; <  . / 		s r{{1b(#bhhx dO &DAq3w!d(#bii&6&6q#&>>A	
Q3$&)9)9!R)@@A	
Q1Q3$,'"))*:*:1c*BBA	
Q1$ryy'7'72'>>A	
Q1Q3$,'"))*:*:1c*BBA	
Q1$ryy'7'72'>>A	
R1Q3$,'"))*:*:1c*BBA2%A!&$ 	 $A3w1q919!a)!)Q 
#	$ R\\SXFG SWI=> ?  9 :
B
 S\N"56 7 "7;#7"<= > "7;;ue#<S"AB C "7;;ue#<S"AC D "7;;ue#<S"AB C "7;;ue#<"=> ?  # $ ()A(B+gV`NaMbbcd e  # $%%gw7 S'((89 :	
78	
 bq! '((4'88J*XXlA.
xx 01#26	(2bWZ<LANOtf%&' =A ]!3a!7 8DE	G ""=1G	)#g,x
@A	
  L +

69-$"$LU""6*	+ $))+ 1tq)*8 		1CWWXu-cr2FR0Iwwz2.H''-4K>>[>BEuSkVH=>vh/0		11 

;<  h ' ( h  j  ";-0 1 "3w<.1 2 "3}#5"67 8 "=3w<a"HI J  m  - . 2 3 : ; & 'rk   