
    3j]!                       d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ  e	d          Zedz  Zed	z  Zed
z  Zedz  ZddZd dZd!dZd"dZd#dZd$dZd%d&dZedk    r e e                      dS )'u   Lightweight AI工作区 project lookup index updater.

Writes only inside /Users/bot1/Volumes/root_for_ai/AI工作区/00_AI工作区项目索引.
It does not create Git repos, push, or touch the old remote-repository mapping folder.
    )annotationsN)datetime)Path)Anyu+   /Users/bot1/Volumes/root_for_ai/AI工作区u   00_AI工作区项目索引projectszproject_index.jsonu   AI工作区项目映射表.mdreturnstrc                 t    t          j                                                                        d          S )Nseconds)timespec)r   now
astimezone	isoformat     s   /Users/bot1/Volumes/root_for_ai/AI工作区/00_AI工作区项目索引/scripts/update_ai_workspace_project_index.py	now_localr      s+    <>>$$&&00)0DDDr   pathr   c                    | j                                         }t          j        dd|          }t          j        dd|                              d          }|pdS )Nz[\\/:*?\"<>|\s]+_z_+unnamed_project)namestripresub)r   r   s     r   slugify_folder_namer      sT    9??D6%sD11D6%d##))#..D$$$r   text	list[str]c                L    | sg S t          j        d|           }d |D             S )Nu   [,，、;；\n]+c                ^    g | ]*}|                                 |                                 +S r   )r   ).0ps     r   
<listcomp>z"split_keywords.<locals>.<listcomp>(   s-    222!		2AGGII222r   )r   split)r   partss     r   split_keywordsr&   $   s5     	H($//E22u2222r   dict[str, Any]c                 J   t                                           sdt                      i dS 	 t          j        t                               d                    } t          | t                    st          d          | 	                    dd           | 	                    di            | S # t          $ rl t                               t           j        dt          j                    d	d
z             }t                               |           dt                      i dcY S w xY w)N   )version
updated_atr   utf-8encodingzindex root is not objectr*   r   z.unreadable_z%Y%m%d_%H%M%Sz.bak)
INDEX_JSONexistsr   jsonloads	read_text
isinstancedict
ValueError
setdefault	Exceptionwith_suffixsuffixr   r   rename)databackups     r   
read_indexr>   +   s    IIKKRHHHIz*...@@AA$%% 	97888	1%%%
B''' I I I''
(9<m8<>><m<m<m<m(mnn&!!!IKKRHHHHH	Is   A>B, ,A3D"!D"recordc                   |                      d          pg }|rd                    d |D                       nd}d                    |                      d          pg           }d                    |                      d          pg           }|                      d          pg }d                    d	 |d
d          D                       pd}d                    g d|                      d          p| d          d| d          d| d          d|                      dd           d| d          d|                      dd           d|                      dd           d|                      dd           d|                      dd           d|                      d d           d!|                      d"          pd# d$|pd% d&|pd% d'| d(| d)          S )*Nkey_deliverables
c              3  "   K   | ]
}d | dV  dS )z- ``Nr   )r!   xs     r   	<genexpr>zproject_card.<locals>.<genexpr>>   s*      !C!C****!C!C!C!C!C!Cr   u   - 暂无z, keywordsaliaseseventsc           
   3     K   | ]K}d |                     dd           d|                     dd           d|                     dd           V  LdS )z- time u   ｜profileeventNget)r!   es     r   rF   zproject_card.<locals>.<genexpr>B   sv        RSMQUU6"MM!%%	""5"5MM!%%:K:KMM     r   irL   z# titlefolder_namez

```yaml
folder_name: "z"
project_id: "
project_idz"
status: "statusactivez	"
path: "r   z"
created_at: "
created_atz"
last_updated: "last_updatedz"
owner_profile: "owner_profilez"
related_org_or_ip: "related_org_or_ipz"
use_case: "use_casez"
```

## Summary

summaryu   暂无摘要。z

## Keywords

u   暂无z

## Aliases

z.

## Key deliverables / current useful files

z

## Maintenance events

u   

## Robot lookup note

优先返回本卡片的 `path`，再在该项目目录内做限定范围搜索。不要把本索引等同于 Git/远程仓库映射；本索引只服务 AI工作区项目查找和 RAG 检索。
)rP   join)r?   deliverablesdeliverable_linesrG   rH   rI   event_liness          r   project_cardra   <   s   ::0117RLGSc		!C!Cl!C!C!CCCCYcyyJ//5266Hii

9--344GZZ!!'RF))  W]^`^a^aWb     	 % % % % % %&**W%%>)> % % % % m$% % % % \"	% % % %
 **Xh
'
'% % % % 	v% % % % jjb))% % % % 

>"--% % % % OB//% % % % ZZ 3B77% % % % JJz"%%% % % %  I++!% % % %( 
X)% % % %0 	H1% % % %8 9% % % %@ A% % % % % % %r   r<   Nonec                   t                               dd           t                      | d<   t                              t          j        | ddd          dz   d	           t          |                     d
i           	                                d d          }ddd| d          dddddddg
}|D ]}d
                    |                    d          pg d d                   }|                    d|                    d          p|                    d           d|                    d           d| d|                    dd           d|                    d d           d!           |                    d           |                    d"           |                    d           |D ]}t          t          |d                             d#z   }d$| }|                    d%|                    d          p|                    d           d&| d'           t           |z                      t          |          d	           t                              d
                    |          dz   d	           d S )(NT)parentsexist_okr+   F   )ensure_asciiindent	sort_keysrB   r,   r-   r   c                Z    |                      dd          |                      dd          fS )NrX   rL   rS   rO   )rs    r   <lambda>zwrite_outputs.<locals>.<lambda>r   s-    AEE.Z\D]D]_`_d_dertv_w_wCx r   )keyreverseu   # AI工作区项目映射表rL   u   更新时间：u   用途：给机器人和 RAG 快速查询 `/Users/bot1/Volumes/root_for_ai/AI工作区` 下的项目位置、关键词、当前状态和关键交付物。u   维护边界：这是轻量项目查找索引，不是 Git/Gitee/远程仓库映射表；不要在这里记录密钥、长聊天记录、过程日志或大段临时草稿。u1   | 项目 | 路径 | 关键词 | 状态 | 更新 |z| --- | --- | --- | --- | --- |u   、rG   
   z| rR   rS   z | `r   z` | z | rU   rV   rX   z |u   ## 项目卡片.mdz	projects/z- [z]())PROJECTS_DIRmkdirr   r/   
write_textr1   dumpssortedrP   valuesr]   appendr   r   ra   INDEX_MD)r<   rowslinesrk   kws	card_namerels          r   write_outputsr   m   s   td333"D$*TaSWXXX[__jqrrr$((:r**11339x9x  CG  H  H  HD&
.$|,..
 	e
 	x
;)E  \ \jj!%%
++1r3B3788  [!%%..@AEE-,@,@  [  [aeeFmm  [  [Y\  [  [abafafgopxayay  [  [~  D  D  ES  TV  W  W  [  [  [  	\  	\  	\  	\	LL	LL"###	LL Q Q'QvY885@	%)%%K155>>AQUU=-A-AKKSKKKLLL			!--l1oo-PPPP		%((4/'BBBBBr   intc                
   t          j        d          }|                    ddd           |                    ddd	
           |                    ddd
           |                    ddd
           |                    ddd
           |                    ddd
           |                    ddd
           |                    ddd
           |                    dd           |                    ddd
           |                    ddg d           |                    |           }t	          |j                                                                                  }	 |                    t                                                     n7# t          $ r* t          d t           d!| t          j        "           Y d#S w xY w|                                r|                                s t          d$| t          j        "           d%S |t           k    st           |j        v rt          d&t          j        "           d'S t%                      }|                    d(i           }t)          |          }|                    |i           }t-                      }t/          t0                              |                    d)          pg t5          |j                  z                       }	t/          t0                              |                    d*          pg t5          |j                  z                       }
t/          t0                              |                    d+          pg t/          |j        pg           z                       }|                    d,          pg }|j        r9|                    ||j         p|                    d-d          |j        d.           ||j!        |j"        p|                    d/          p|j!        tG          |          |j$        p|                    d0          pd|                    d1          p|||j         p|                    d-d          |j%        p|                    d2d          |j&        p|                    d3d          |j'        p|                    d4d          |	|
||d5d          d6}|||<   tQ          |           t          tS          j*        d|tG          tV                    tG          tX          |d7z   z            d8d9d#:                     d;S )<Nu3   Update lightweight AI工作区 project lookup index)descriptionz--pathTu%   Project folder path under AI工作区)requiredhelpz--titlerL   zHuman-readable project title)defaultr   z	--summaryzShort current-state summaryz
--keywordsz-Comma/Chinese-comma separated lookup keywordsz	--aliasesz%Comma/Chinese-comma separated aliasesz--owner-profilez#Profile/bot maintaining this recordz--related-org-or-ipu,   所属项目/IP/客户，如 良渚、国博z
--use-caseu4   用途，如 详情页、主图、吉祥物、头像z--statusrV   )r   z--eventzMaintenance event descriptionz--deliverablerx   z7Key deliverable/current file path, relative or absolute)actionr   r   zERROR: path must be under z: )filerf   z:ERROR: project path does not exist or is not a directory:    z4ERROR: do not register the index folder as a project   r   rG   rH   rA   rI   rY   )rK   rM   rN   rR   rU   rW   rZ   r[   r\   i)rT   rS   rR   r   rU   rW   rX   rY   rZ   r[   r\   rG   rH   rA   rI   rp   )okrT   indexcardF)rg   rh   r   )-argparseArgumentParseradd_argument
parse_argsr   r   
expanduserresolverelative_toAI_WORK_ROOTr6   printsysstderrr0   is_dir
INDEX_ROOTrd   r>   r7   r   rP   r   listr5   fromkeysr&   rG   rH   deliverablerN   rx   rY   r   rR   r	   rU   rZ   r[   r\   r   r1   ru   ry   rr   )argvapargsr   r<   r   rT   existingr   rG   rH   r^   rI   r?   s                 r   mainr      s.   		 -b	c	c	cBOOHt2YOZZZOOIr0NOOOOOOK2OOPPPOOL"3bOcccOOK2YOZZZOO%r8]O^^^OO)2<jOkkkOOL"3iOjjjOOJO111OOIr0OOPPPOOOHb  HAO  B  B  B==D	??%%''//11D--//0000   A<AA4AA
SSSSqq ;;==  Q4QQX[XbccccqzZ4<77D3:VVVVq<<Dz2..H$T**J||J++H
++CDMM8<<
#;#;#Ar^TXTaEbEb"bccddH4==(,,y"9"9"?R>RVR^C_C_!_``aaGx||4F'G'G'M2QUVZVfVljlQmQm&mnnooL\\(##)rFz ~st/A/fX\\RaceEfEfquq{||}}} !yAx||G44A	D		+Ch!7!7C8ll<007C+Px||OR/P/P!3\x||DWY[7\7\MAX\\*b%A%A<>8<<	2#>#>(, F" "HZ$	$*D
S]]\_`lpz  ~C  qC  aD  ]E  ]E  F  F  UZ  cd  e  e  e  f  f  f1s   ,,F 0GG__main__)r   r	   )r   r   r   r	   )r   r	   r   r   )r   r'   )r?   r'   r   r	   )r<   r'   r   rb   )N)r   r   )__doc__
__future__r   r   r1   r   r   r   pathlibr   typingr   r   r   rr   r/   ry   r   r   r&   r>   ra   r   r   __name__
SystemExitr   r   r   <module>r      s   
 # " " " " "   				 



                  tABB88
J&..
77E E E E% % % %3 3 3 3I I I I". . . .bC C C C@< < < < <~ z
*TTVV

 r   