
    j/                         U d dl mZ d dlZd dlmZ d dlmZ dZe	e
d<   dZe	dz  e
d<   dZe	ee	         z  dz  e
d<   dZe	ee	         z  dz  e
d	<   ddZddZdS )    )SequenceN)op)
postgresqlconsolidated_001revisiondown_revisionbranch_labels
depends_onreturnc                  z    ddl m}  	 ddlm} n# t          $ r Y nw xY w	 ddlm}m}m}m	} n# t          $ r Y nw xY w| j
                            t          j                               ddlm} t          j                    } ||          }|                                }	d|	vrKt          j        dt%          j        dt%          j                    d	
          t%          j        dt%          j        d          d	
          t%          j        dt%          j        d          d	
          t%          j        dt%          j        d          d
          t%          j        dt%          j        d          d
          t%          j        dt%          j                    d	
          t%          j        dt%          j        d          d
          t%          j        dt/          j        t%          j                              d
          t%          j        dt%          j                    d
          t%          j        dt%          j                    d
          t%          j        dt%          j                    d
          t%          j        dt%          j                    dd	          t%          j        dt%          j                    d
          t%          j        dt%          j                    d
          t%          j        dt%          j        d          d
          t%          j        dt%          j        d          d
          t%          j        d t%          j        d          d
          t%          j        d!t%          j                    d
          t%          j        d          t%          j        d          t%          j        d!gd"gd#$                     t          j        d%ddg           d& |                    d'          D             }
d(t%          j        d(t%          j        d          d
          fd)t%          j        d)t%          j        d          d
          fd*t%          j        d*t%          j        d          d
          fd+t%          j        d+t/          j        t%          j                              d
          fd,t%          j        d,t%          j                    d
          fd-t%          j        d-t%          j        d          d
          fd.t%          j        d.t/          j        t%          j                              d
          ffD ] \  }}||
vrt          j         d'|d/0           !d1 |                    d2          D             }d3t%          j        d3t%          j        d          d
          fd4t%          j        d4t%          j                    d
          fd5t%          j        d5t%          j                    d
          fd6t%          j        d6t%          j                    d
          fd7t%          j        d7t%          j                    d
          fd8t%          j        d8t%          j                    d
          fd.t%          j        d.t/          j        t%          j                              d
          ffD ] \  }}||vrt          j         d2|d/0           !t          j!        d9           t          j!        d:           t          j!        d;           t          j!        d<           t          j!        d=           t          j!        d>           t          j!        d?           t          j!        d@           t          j!        dA           t          j!        dB           t          j!        dC           t          j!        dD           t          j!        dE           t          j!        dF           dG |                    dH          D             }dI|vr<t          j         dHt%          j        dIt%          j                    d	dJK                     dL|vrt          j         dHt%          j        dLt%          j                    d
                     t          j"        dMdHd2dLgdgd d/N           t          j        dOdHdLg           dP|v rt          j!        dQ           dP|v rt          j#        dHdP           t          j                    }|!                    t%          j$        dR                    }|%                                D ]m}|\  }}fdS|D             }|rU|!                    t%          j$        dT          |dU           |!                    t%          j$        dV          dW|i           ndX |                    dY          D             }dZt%          j        dZt%          j        d[          d
          fd\t%          j        d\t%          j                    d]d	^          fd_t%          j        d_t%          j        d`          d
          fdat%          j        dat%          j        d[          d
          fdbt%          j        dbt%          j        d[          d
          fdct%          j        dct%          j        d          d
          fddt%          j        ddt%          j        d[          d
          fdet%          j        det%          j        d[          d
          fdft%          j        dft%          j                    d
          fdgt%          j        dgt%          j        d[          d
          fdht%          j        dht%          j        d`          d
          fdit%          j        dit%          j&                    d
          fg}|D ]\  }}||vrt          j         dY|           dj |'                    dY          D             }dkdZgfdld\gfdmdcgfdndggffD ]\  }}||vrt          j        |dY|            do |                    dp          D             }dct%          j        dct%          j        d          d
          fddt%          j        ddt%          j        d[          d
          fdet%          j        det%          j        dq          d
          fdrt%          j        drt%          j                    d]d	^          fdst%          j        dst%          j                    d]d	^          fdtt%          j        dtt%          j                    d
          fdut%          j        dut%          j                    d
          fdvt%          j        dvt%          j                    d
          fdwt%          j        dwt%          j(                    d
          fdxt%          j        dxt%          j(                    d
          fdyt%          j        dyt%          j(                    d
          fdht%          j        dht%          j        d`          d
          fdzt%          j        dzt%          j                    d
          fd{t%          j        d{t%          j                    t%          j)        d|d}~          d
          fdt%          j        dt%          j                    d
          fdt%          j        dt%          j                    dd]K          fdt%          j        dt%          j                    d
          fdt%          j        dt%          j*                    d
          fdt%          j        dt%          j        d          d
          fdt%          j        dt%          j                    ddK          fg}|D ]\  }}||vrt          j         dp|           d |'                    dp          D             }ddcgfdddgfddrgfddsgfddgffD ]\  }}||vrt          j        |dp|            d S )Nr   Base)RolePermission)DocumentMetadataValueKnowledgeMetadataFieldTagAutoRuleTagCategorybind)inspectlocal_modelsidF)nullablename   )length
identifier
model_type2   T
base_model
model_pathstatusconfig)astext_type	tenant_id
created_at
updated_at
is_deleted)r   default
deleted_at
deleted_by
asset_kindruntime_kindsource_kindpublished_model_idz	models.id)fk_local_models_published_model_id_modelsr   ix_local_models_tenant_idc                     h | ]
}|d          S r1    .0cs     ]/lsinfo/ai/hellotax_ai/base_platform/alembic/versions/20260423_0000_consolidated_migration.py	<setcomp>zupgrade.<locals>.<setcomp>#   s    NNN!F)NNN    model_providersprovider_kindprotocol	auth_typecapabilitiesis_localhealthcheck_pathextra_configpublic)schemac                     h | ]
}|d          S r1   r4   r5   s     r8   r9   zupgrade.<locals>.<setcomp>'       DDDq6DDDr:   modelsremote_model_idcontext_lengthmax_output_tokenssupports_streamsupports_toolspriorityzZUPDATE public.model_providers SET provider_kind = 'public_api' WHERE provider_kind IS NULLzWUPDATE public.model_providers SET protocol = 'openai_compatible' WHERE protocol IS NULLzUPDATE public.model_providers SET auth_type = CASE WHEN api_key IS NULL OR api_key = '' THEN 'none' ELSE 'bearer' END WHERE auth_type IS NULLzVUPDATE public.model_providers SET capabilities = '[]'::json WHERE capabilities IS NULLzIUPDATE public.model_providers SET is_local = false WHERE is_local IS NULLzMUPDATE public.models SET remote_model_id = code WHERE remote_model_id IS NULLzMUPDATE public.models SET supports_stream = true WHERE supports_stream IS NULLzLUPDATE public.models SET supports_tools = false WHERE supports_tools IS NULLz>UPDATE public.models SET priority = 100 WHERE priority IS NULLzUPDATE local_models SET asset_kind = CASE WHEN model_type = 'lora' THEN 'adapter' ELSE 'full_model' END WHERE asset_kind IS NULLzKUPDATE local_models SET runtime_kind = 'generic' WHERE runtime_kind IS NULLzJUPDATE local_models SET source_kind = 'imported' WHERE source_kind IS NULLuv  
        INSERT INTO public.model_providers (name, description, configured, default_base_url, api_key, base_url, priority, enabled,
            provider_kind, protocol, auth_type, capabilities, is_local, healthcheck_path, extra_config, created_at, updated_at, is_deleted)
        SELECT '本地 MLX', 'Local MLX provider', true, 'http://127.0.0.1:8010', NULL, 'http://127.0.0.1:8010', 50, true,
               'local_mlx', 'openai_compatible', 'none', '["chat", "embedding", "rerank"]'::json, true, '/health', NULL, NOW(), NOW(), false
        WHERE NOT EXISTS (SELECT 1 FROM public.model_providers WHERE name = '本地 MLX')
    a^  
        INSERT INTO public.model_providers (name, description, configured, default_base_url, api_key, base_url, priority, enabled,
            provider_kind, protocol, auth_type, capabilities, is_local, healthcheck_path, extra_config, created_at, updated_at, is_deleted)
        SELECT 'ECS A100', 'Self-hosted ECS model provider', false, NULL, NULL, NULL, 60, true,
               'self_hosted', 'openai_compatible', 'bearer', '["chat", "embedding", "rerank"]'::json, false, '/health', NULL, NOW(), NOW(), false
        WHERE NOT EXISTS (SELECT 1 FROM public.model_providers WHERE name = 'ECS A100')
    c                     h | ]
}|d          S r1   r4   r5   s     r8   r9   zupgrade.<locals>.<setcomp>9   rF   r:   agentsuse_rerankertrue)r   server_defaultmodel_idfk_agents_model_id_models)source_schemareferent_schemaix_agents_model_idorchestrator_modela   
                UPDATE agents SET model_id = models.id
                FROM public.models
                WHERE agents.model_id IS NULL
                  AND (agents.orchestrator_model = models.name OR agents.orchestrator_model = models.code)
            z
        SELECT name, MIN(id) as keep_id, ARRAY_AGG(id ORDER BY id) as all_ids
        FROM public.model_providers GROUP BY name HAVING COUNT(*) > 1
    c                      g | ]
}|k    |S r4   r4   )r6   ikeep_ids     r8   
<listcomp>zupgrade.<locals>.<listcomp>H   s    999AALLaLLLr:   zEUPDATE public.models SET provider_id = :k WHERE provider_id = ANY(:r))krz5DELETE FROM public.model_providers WHERE id = ANY(:r)r^   c                     h | ]
}|d          S r1   r4   r5   s     r8   r9   zupgrade.<locals>.<setcomp>L       OOO!F)OOOr:   document_vectorsparent_chunk_idd   	is_parentfalse)rR   r   chunk_level   prev_chunk_idnext_chunk_iddoc_type
doc_numberissuing_authority
referenceschunk_id
doc_statusissue_date_intc                     h | ]
}|d          S r1   r4   r6   rZ   s     r8   r9   zupgrade.<locals>.<setcomp>Q   r`   r:   #ix_document_vectors_parent_chunk_idix_document_vectors_is_parentix_document_vectors_doc_typeix_document_vectors_chunk_idc                     h | ]
}|d          S r1   r4   r5   s     r8   r9   zupgrade.<locals>.<setcomp>U       RRR!F)RRRr:   knowledge_documents   enable_parent_childenable_reference_extractionwindow_sizedoc_number_yeardoc_number_serial
issue_dateeffective_dateexpire_datesupersedes_doc_idssuperseded_by_doc_idzknowledge_documents.idzSET NULL)ondeletetax_type_tagshas_attachmentattachment_typesparse_quality_scorecontent_hash@   version_number1c                     h | ]
}|d          S r1   r4   rr   s     r8   r9   zupgrade.<locals>.<setcomp>Z   rx   r:   ix_knowledge_documents_doc_type!ix_knowledge_documents_doc_number*ix_knowledge_documents_enable_parent_child2ix_knowledge_documents_enable_reference_extraction#ix_knowledge_documents_content_hash)+app.db.baser   app.models.role_permissionr   ImportErrorapp.models.data_modelr   r   r   r   metadata
create_allr   get_bind
sqlalchemyr   get_table_namescreate_tablesaColumnIntegerStringTextr   JSONDateTimeBooleanPrimaryKeyConstraintUniqueConstraintForeignKeyConstraintcreate_indexget_columns
add_columnexecutecreate_foreign_keydrop_columntextfetchall
BigIntegerget_indexesDate
ForeignKeyFloat)r   r   r   r   r   r   r   r   	inspectorexisting_tables
mp_columnscolcoldef	m_columns	a_columnsconnresultrowr   all_ids
remove_ids
dv_columnsdv_new_cols
dv_indexesidxcols
kd_columnskd_new_cols
kd_indexesr[   s                                @r8   upgrader      s         =======   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
    M"+--000"""""";==DI//11O_,,
	$
u(U(U(UWYW`agikirz}i~i~i~  JO  XP  XP  XP  RT  R[  \h  jl  js  {~  j  j  j  JO  RP  RP  RP  RT  R[  \h  jl  js  {}  j~  j~  j~  IM  RN  RN  RN  PR  PY  Zf  hj  hq  y|  h}  h}  h}  HL  PM  PM  PM  OQ  OX  Ye  gi  gn  gp  gp  {@  OA  OA  OA  CE  CL  MU  WY  W`  hj  Wk  Wk  Wk  vz  C{  C{  C{  }  }F  GO  Q[  Q`  mo  mt  mv  mv  Qw  Qw  Qw  BF  }G  }G  }G  IK  IR  S^  `b  `j  `l  `l  w{  I|  I|  I|  ~@	  ~G	  H	T	  V	X	  V	a	  V	c	  V	c	  n	r	  ~s	  ~s	  ~s	  u	w	  u	~	  	K
  M
O
  M
X
  M
Z
  M
Z
  e
i
  u	j
  u	j
  u	j
  l
n
  l
u
  v
B  DF  DN  DP  DP  [_  in  l
o  l
o  l
o  qs  qz  {G  IK  IT  IV  IV  ae  qf  qf  qf  hj  hq  r~  @B  @J  @L  @L  W[  h\  h\  h\  ^`  ^g  ht  vx  v  GI  vJ  vJ  vJ  UY  ^Z  ^Z  ^Z  \^  \e  ft  vx  v  GI  vJ  vJ  vJ  UY  \Z  \Z  \Z  \^  \e  fs  uw  u~  FH  uI  uI  uI  TX  \Y  \Y  \Y  []  [d  ey  {}  {E  {G  {G  RV  [W  [W  [W  Y[  Yp  qu  Yv  Yv  xz  xK  LX  xY  xY  []  [r  tH  sI  LW  KX  _J  [K  [K  [K  	L  	L  	L
3^k]SSSNNY%:%:;L%M%MNNNJ(")ORYr]]]a*b*b*bcfprtr{  }G  IK  IR  SU  IV  IV  ae  sf  sf  sf  fg  ju  wy  w@  AL  NP  NW  XZ  N[  N[  fj  wk  wk  wk  il  o}  A  H  IW  Yc  Yh  uw  u|  u~  u~  Y  Y  Y  JN  O  O  O  nP  S]  _a  _h  is  uw  u  uA  uA  LP  _Q  _Q  _Q  RR  Ug  ik  ir  sE  GI  GP  QT  GU  GU  `d  ie  ie  ie  Tf  iw  y{  yB  CQ  S]  Sb  oq  ov  ox  ox  Sy  Sy  Sy  D	H	  yI	  yI	  yI	  hJ	  K	 F FVj  M+VHEEEEDDI$9$9($C$CDDDI*BI6GSVbf,g,g,ghk{}  ~G  HX  Z\  Zd  Zf  Zf  qu  ~v  ~v  ~v  kw  zM  OQ  OX  Yl  np  nx  nz  nz  EI  OJ  OJ  OJ  yK  N_  ac  aj  k|  ~@  ~H  ~J  ~J  UY  aZ  aZ  aZ  M[  ^n  pr  py  zJ  LN  LV  LX  LX  cg  ph  ph  ph  ]i  lv  xz  xA  BL  NP  NX  NZ  NZ  ei  xj  xj  xj  kk  n|  ~@  ~G  HV  Xb  Xg  tv  t{  t}  t}  X~  X~  X~  I	M	  ~N	  ~N	  ~N	  mO	  P	 = =ViM(F8<<<<JklllJhiiiJ  _  `  `  `JghhhJZ[[[J^___J^___J]^^^JOPPPJ  R  S  S  SJ\]]]J[\\\J  b
  c
  c
  c
J  F
  G
  G
  G
DDI$9$9($C$CDDDIY&&
h	."*,,QVgm n n nooo""
h	*bjllT R R RSSS
98XPZ|^b]csw  JR  	S  	S  	S  	S
,hEEE9,,J  _  `  `  `y((
x!5666;==D\\"'  #A  B  B  C  CF   n n!$gw9999999
 	nLL!hiiqx  @J  lK  lK  L  L  LLL!XYY\_ak[lmmmOOY%:%:;M%N%NOOOJ%ry1BBIcNN]a'b'b'bcfqsus|  ~I  KM  KU  KW  KW  ho  z  t@  t@  t@  fA  DQ  SU  S\  ]j  ln  lu  vx  ly  ly  DH  SI  SI  SI  CJ  M\  ^`  ^g  hw  y{  yB  CF  yG  yG  RV  ^W  ^W  ^W  LX  [j  ln  lu  vE  GI  GP  QT  GU  GU  `d  le  le  le  Zf  is  uw  u~  I  KM  KT  UW  KX  KX  cg  uh  uh  uh  hi  lx  z|  zC  DP  RT  R[  \_  R`  R`  ko  zp  zp  zp  kq  tG	  I	K	  I	R	  S	f	  h	j	  h	q	  r	u	  h	v	  h	v	  A
E
  I	F
  I	F
  I	F
  sG
  J
V
  X
Z
  X
a
  b
n
  p
r
  p
w
  p
y
  p
y
  DH  X
I  X
I  X
I  I
J  MW  Y[  Yb  cm  oq  ox  y|  o}  o}  HL  YM  YM  YM  LN  Q]  _a  _h  iu  wy  w@  AC  wD  wD  OS  _T  _T  _T  PU  Xh  jl  js  tD  FH  FS  FU  FU  `d  je  je  je  Wf  gK" 6 6Vj  M,f555OOY%:%:;M%N%NOOOJ<?P>QRUt  xC  wD  UE  Hf  is  ht  Gu  xV  Yc  Xd  we  f ; ;	Tj  OC!3T:::RRY%:%:;P%Q%QRRRJ	*bimmd S S STWcegeno{}  ~G  HK  ~L  ~L  W[  f\  f\  f\  W]  `s  uw  u~  R  TV  T]  ^a  Tb  Tb  mq  ur  ur  ur  _s  vK  MO  MV  Wl  np  nx  nz  nz  KR  ]b  Mc  Mc  Mc  ud  gD  FH  FO  Pm  oq  oy  o{  o{  LS  ^c  Fd  Fd  Fd  fe  hu  wy  w@  AN  PR  PZ  P\  P\  gk  wl  wl  wl  gm  pA	  C	E	  C	L	  M	^	  `	b	  `	j	  `	l	  `	l	  w	{	  C	|	  C	|	  C	|	  o}	  @
S
  U
W
  U
^
  _
r
  t
v
  t
~
  t
@  t
@  KO  U
P  U
P  U
P  	Q  T`  bd  bk  lx  z|  zA  zC  zC  NR  bS  bS  bS  ST  Wg  ik  ir  sC  EG  EL  EN  EN  Y]  i^  i^  i^  V_  bo  qs  qz  {H  JL  JQ  JS  JS  ^b  qc  qc  qc  ad  gs  uw  u~  K  MO  MV  WY  MZ  MZ  ei  uj  uj  uj  fk  nB  DF  DM  Nb  df  dk  dm  dm  x|  D}  D}  D}  m~  AW  Y[  Yb  cy  {}  {E  {G  {G  IK  IV  Wo  zD  IE  IE  IE  PT  YU  YU  YU  @V  Yh  jl  js  tC  EG  EL  EN  EN  Y]  j^  j^  j^  X_  br  tv  t}  ~N  PR  PZ  P\  P\  gk  |C  tD  tD  tD  aE  HZ  \^  \e  fx  z|  zA  zC  zC  NR  \S  \S  \S  GT  Wl  np  nw  xM  OQ  OW  OY  OY  dh  ni  ni  ni  Vj  m{  }  }F  GU  WY  W`  ac  Wd  Wd  os  }t  }t  }t  lu  xH  JL  JS  Td  fh  fp  fr  fr  }A  RU  JV  JV  JV  wW  XK" 9 9Vj  M/888RRY%:%:;P%Q%QRRRJ8:,GJmp|o}I~  Bn  qF  pG  AH  K  B_  A`  Ja  dI  LZ  K[  c\  ] > >	Tj  OC!6===> >s    
. 
;;c                  j    ddl m}  | j                            t	          j                               d S )Nr   r   r   )r   r   r   drop_allr   r   r   s    r8   	downgrader   _   s9          M.....r:   )r   N)collections.abcr   r   r   alembicr   sqlalchemy.dialectsr   r   str__annotations__r   r	   r
   r   r   r4   r:   r8   <module>r      s    $ $ $ $ $ $ $           * * * * * *"# " " " sTz      ,0sXc]"T) 0 0 0)-
C(3-$& - - -Q> Q> Q> Q>f/ / / / / /r:   