From 1b18c27ab5db1a596bde59aca360982364ef1368 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 03 四月 2026 09:11:35 +0800 Subject: [PATCH] #AGENTS.md --- AGENTS.md | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 273 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a445db4..a4e415b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,8 +1,273 @@ -鍏堜粠鍘熷闇�姹傚嚭鍙戯紝涓嶉粯璁ょ敤鎴峰凡缁忓畬鍏ㄦ兂娓呮鐩爣銆佺害鏉熷拰瀹炵幇璺緞銆� -鍙湁褰撻渶姹傚瓨鍦ㄥ叧閿涔夛紝涓斾笉鍚岀悊瑙d細瀵艰嚧鏄庢樉涓嶅悓鏂规鎴栬緝楂橀敊璇垚鏈椂锛屾墠鍏堝仠涓嬫潵婢勬竻锛� -鍚﹀垯鍩轰簬鏈�鍚堢悊瑙i噴缁х画锛屽苟鏄庣‘璇存槑鍋囪銆� 褰撻渶瑕佺粰鍑轰慨鏀规垨閲嶆瀯鏂规鏃讹紝閬靛惊浠ヤ笅鍘熷垯锛� -- 榛樿鍙洿缁曠敤鎴锋槑纭彁鍑虹殑鐩爣璁捐鏂规锛屼笉鎿呰嚜鎵╁睍涓氬姟鐩爣锛屼笉寮曞叆鏇夸唬涓氬姟璺緞銆� -- 浼樺厛缁欏嚭婊¤冻鐩爣鐨勬渶灏忓畬鏁存柟妗堬紝鑰屼笉鏄ˉ涓佸紡鍏煎鏂规锛涗絾濡傛灉鈥滄渶鐭矾寰勨�濅笌鈥滈潪琛ヤ竵鈥濆啿绐侊紝搴斾紭鍏堥�夋嫨涓嶄細寮曞叆缁撴瀯鎬ч敊璇殑鏈�灏忔纭柟妗堛�� -- 涓嶅仛涓庡綋鍓嶉渶姹傛棤鍏崇殑鍏滃簳銆侀檷绾ф垨棰濆鍒嗘敮璁捐锛涗絾涓轰繚璇侀�昏緫闂悎锛屽厑璁稿姞鍏ュ繀瑕佺殑杈撳叆绾︽潫銆佺姸鎬佹鏌ュ拰杈圭晫淇濇姢銆� -- 杈撳嚭鏂规鍓嶏紝鎸夎緭鍏ャ�佸鐞嗘祦绋嬨�佺姸鎬佸彉鍖栥�佽緭鍑恒�佷笂涓嬫父褰卞搷杩涜閾捐矾妫�鏌ワ紱 -- 瀵规棤娉曢獙璇佺殑閮ㄥ垎蹇呴』鏄庣‘鏍囨敞鍋囪鍜屾湭楠岃瘉鍓嶆彁锛屼笉寰楀皢鎺ㄦ祴琛ㄨ堪涓哄凡纭浜嬪疄銆� \ No newline at end of file +鍏堜粠鍘熷闇�姹傚嚭鍙戯紝涓嶉粯璁ょ敤鎴峰凡缁忓畬鍏ㄦ兂娓呮鐩爣銆佺害鏉熷拰瀹炵幇璺緞銆� +鍙湁褰撻渶姹傚瓨鍦ㄥ叧閿涔夛紝涓斾笉鍚岀悊瑙d細瀵艰嚧鏄庢樉涓嶅悓鏂规鎴栬緝楂橀敊璇垚鏈椂锛屾墠鍏堝仠涓嬫潵婢勬竻锛涘惁鍒欏熀浜庢渶鍚堢悊瑙i噴缁х画锛屽苟鏄庣‘璇存槑鍋囪銆� + +褰撻渶瑕佸湪鏈粨搴撳唴缁欏嚭淇敼銆佹帓鏌ユ垨閲嶆瀯鏂规鏃讹紝閬靛惊浠ヤ笅瑙勫垯銆� + +## 1. 鐩爣杈圭晫 + +- 榛樿鍙洿缁曠敤鎴锋槑纭彁鍑虹殑鐩爣璁捐鏂规锛屼笉鎿呰嚜鎵╁睍涓氬姟鐩爣锛屼笉寮曞叆鏇夸唬涓氬姟璺緞銆� +- 浼樺厛缁欏嚭婊¤冻鐩爣鐨勬渶灏忓畬鏁存柟妗堬紝鑰屼笉鏄ˉ涓佸紡鍏煎鏂规锛涗絾濡傛灉鈥滄渶鐭矾寰勨�濆拰鈥滄渶灏忔纭柟妗堚�濆啿绐侊紝浼樺厛涓嶅紩鍏ョ粨鏋勬�ч敊璇�� +- 涓嶅仛涓庡綋鍓嶉渶姹傛棤鍏崇殑鍏滃簳銆侀檷绾ф垨棰濆鍒嗘敮璁捐锛涗絾涓轰繚璇侀�昏緫闂悎锛屽厑璁稿姞鍏ュ繀瑕佺殑杈撳叆绾︽潫銆佺姸鎬佹鏌ュ拰杈圭晫淇濇姢銆� +- 杈撳嚭鏂规鍓嶏紝鎸夆�滆緭鍏� -> 澶勭悊娴佺▼ -> 鐘舵�佸彉鍖� -> 杈撳嚭 -> 涓婁笅娓稿奖鍝嶁�濆畬鎴愰摼璺鏌ャ�� +- 瀵规棤娉曢獙璇佺殑閮ㄥ垎锛屽繀椤绘槑纭爣娉ㄥ亣璁惧拰鏈獙璇佸墠鎻愶紝涓嶅緱灏嗘帹娴嬭〃杩颁负宸茬‘璁や簨瀹炪�� + +## 2. 浠撳簱缁撴瀯鎬昏 + +杩欐槸涓�涓� `Spring Boot 3.5 + Java 17 + MyBatis-Plus + WAR` 鐨� WCS 椤圭洰锛屽墠绔笉鏄嫭绔� Node 宸ョ▼锛岃�屾槸 `src/main/webapp` 涓嬬殑椤甸潰涓庨潤鎬佽剼鏈洿鍑恒�� + +### 2.1 鍚姩涓庢瀯寤� + +- 鍚姩鍏ュ彛锛歚src/main/java/com/zy/Boot.java` +- Maven 鍧愭爣锛歚com.zy:wcs:1.0.0` +- 鎵撳寘鏂瑰紡锛歚war` +- 鏈�缁堜骇鐗╁悕锛歚wcs` +- 榛樿绔彛锛歚9090` +- 榛樿涓婁笅鏂囪矾寰勶細`/wcs`锛堢敱 `server.servlet.context-path: /@pom.build.finalName@` 瑙f瀽鑰屾潵锛� + +### 2.2 Java 鍖呯粨鏋� + +- `src/main/java/com/zy/asrs` + - 涓氬姟鍩熶富妯″潡銆� + - 甯歌鍒嗗眰锛歚controller`銆乣service`銆乣mapper`銆乣entity`銆乣domain`銆乣task`銆乣planner`銆乣ws`銆� + - 涓庝换鍔°�佸嚭鍏ュ簱銆佺珯鐐广�佸湴鍥俱�佽矾寰勭瓥鐣ョ浉鍏崇殑闇�姹傦紝浼樺厛浠庤繖閲屽畾浣嶃�� + +- `src/main/java/com/zy/core` + - 璁惧杩愯鏃朵笌璋冨害鏍稿績銆� + - 鍏虫敞 `dispatch`銆乣network`銆乣thread`銆乣task`銆乣move`銆乣plugin`銆乣trace`銆乣properties`銆� + - 璁惧鍔ㄤ綔缂栨帓銆佺嚎绋嬫墽琛屻�佷富娴佺▼鎻掍欢銆佺綉缁滈�氳闂浼樺厛鐪嬭繖閲屻�� + +- `src/main/java/com/zy/system` + - 绯荤粺绠$悊涓庡熀纭�閰嶇疆銆� + - 鍖呭惈鐢ㄦ埛銆佽鑹层�佹潈闄愩�佽祫婧愩�佹棩蹇椼�丩icense璁稿彲璇併�佺郴缁熼厤缃�佸畾鏃朵换鍔$瓑銆� + +- `src/main/java/com/zy/ai` + - AI 鐩稿叧鍔熻兘妯″潡銆� + - 鍖呭惈鎻愮ず璇嶆ā鏉裤�丩LM 璺敱銆佽皟鐢ㄦ棩蹇椼�佽瘖鏂�丮CP 鎸傝浇銆佸畾鏃朵换鍔°�佸垵濮嬪寲閫昏緫銆� + - 娑夊強 `/ai/**` 椤甸潰鎴栨帴鍙c�丼pring AI銆丮CP Server 鏃朵紭鍏堢湅杩欓噷銆� + +- `src/main/java/com/zy/common` + - 閫氱敤鑳藉姏銆� + - 鍖呭惈璁よ瘉銆乄eb銆佸伐鍏枫�佸浗闄呭寲銆侀�氱敤妯″瀷涓庡叕鍏辨湇鍔°�� + +- `src/main/java/com/core` + - 鏃у叕鍏卞熀纭�鑳藉姏鍜屼唬鐮佺敓鎴愮浉鍏冲唴瀹广�� + - 甯歌鍐呭鍖呮嫭娉ㄨВ銆佸紓甯搞�佸熀纭�宸ュ叿銆佺敓鎴愬櫒妯℃澘鏀拺銆� + - 涓嶈榛樿杩欓噷鏄綋鍓嶄富涓氬姟鍏ュ彛锛屼絾鏀瑰姩鐢熸垚鍣ㄣ�佸熀纭�杩斿洖缁撴瀯鎴栧簳灞傚伐鍏锋椂闇�瑕佸叧娉ㄣ�� + +### 2.3 璧勬簮涓庡墠绔粨鏋� + +- 椤甸潰锛歚src/main/webapp/views/**` +- 椤甸潰鑴氭湰锛歚src/main/webapp/static/js/**` +- 鍏叡缁勪欢锛歚src/main/webapp/components/**` +- 鏍峰紡锛歚src/main/webapp/static/css/**` +- Mapper XML锛歚src/main/resources/mapper/*.xml` +- SQL 杩佺Щ鑴氭湰锛歚src/main/resources/sql/*.sql` +- 鍥介檯鍖栵細`src/main/resources/i18n/**` +- 浠g爜鐢熸垚妯℃澘锛歚src/main/resources/templates/**` +- 鍦板浘/绀轰緥鏂囦欢锛歚src/main/resources/map/**` + +鍓嶇缁撴瀯浠モ�滈〉闈㈢洰褰曗�濆拰鈥滃悓鍚嶈剼鏈洰褰曗�濋厤瀵逛负涓伙紝渚嬪锛� + +- `views/basStation/**` 瀵瑰簲 `static/js/basStation/**` +- `views/watch/**` 瀵瑰簲 `static/js/watch/**` +- `views/ai/**` 瀵瑰簲 AI 鐩稿叧椤甸潰 + +浣嗙洃鎺т笌鍙鍖栭〉闈㈣繕浼氶澶栦緷璧栵細 + +- `src/main/webapp/components/MapCanvas.js` +- `src/main/webapp/components/WatchCrnCard.js` +- `src/main/webapp/components/WatchDualCrnCard.js` +- `src/main/webapp/components/WatchRgvCard.js` + +## 3. 鎸夐渶姹傜被鍨嬪畾浣嶄唬鐮� + +### 3.1 鍚庣鎺ュ彛鎴栦笟鍔¢�昏緫 + +浼樺厛鎸夎繖鏉¢摼璺鏌ワ細 + +`Controller -> Service -> ServiceImpl -> Mapper.java -> mapper/*.xml -> 瀹炰綋/DTO/Param` + +娉ㄦ剰锛� + +- 鏈」鐩ぇ閲忔煡璇㈠拰鏇存柊渚濊禆 XML SQL锛屼笉鑳藉彧鏀� Java Mapper 鎺ュ彛涓嶆敼 XML銆� +- 鏀瑰瓧娈垫椂蹇呴』鍚屾妫�鏌ュ疄浣撱�佸弬鏁板璞°�佽繑鍥炲璞°�丼QL 鍒悕鍜屽墠绔瓧娈靛悕銆� +- 濡傛灉鏄垪琛ㄩ〉鎴栦繚瀛橀〉锛岄�氬父杩樿缁х画鑱斿姩鍒� `views/**` 涓� `static/js/**`銆� + +### 3.2 鏁版嵁搴撶粨鏋勬垨鑿滃崟/閰嶇疆鏂板 + +浼樺厛妫�鏌ワ細 + +- `src/main/resources/sql/*.sql` +- `src/main/java/com/zy/system/**` +- `src/main/java/com/zy/asrs/**` +- `src/main/java/com/zy/ai/**` + +瑙勫垯锛� + +- 琛ㄧ粨鏋勩�佸垵濮嬪寲鏁版嵁銆佽彍鍗曘�侀厤缃」鏂板锛岄粯璁よˉ SQL 鑴氭湰锛岃�屼笉鏄彧鏀硅繍琛屾椂浠g爜銆� +- 鑻ラ渶姹傛秹鍙婂巻鍙茶縼绉伙紝鎸夌幇鏈夊懡鍚嶉鏍兼柊澧炲閲� SQL锛岄伩鍏嶇洿鎺ヨ鐩栨棫鑴氭湰銆� + +### 3.3 璁惧绾跨▼銆佽皟搴︺�佷富娴佺▼銆佺綉缁滈�氳 + +浼樺厛妫�鏌ワ細 + +- `src/main/java/com/zy/core/thread/**` +- `src/main/java/com/zy/core/dispatch/**` +- `src/main/java/com/zy/core/task/**` +- `src/main/java/com/zy/core/network/**` +- `src/main/java/com/zy/asrs/task/**` +- `src/main/java/com/zy/core/plugin/**` + +瑙勫垯锛� + +- 涓嶈鍙湪鍗曚釜绾跨▼绫讳腑鍋氬眬閮ㄤ慨琛ヨ�屽拷鐣ョ姸鎬佹潵婧愩�佷换鍔′笅鍙戞潯浠跺拰鍥炲啓璺緞銆� +- 蹇呴』妫�鏌ュ叡浜姸鎬併�侀樆濉炵偣銆佸紓甯稿悶鍣�侀噸璇曟潯浠躲�佺嚎绋嬮��鍑烘潯浠躲�� +- 娑夊強涓绘祦绋嬪垏鎹㈡椂锛屾敞鎰� `mainProcessPlugin` 閰嶇疆鍙婄浉鍏虫彃浠跺疄鐜般�� + +### 3.4 鐩戞帶澶у睆銆佸湴鍥俱�乄ebSocket銆丳ixiJS + +浼樺厛妫�鏌ワ細 + +- `src/main/webapp/views/watch/**` +- `src/main/webapp/views/locMap/locMap.html` +- `src/main/webapp/components/MapCanvas.js` +- `src/main/java/com/zy/asrs/ws/**` + +瑙勫垯锛� + +- WebSocket 鍦板潃瑕佸甫涓婁笅鏂囪矾寰� `/wcs`銆� +- 鐩戞帶椤垫敼鍔ㄩ�氬父涓嶆涓�涓� HTML锛屽彲鑳藉悓鏃跺奖鍝� `console.html`銆乣console_pixijs.html`銆乣locMap.html` 鍜岀粍浠舵枃浠躲�� +- 鍦板浘鐐逛綅銆佽澶囩姸鎬併�侀鑹层�佽建杩广�佹�ц兘闂锛屼紭鍏堝垽鏂槸鍓嶇娓叉煋闂杩樻槸鍚庣鎺ㄩ�佹暟鎹棶棰橈紝涓嶈娣峰湪涓�璧锋敼銆� + +### 3.5 AI銆佽瘖鏂�丩LM 璺敱銆丮CP + +浼樺厛妫�鏌ワ細 + +- `src/main/java/com/zy/ai/controller/**` +- `src/main/java/com/zy/ai/service/**` +- `src/main/java/com/zy/ai/config/**` +- `src/main/java/com/zy/ai/mcp/**` +- `src/main/webapp/views/ai/**` +- `src/main/resources/sql/*ai*.sql` + +瑙勫垯锛� + +- 璺敱銆佹ā鏉裤�佹寕杞戒俊鎭緢澶氬凡缁忚縼绉诲埌鏁版嵁搴擄紝涓嶈鍙洴 `application.yml`銆� +- 濡傛灉闇�姹傛秹鍙婃ā鍨嬨�佸瘑閽ャ�佽矾鐢卞垏鎹紝鍏堝尯鍒嗏�滄暟鎹簱涓婚厤缃�濆拰鈥淵AML 鍥為��閰嶇疆鈥濄�� + +## 4. 淇敼鍘熷垯 + +### 4.1 榛樿鏈�灏忛棴鐜紝涓嶅仛鍗婇摼璺敼鍔� + +- 鍙敼鐢ㄦ埛鐩爣鐩存帴鐩稿叧鏂囦欢銆� +- 浣嗗彧瑕佸綋鍓嶉摼璺ぉ鐒朵緷璧栦笂涓嬫父鏂囦欢锛屽氨蹇呴』涓�娆℃敼瀹屾暣锛屼笉鑳界暀涓嬫槑鏄炬柇閾俱�� + +### 4.2 淇濇寔鐜版湁宸ョ▼椋庢牸 + +- 鍚庣淇濇寔褰撳墠鍖呯粨鏋勫拰鍒嗗眰鍛藉悕鏂瑰紡銆� +- 鍓嶇淇濇寔褰撳墠 `Vue 2 椋庢牸鑴氭湰鐩村啓` 鐨勬柟寮忥紝涓嶉澶栧紩鍏ュ墠绔瀯寤轰綋绯汇�� +- 闈炲繀瑕佷笉鎶婄幇鏈� HTML/JS 椤甸潰鏀归�犳垚鍏ㄦ柊妗嗘灦鍐欐硶銆� + +### 4.3 閬垮厤缁撴瀯鎬ч敊璇� + +- 涓嶉殢鎰忔妸涓氬姟閫昏緫濉炶繘 Controller銆� +- 涓嶆柊澧炰笌鐜版湁浣撶郴骞惰浣嗚亴璐i噸澶嶇殑 Service銆乁til銆佺嚎绋嬫垨椤甸潰銆� +- 涓嶇粫杩� Mapper XML 鐩存帴鎷兼帴鏉傛暎 SQL銆� + +## 5. 鎵ц鍓嶆鏌� + +寮�濮嬪疄鐜板墠鑷冲皯纭浠ヤ笅鍑犵偣锛� + +- 闇�姹傚睘浜庡摢涓ā鍧楋細`asrs`銆乣core`銆乣system`銆乣ai`銆乣common`銆乣com/core` +- 鏄惁娑夊強鏁版嵁搴撳瓧娈点�丼QL銆佽彍鍗曘�侀厤缃」 +- 鏄惁娑夊強鍓嶅悗绔仈鍔� +- 鏄惁娑夊強绾跨▼鐘舵�併�佽澶囧姩浣溿�乄ebSocket 鎺ㄩ�� +- 鏄惁闇�瑕佽ˉ鍥介檯鍖栨枃妗� +- 鏄惁闇�瑕佹柊澧� SQL 杩佺Щ鑴氭湰 + +濡傛灉杩欎簺闂閲屾湁浠讳綍涓�椤圭瓟妗堟槸鈥滄槸鈥濓紝瀹炵幇鏃跺繀椤绘妸鐩稿叧閾捐矾涓�骞剁撼鍏ャ�� + +## 6. 鎼滅储涓庢帓鏌ユ柟寮� + +浼樺厛鐢ㄥ揩閫熷畾浣嶏紝涓嶅仛鏃犺竟鐣屾壂璇伙細 + +```bash +rg -n "鍏抽敭瀛�" src/main/java src/main/resources src/main/webapp +rg --files src/main/java/com/zy | rg "Controller|Service|Mapper|Task|Thread" +rg -n "鎺ュ彛璺緞|瀛楁鍚峾閰嶇疆椤瑰悕" src/main/java src/main/webapp src/main/resources +``` + +鎺掓煡闂鏃朵紭鍏堟壘锛� + +1. 鍏ュ彛 Controller 鎴栭〉闈㈡寜閽簨浠� +2. 瀵瑰簲 Service 涓绘祦绋� +3. Mapper XML / SQL +4. 鐘舵�佸洖鍐欑偣 +5. 椤甸潰娓叉煋鎴� WebSocket 娑堣垂鐐� + +## 7. 鏍¢獙涓庨獙璇� + +鎸夋垚鏈粠浣庡埌楂樻墽琛岋紝鏃犳硶鎵ц鏃惰鏄庣‘璇存槑鍘熷洜銆� + +### 7.1 缂栬瘧鏍¢獙 + +```bash +mvn -q -DskipTests compile +``` + +### 7.2 瀹氬悜娴嬭瘯 + +鑻ユ敼鍔ㄩ檮杩戝凡鏈夋祴璇曪紝浼樺厛璺戝畾鍚戞祴璇曪紝渚嬪锛� + +```bash +mvn -q -Dtest=NavigateUtilsTest test +mvn -q -Dtest=WrkAnalysisServiceImplTest test +``` + +### 7.3 鏁翠綋娴嬭瘯 + +```bash +mvn test +``` + +### 7.4 鍚姩楠岃瘉 + +```bash +mvn -q -DskipTests spring-boot:run +``` + +閲嶇偣纭锛� + +- 鏈嶅姟绔彛 `9090` +- 瀹為檯璁块棶鍓嶇紑 `/wcs` +- MySQL銆丷edis 渚濊禆鏄惁鍙繛鎺� + +### 7.5 椤甸潰楠岃瘉 + +濡傛灉鏀逛簡椤甸潰銆佽剼鏈垨 WebSocket锛岃嚦灏戣鏄庨獙璇佷簡鍝簺椤甸潰锛屼緥濡傦細 + +- `/wcs/views/index.html` +- `/wcs/views/watch/console.html` +- `/wcs/views/locMap/locMap.html` +- `/wcs/views/ai/*.html` + +## 8. 楂橀闄╂敼鍔ㄦ彁閱� + +- 鏀� Mapper XML 鏃讹紝閲嶇偣闃插瓧娈垫紡鏄犲皠銆佸埆鍚嶄笉涓�鑷淬�佺粨鏋滈泦绫诲瀷閿欒銆� +- 鏀圭嚎绋�/璋冨害閫昏緫鏃讹紝閲嶇偣闃茬珵鎬併�侀噸澶嶄笅鍙戙�佺姸鎬佷笉鍥炴敹銆佹寰幆銆佸紓甯镐涪澶便�� +- 鏀归〉闈㈠瓧娈垫椂锛岄噸鐐归槻鍓嶅悗绔� JSON 瀛楁鍚嶄笉涓�鑷淬�� +- 鏀逛笂涓嬫枃璺緞鐩稿叧浠g爜鏃讹紝閲嶇偣闃插墠绔‖缂栫爜璺緞婕忓姞 `/wcs`銆� +- 鏀� AI 閰嶇疆鏃讹紝閲嶇偣闃叉妸鏁版嵁搴撻厤缃摼璺拰 YAML 鍥為��閾捐矾娣锋穯銆� +- 鏀圭洃鎺�/鍦板浘閫昏緫鏃讹紝閲嶇偣闃测�滃悗绔暟鎹纭絾鍓嶇娓叉煋閿欎綅鈥濆拰鈥滃墠绔樉绀烘甯镐絾鐘舵�佹簮閿欒鈥濅簰鐩歌鍒ゃ�� + +## 9. 杈撳嚭瑕佹眰 + +瀹屾垚浠诲姟鍚庯紝缁撴灉璇存槑搴斿敖閲忓寘鍚細 + +1. 鏀逛簡浠�涔堬紝鐩殑鏄粈涔堛�� +2. 褰卞搷浜嗗摢鏉¢摼璺垨鍝簺妯″潡銆� +3. 瀹為檯淇敼浜嗗摢浜涙枃浠躲�� +4. 璺戜簡鍝簺楠岃瘉锛岀粨鏋滃浣曘�� +5. 鍝簺鍐呭鏄熀浜庡亣璁撅紝鍝簺閮ㄥ垎鏈獙璇併�� + +濡傛灉鏄帓鏌ョ被浠诲姟锛屼紭鍏堣鏄庢牴鍥犮�佽瘉鎹拰淇鐐癸紱濡傛灉灏氭湭瀹屾垚锛屾槑纭樆濉炰綅缃紝涓嶈鎶婃帹娴嬪綋缁撹銆� -- Gitblit v1.9.1