/* Js for , Version=1775193950 */
 v.lang = {"confirmDelete":"\u60a8\u786e\u5b9a\u8981\u6267\u884c\u5220\u9664\u64cd\u4f5c\u5417\uff1f","deleteing":"\u5220\u9664\u4e2d","doing":"\u5904\u7406\u4e2d","loading":"\u52a0\u8f7d\u4e2d","updating":"\u66f4\u65b0\u4e2d...","timeout":"\u7f51\u7edc\u8d85\u65f6,\u8bf7\u91cd\u8bd5","errorThrown":"\u6267\u884c\u51fa\u9519\uff1a","continueShopping":"\u7ee7\u7eed\u8d2d\u7269","required":"\u5fc5\u586b","back":"\u8fd4\u56de","continue":"\u7ee7\u7eed","bindWechatTip":"\u53d1\u5e16\u529f\u80fd\u8bbe\u7f6e\u4e86\u7ed1\u5b9a\u5fae\u4fe1\u7684\u9650\u5236\uff0c\u8bf7\u5148\u7ed1\u5b9a\u5fae\u4fe1\u4f1a\u5458\u3002","defaultTips":"\u786e\u5b9a\u8981\u8bbe\u7f6e\u4e3a\u9ed8\u8ba4\u8bed\u8a00\u5417\uff1f","importTip":"\u53ea\u5bfc\u5165\u4e3b\u9898\u7684\u98ce\u683c\u548c\u6837\u5f0f","fullImportTip":"\u5c06\u4f1a\u5bfc\u5165\u6d4b\u8bd5\u6570\u636e\u4ee5\u53ca\u66ff\u6362\u7ad9\u70b9\u6587\u7ae0\u3001\u4ea7\u54c1\u7b49\u6570\u636e","hide":"\u9690\u85cf"};;if(location.href.includes('needEditNickname'))
{
    $('#editName').modal({
        show: true,
        backdrop: 'static',
        keyboard: false
    });
    $.setAjaxForm('#nicknameForm');
};v.starText = "\u70b9\u4e2a\u8d5e\u5427";;v.staredText = "\u5df2\u70b9\u8d5e";;v.collected = "\u5df2\u6536\u85cf";;v.collect = "\u6536\u85cf";;v.loginLink = "\/user-login-L3JycGwvc3BlY2lmaWNhdGlvbi1ieS1leGFtcGxlLmh0bWw=.html";;v.code = "specification-by-example";;v.users = "\u82d7\u518d\u9752 \u5218\u6d0b \u5f90\u4e1c\u4f1f ";;v.copyCreator = "\u8d21\u732e\u4eba\uff1a";;v.copyLink = "\u94fe\u63a5\uff1a";;v.copySource = "\u6765\u6e90\uff1a\u878d\u00b7\u8f6f\u4ef6\u9879\u76ee\u7ba1\u7406\u63a8\u8350\u5b9e\u8df5\u5e93 \uff08RRPL\uff09";;v.copyTips = "\u8f6c\u8f7d\u3001\u5206\u4eab\u53ca\u518d\u521b\u4f5c\u9700\u9075\u5faa\u77e5\u8bc6\u5171\u4eab\u7f72\u540d-\u76f8\u540c\u65b9\u5f0f\u5171\u4eab 4.0 \u56fd\u9645\u8bb8\u53ef\u534f\u8bae\uff08https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.zh\uff09";;v.copySuccess = "\u590d\u5236\u6210\u529f";;v.copyFailed = "\u590d\u5236\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u590d\u5236";;v.categoryTree = [{"title":"\u878d\u5b9e\u8df5\u5e932.0","id":"4","open":true,"children":[{"title":"\u9700\u6c42","id":"15","open":true,"code":"demand","children":[{"title":"\u6218\u7565","id":"6","code":"","children":[{"practice":"446","treeID":"6","treeType":"demand","title":"BLM","code":"blm","model":"4","url":"\/rrpl\/blm.html"},{"practice":"439","treeID":"6","treeType":"demand","title":"CS\u6218\u7565","code":"cs","model":"4","url":"\/rrpl\/cs.html"},{"practice":"435","treeID":"6","treeType":"demand","title":"\u7cbe\u76ca\u753b\u5e03","code":"lean-canvas","model":"4","url":"\/rrpl\/lean-canvas.html"},{"practice":"434","treeID":"6","treeType":"demand","title":"4Ps \u8425\u9500\u7ec4\u5408\u6a21\u578b","code":"4ps","model":"4","url":"\/rrpl\/4ps.html"},{"practice":"401","treeID":"6","treeType":"demand","title":"\u516d\u76d2\u6a21\u578b","code":"six-box-model","model":"4","url":"\/rrpl\/six-box-model.html"},{"practice":"426","treeID":"6","treeType":"demand","title":"BCG\u4e09\u56db\u89c4\u5219\u77e9\u9635","code":"bcg","model":"4","url":"\/rrpl\/bcg.html"},{"practice":"431","treeID":"6","treeType":"demand","title":"\u5fae\u7b11\u66f2\u7ebf","code":"smiling-curve","model":"4","url":"\/rrpl\/smiling-curve.html"},{"practice":"432","treeID":"6","treeType":"demand","title":"VRIO\u5206\u6790","code":"vrio","model":"4","url":"\/rrpl\/vrio.html"},{"practice":"427","treeID":"6","treeType":"demand","title":"SFO\u6a21\u578b","code":"sfo","model":"4","url":"\/rrpl\/sfo.html"},{"practice":"425","treeID":"6","treeType":"demand","title":"SCP\u5206\u6790\u6a21\u578b","code":"scp","model":"4","url":"\/rrpl\/scp.html"},{"practice":"423","treeID":"6","treeType":"demand","title":"3C\u6218\u7565\u4e09\u89d2\u6a21\u578b","code":"3c-model","model":"4","url":"\/rrpl\/3c-model.html"},{"practice":"422","treeID":"6","treeType":"demand","title":"\u6807\u6746\u5206\u6790\u6cd5","code":"benchmarking","model":"4","url":"\/rrpl\/benchmarking.html"},{"practice":"420","treeID":"6","treeType":"demand","title":"\u6ce2\u7279\u94bb\u77f3\u7406\u8bba\u6a21\u578b","code":"michael-porter-diamond-model","model":"4","url":"\/rrpl\/michael-porter-diamond-model.html"},{"practice":"418","treeID":"6","treeType":"demand","title":"\u516d\u529b\u5206\u6790\u6a21\u578b","code":"six-forces-analysis-model","model":"4","url":"\/rrpl\/six-forces-analysis-model.html"},{"practice":"417","treeID":"6","treeType":"demand","title":"ADL\u77e9\u9635","code":"adl","model":"4","url":"\/rrpl\/adl.html"},{"practice":"412","treeID":"6","treeType":"demand","title":"MECE\u539f\u5219","code":"mece","model":"4","url":"\/rrpl\/mece.html"},{"practice":"410","treeID":"6","treeType":"demand","title":"\u5e73\u8861\u8ba1\u5206\u5361","code":"balanced-scorecard","model":"4","url":"\/rrpl\/balanced-scorecard.html"},{"practice":"404","treeID":"6","treeType":"demand","title":"\u6ce2\u7279\u4e94\u529b\u6a21\u578b","code":"porter-five-forces-model","model":"4","url":"\/rrpl\/porter-five-forces-model.html"},{"practice":"405","treeID":"6","treeType":"demand","title":"\u6ce2\u58eb\u987f\u77e9\u9635","code":"boston-consulting-group-matrix","model":"4","url":"\/rrpl\/boston-consulting-group-matrix.html"},{"practice":"392","treeID":"6","treeType":"demand","title":"MADStrat\u6846\u67b6","code":"madstrat","model":"4","url":"\/rrpl\/madstrat.html"},{"practice":"268","treeID":"6","treeType":"demand","title":"\u9879\u76ee\u5efa\u8bae\u4e66","code":"project-proposal","model":"4","url":"\/rrpl\/project-proposal.html"},{"practice":"269","treeID":"6","treeType":"demand","title":"\u9879\u76ee\u84dd\u56fe","code":"project-blueprint","model":"4","url":"\/rrpl\/project-blueprint.html"},{"practice":"386","treeID":"6","treeType":"demand","title":"SPACE\u77e9\u9635","code":"space","model":"4","url":"\/rrpl\/space.html"},{"practice":"383","treeID":"6","treeType":"demand","title":"SPAN\u5206\u6790","code":"span","model":"4","url":"\/rrpl\/span.html"},{"practice":"299","treeID":"6","treeType":"demand","title":"PESTLE\u5206\u6790","code":"PESTLE","model":"4","url":"\/rrpl\/PESTLE.html"},{"practice":"303","treeID":"6","treeType":"demand","title":"\u5b89\u7d22\u592b\u77e9\u9635","code":"ansoff-matrix","model":"4","url":"\/rrpl\/ansoff-matrix.html"},{"practice":"301","treeID":"6","treeType":"demand","title":"\u4ea7\u54c1\u521b\u65b0\u7ae0\u7a0b\uff08PIC\uff09","code":"product-innovation-charter","model":"4","url":"\/rrpl\/product-innovation-charter.html"},{"practice":"251","treeID":"6","treeType":"demand","title":"\u5546\u4e1a\u8ba1\u5212\u4e66","code":"business-plan","model":"4","url":"\/rrpl\/business-plan.html"},{"practice":"248","treeID":"6","treeType":"demand","title":"\u5546\u4e1a\u8bba\u8bc1","code":"business-case","model":"4","url":"\/rrpl\/business-case.html"},{"practice":"169","treeID":"6","treeType":"demand","title":"\u53ef\u884c\u6027\u7814\u7a76\u62a5\u544a","code":"feasibility-study-report","model":"4","url":"\/rrpl\/feasibility-study-report.html"},{"practice":"18","treeID":"6","treeType":"demand","title":"SWOT\u5206\u6790","code":"swot-analysis","model":"4","url":"\/rrpl\/swot-analysis.html"},{"practice":"33","treeID":"6","treeType":"demand","title":"\u53d1\u5e03\u8ba1\u5212","code":"release-planning","model":"4","url":"\/rrpl\/release-planning.html"},{"practice":"10","treeID":"6","treeType":"demand","title":"\u7535\u68af\u6f14\u8bb2","code":"elevator-pitch","model":"4","url":"\/rrpl\/elevator-pitch.html"},{"practice":"11","treeID":"6","treeType":"demand","title":"\u4ef7\u503c\u4e3b\u5f20\u753b\u5e03","code":"value-proposition-canvas","model":"4","url":"\/rrpl\/value-proposition-canvas.html"},{"practice":"12","treeID":"6","treeType":"demand","title":"\u5546\u4e1a\u6a21\u5f0f\u753b\u5e03","code":"business-model-canvas","model":"4","url":"\/rrpl\/business-model-canvas.html"},{"practice":"35","treeID":"6","treeType":"demand","title":"\u4ea7\u54c1\u8def\u7ebf\u56fe","code":"product-roadmap","model":"4","url":"\/rrpl\/product-roadmap.html"}]},{"title":"\u9700\u6c42\u83b7\u53d6","id":"7","code":"","children":[{"practice":"402","treeID":"7","treeType":"demand","title":"KBF\u5206\u6790\u6cd5","code":"kbf","model":"4","url":"\/rrpl\/kbf.html"},{"practice":"297","treeID":"7","treeType":"demand","title":"AEIOU\u6846\u67b6","code":"aeiou","model":"4","url":"\/rrpl\/aeiou.html"},{"practice":"254","treeID":"7","treeType":"demand","title":"\u8f6f\u4ef6\u9700\u6c42\u89c4\u683c\u8bf4\u660e\u4e66","code":"software-req-spec-doc","model":"4","url":"\/rrpl\/software-req-spec-doc.html"},{"practice":"200","treeID":"7","treeType":"demand","title":"\u9700\u6c42\u68b3\u7406","code":"requirement-refinement","model":"4","url":"\/rrpl\/requirement-refinement.html"},{"practice":"109","treeID":"7","treeType":"demand","title":"\u9700\u6c42\u8bbf\u8c08\u7684\u4e09\u67b6\u9a6c\u8f66","code":"reqmnt-interview-3keyroles","model":"4","url":"\/rrpl\/reqmnt-interview-3keyroles.html"},{"practice":"93","treeID":"7","treeType":"demand","title":"\u5b9e\u4f8b\u5316\u9700\u6c42","code":"specification-by-example","model":"4","url":"\/rrpl\/specification-by-example.html"},{"practice":"2","treeID":"7","treeType":"demand","title":"\u7528\u6237\u753b\u50cf","code":"user-persona","model":"4","url":"\/rrpl\/user-persona.html"},{"practice":"3","treeID":"7","treeType":"demand","title":"\u5f71\u54cd\u5730\u56fe","code":"impact-mapping","model":"4","url":"\/rrpl\/impact-mapping.html"},{"practice":"15","treeID":"7","treeType":"demand","title":"\u9a8c\u6536\u6807\u51c6","code":"acceptance-criteria","model":"4","url":"\/rrpl\/acceptance-criteria.html"},{"practice":"6","treeID":"7","treeType":"demand","title":"\u7528\u6237\u6545\u4e8b","code":"user-story","model":"4","url":"\/rrpl\/user-story.html"},{"practice":"22","treeID":"7","treeType":"demand","title":"\u7528\u6237\u6545\u4e8b\u5730\u56fe","code":"user-story-mapping","model":"4","url":"\/rrpl\/user-story-mapping.html"},{"practice":"7","treeID":"7","treeType":"demand","title":"\u5ba2\u6237\u65c5\u7a0b\u5730\u56fe","code":"customer-journey-map","model":"4","url":"\/rrpl\/customer-journey-map.html"},{"practice":"9","treeID":"7","treeType":"demand","title":"\u540c\u7406\u5fc3\u5730\u56fe","code":"empathy-map","model":"4","url":"\/rrpl\/empathy-map.html"}]},{"title":"\u9700\u6c42\u62c6\u5206","id":"69","code":"","children":[{"practice":"385","treeID":"69","treeType":"demand","title":"$APPEALS\u6a21\u578b","code":"appeals","model":"4","url":"\/rrpl\/appeals.html"},{"practice":"204","treeID":"69","treeType":"demand","title":" Humanizing Work\u7528\u6237\u6545\u4e8b\u62c6\u5206\u6a21\u5f0f","code":"humanizingwork-story-splitting","model":"4","url":"\/rrpl\/humanizingwork-story-splitting.html"},{"practice":"184","treeID":"69","treeType":"demand","title":"SPIDR\u7528\u6237\u6545\u4e8b\u62c6\u5206\u6cd5","code":"spidr-story-splitting","model":"4","url":"\/rrpl\/spidr-story-splitting.html"}]},{"title":"\u9700\u6c42\u6392\u5e8f","id":"11","code":"","children":[{"practice":"384","treeID":"11","treeType":"demand","title":"ROI\u6392\u5e8f\u6cd5","code":"roi","model":"4","url":"\/rrpl\/roi.html"},{"practice":"295","treeID":"11","treeType":"demand","title":"How Now Wow\u77e9\u9635","code":"how-now-wow","model":"4","url":"\/rrpl\/how-now-wow.html"},{"practice":"19","treeID":"11","treeType":"demand","title":"MoSCoW\u6392\u5e8f\u6cd5","code":"moscow","model":"4","url":"\/rrpl\/moscow.html"},{"practice":"25","treeID":"11","treeType":"demand","title":"RICE\u6392\u5e8f","code":"rice","model":"4","url":"\/rrpl\/rice.html"},{"practice":"23","treeID":"11","treeType":"demand","title":"Kano\u6a21\u578b","code":"kano-model","model":"4","url":"\/rrpl\/kano-model.html"},{"practice":"27","treeID":"11","treeType":"demand","title":"\u76f8\u5bf9\u6743\u91cd\u4f18\u5148\u7ea7\u6392\u5e8f","code":"relative-weighting","model":"4","url":"\/rrpl\/relative-weighting.html"},{"practice":"28","treeID":"11","treeType":"demand","title":"WSJF","code":"weighted-shortest-job-first","model":"4","url":"\/rrpl\/weighted-shortest-job-first.html"}]},{"title":"\u9700\u6c42\u4f30\u7b97","id":"8","code":"","children":[{"practice":"300","treeID":"8","treeType":"demand","title":"T-Shirt \u4f30\u7b97","code":"t-shirt","model":"4","url":"\/rrpl\/t-shirt.html"},{"practice":"305","treeID":"8","treeType":"demand","title":"\u5bbd\u5e26\u5fb7\u5c14\u83f2","code":"wideband-delphi","model":"4","url":"\/rrpl\/wideband-delphi.html"},{"practice":"24","treeID":"8","treeType":"demand","title":"\u6545\u4e8b\u70b9","code":"story-point","model":"4","url":"\/rrpl\/story-point.html"},{"practice":"29","treeID":"8","treeType":"demand","title":"\u4eb2\u548c\u4f30\u7b97","code":"affinity-estimation","model":"4","url":"\/rrpl\/affinity-estimation.html"},{"practice":"16","treeID":"8","treeType":"demand","title":"\u8ba1\u5212\u6251\u514b","code":"planning-poker","model":"4","url":"\/rrpl\/planning-poker.html"}]},{"title":"\u9700\u6c42\u76d1\u63a7","id":"9","code":"","children":[{"practice":"240","treeID":"9","treeType":"demand","title":"\u654f\u6377\u9700\u6c42\u53d8\u66f4\u7ba1\u7406","code":"agile-req-change-management","model":"4","url":"\/rrpl\/agile-req-change-management.html"},{"practice":"17","treeID":"9","treeType":"demand","title":"\u9700\u6c42\u8ddf\u8e2a\u77e9\u9635","code":"requirement-traceability","model":"4","url":"\/rrpl\/requirement-traceability.html"},{"practice":"20","treeID":"9","treeType":"demand","title":"\u53d8\u66f4\u63a7\u5236\u59d4\u5458\u4f1a","code":"change-control-board","model":"4","url":"\/rrpl\/change-control-board.html"}]},{"title":"\u89e3\u51b3\u65b9\u6848\u8bc4\u4ef7","id":"10","code":"","children":[{"practice":"21","treeID":"10","treeType":"demand","title":"\u793c\u5bbeMVP","code":"concierge-mvp","model":"4","url":"\/rrpl\/concierge-mvp.html"},{"practice":"26","treeID":"10","treeType":"demand","title":"\u7eff\u91ce\u4ed9\u8e2aMVP","code":"wizard-of-oz-mvp","model":"4","url":"\/rrpl\/wizard-of-oz-mvp.html"},{"practice":"30","treeID":"10","treeType":"demand","title":"\u7740\u9646\u9875MVP","code":"landing-page-mvp","model":"4","url":"\/rrpl\/landing-page-mvp.html"},{"practice":"31","treeID":"10","treeType":"demand","title":"\u7535\u5b50\u90ae\u4ef6MVP","code":"email-mvp","model":"4","url":"\/rrpl\/email-mvp.html"},{"practice":"32","treeID":"10","treeType":"demand","title":"\u788e\u7247\u62fc\u63a5MVP","code":"piecemeal-mvp","model":"4","url":"\/rrpl\/piecemeal-mvp.html"},{"practice":"34","treeID":"10","treeType":"demand","title":"\u4f17\u7b79MVP","code":"crowdfunding-mvp","model":"4","url":"\/rrpl\/crowdfunding-mvp.html"},{"practice":"36","treeID":"10","treeType":"demand","title":"\u5355\u4e00\u7279\u6027MVP","code":"single-feature-mvp","model":"4","url":"\/rrpl\/single-feature-mvp.html"},{"practice":"37","treeID":"10","treeType":"demand","title":"A\/B\u6d4b\u8bd5","code":"ab-testing","model":"4","url":"\/rrpl\/ab-testing.html"}]}]},{"title":"\u8bbe\u8ba1","id":"31","open":true,"code":"design","children":[{"title":"UX\u8bbe\u8ba1","id":"53","code":"","children":[{"practice":"114","treeID":"53","treeType":"design","title":"\u90bb\u8fd1\u5173\u7cfb","code":"proximity","model":"4","url":"\/rrpl\/proximity.html"},{"practice":"113","treeID":"53","treeType":"design","title":"\u5bf9\u9f50","code":"align","model":"4","url":"\/rrpl\/align.html"},{"practice":"112","treeID":"53","treeType":"design","title":"\u5927\u5c0f\u5bf9\u6bd4","code":"size-contrast","model":"4","url":"\/rrpl\/size-contrast.html"},{"practice":"111","treeID":"53","treeType":"design","title":"\u8272\u5f69\u5bf9\u6bd4","code":"color-contrast","model":"4","url":"\/rrpl\/color-contrast.html"},{"practice":"110","treeID":"53","treeType":"design","title":"\u7559\u767d","code":"white-space","model":"4","url":"\/rrpl\/white-space.html"}]},{"title":"\u8f6f\u4ef6\u8bbe\u8ba1","id":"75","code":"","children":[{"practice":"256","treeID":"75","treeType":"design","title":"\u6982\u8981\u8bbe\u8ba1\u8bf4\u660e\u4e66","code":"high-level-req-design-doc","model":"4","url":"\/rrpl\/high-level-req-design-doc.html"},{"practice":"255","treeID":"75","treeType":"design","title":"\u8be6\u7ec6\u8bbe\u8ba1\u8bf4\u660e\u4e66","code":"detailed-req-design-doc","model":"4","url":"\/rrpl\/detailed-req-design-doc.html"}]},{"title":"\u521b\u65b0\u8bbe\u8ba1","id":"79","code":"","children":[{"practice":"302","treeID":"79","treeType":"design","title":"SCAMPER\u521b\u65b0\u6cd5","code":"scamper","model":"4","url":"\/rrpl\/scamper.html"}]}]},{"title":"\u5f00\u53d1","id":"16","open":true,"code":"dev","children":[{"title":"\u7f16\u7801","id":"12","code":"","children":[{"practice":"259","treeID":"12","treeType":"dev","title":"\u56e2\u961f\u96c6\u4f53\u7f16\u7a0b","code":"mob-programming","model":"4","url":"\/rrpl\/mob-programming.html"},{"practice":"241","treeID":"12","treeType":"dev","title":"\u524d\u540e\u7aef\u5206\u79bb","code":"front-back-end-separate","model":"4","url":"\/rrpl\/front-back-end-separate.html"},{"practice":"239","treeID":"12","treeType":"dev","title":"\u4ee3\u7801\u63d0\u4ea4\u7684\u6ce8\u91ca\u683c\u5f0f","code":"code-commit-comments","model":"4","url":"\/rrpl\/code-commit-comments.html"},{"practice":"195","treeID":"12","treeType":"dev","title":"\u9a8c\u6536\u6d4b\u8bd5\u9a71\u52a8\u5f00\u53d1","code":"acceptance-test-driven-development","model":"4","url":"\/rrpl\/acceptance-test-driven-development.html"},{"practice":"117","treeID":"12","treeType":"dev","title":"\u5c0f\u9ec4\u9e2d\u8c03\u8bd5\u6cd5","code":"rubber-duck-debugging","model":"4","url":"\/rrpl\/rubber-duck-debugging.html"},{"practice":"72","treeID":"12","treeType":"dev","title":"\u63a2\u9488","code":"spike","model":"4","url":"\/rrpl\/spike.html"},{"practice":"67","treeID":"12","treeType":"dev","title":"\u96c6\u4f53\u4ee3\u7801\u6240\u6709\u6743","code":"code-collective-ownership","model":"4","url":"\/rrpl\/code-collective-ownership.html"},{"practice":"57","treeID":"12","treeType":"dev","title":"\u884c\u4e3a\u9a71\u52a8\u5f00\u53d1","code":"behavior-driven-development","model":"4","url":"\/rrpl\/behavior-driven-development.html"},{"practice":"39","treeID":"12","treeType":"dev","title":"\u6d4b\u8bd5\u9a71\u52a8\u5f00\u53d1","code":"test-driven-development","model":"4","url":"\/rrpl\/test-driven-development.html"},{"practice":"41","treeID":"12","treeType":"dev","title":"\u7ed3\u5bf9\u7f16\u7a0b","code":"pair-programming","model":"4","url":"\/rrpl\/pair-programming.html"},{"practice":"45","treeID":"12","treeType":"dev","title":"\u7f16\u7801\u89c4\u8303","code":"coding-standards","model":"4","url":"\/rrpl\/coding-standards.html"},{"practice":"40","treeID":"12","treeType":"dev","title":"\u91cd\u6784","code":"refactoring","model":"4","url":"\/rrpl\/refactoring.html"}]},{"title":"\u4ee3\u7801\u8bc4\u5ba1","id":"14","code":"","children":[{"practice":"55","treeID":"14","treeType":"dev","title":"\u4ee3\u7801\u8bc4\u5ba1","code":"code-review","model":"4","url":"\/rrpl\/code-review.html"},{"practice":"54","treeID":"14","treeType":"dev","title":"\u9759\u6001\u4ee3\u7801\u5206\u6790","code":"static-code-analysis","model":"4","url":"\/rrpl\/static-code-analysis.html"}]},{"title":"\u5206\u652f\u7b56\u7565","id":"15","code":"","children":[{"practice":"258","treeID":"15","treeType":"dev","title":"\u4e3b\u5e72\u5f00\u53d1","code":"main-branch-dev","model":"4","url":"\/rrpl\/main-branch-dev.html"},{"practice":"192","treeID":"15","treeType":"dev","title":"GitLab flow","code":"gitlab-flow","model":"4","url":"\/rrpl\/gitlab-flow.html"},{"practice":"190","treeID":"15","treeType":"dev","title":"Git Flow","code":"git-flow","model":"4","url":"\/rrpl\/git-flow.html"},{"practice":"78","treeID":"15","treeType":"dev","title":"\u6309\u529f\u80fd\u7279\u6027\u521b\u5efa\u5206\u652f","code":"branch-by-feature","model":"4","url":"\/rrpl\/branch-by-feature.html"},{"practice":"64","treeID":"15","treeType":"dev","title":"\u6309\u53d1\u5e03\u521b\u5efa\u5206\u652f","code":"branch-for-release","model":"4","url":"\/rrpl\/branch-for-release.html"}]},{"title":"\u6301\u7eed\u96c6\u6210","id":"16","code":"","children":[{"practice":"89","treeID":"16","treeType":"dev","title":"\u9010\u7279\u6027\u96c6\u6210","code":"integration-per-feature","model":"4","url":"\/rrpl\/integration-per-feature.html"},{"practice":"46","treeID":"16","treeType":"dev","title":"\u6301\u7eed\u96c6\u6210","code":"continuous-integration","model":"4","url":"\/rrpl\/continuous-integration.html"},{"practice":"42","treeID":"16","treeType":"dev","title":"\u6bcf\u65e5\u6784\u5efa","code":"daily-build","model":"4","url":"\/rrpl\/daily-build.html"}]},{"title":"\u5f00\u53d1\u51b3\u7b56","id":"83","code":"","children":[{"practice":"416","treeID":"83","treeType":"dev","title":"\u539f\u578b\u51b3\u7b56","code":"prototype-decision","model":"4","url":"\/rrpl\/prototype-decision.html"}]}]},{"title":"\u6d4b\u8bd5","id":"17","open":true,"code":"testing","children":[{"title":"\u6d4b\u8bd5\u8fc7\u7a0b","id":"17","code":"","children":[{"practice":"144","treeID":"17","treeType":"testing","title":"\u6d4b\u8bd5\u8986\u76d6\u7387","code":"test-coverage","model":"4","url":"\/rrpl\/test-coverage.html"},{"practice":"189","treeID":"17","treeType":"testing","title":"\u6d4b\u8bd5\u7528\u4f8b\u8bbe\u8ba1","code":"test-case-design","model":"4","url":"\/rrpl\/test-case-design.html"},{"practice":"98","treeID":"17","treeType":"testing","title":"\u7f3a\u9677\u62a5\u544a","code":"bug-report","model":"4","url":"\/rrpl\/bug-report.html"},{"practice":"91","treeID":"17","treeType":"testing","title":"\u6d4b\u8bd5\u7b56\u7565","code":"test-strategy","model":"4","url":"\/rrpl\/test-strategy.html"},{"practice":"92","treeID":"17","treeType":"testing","title":"\u6d4b\u8bd5\u8ba1\u5212","code":"test-plan","model":"4","url":"\/rrpl\/test-plan.html"}]},{"title":"\u6d4b\u8bd5\u5206\u7c7b","id":"18","code":"","children":[{"practice":"257","treeID":"18","treeType":"testing","title":"\u5168\u94fe\u8def\u538b\u6d4b","code":"full-link-pressure-testing","model":"4","url":"\/rrpl\/full-link-pressure-testing.html"},{"practice":"244","treeID":"18","treeType":"testing","title":"UI\u6d4b\u8bd5","code":"ui-testing","model":"4","url":"\/rrpl\/ui-testing.html"},{"practice":"243","treeID":"18","treeType":"testing","title":"\u81ea\u52a8\u5316\u6d4b\u8bd5","code":"automated-testing","model":"4","url":"\/rrpl\/automated-testing.html"},{"practice":"242","treeID":"18","treeType":"testing","title":"\u6e17\u900f\u6d4b\u8bd5","code":"penetration-testing","model":"4","url":"\/rrpl\/penetration-testing.html"},{"practice":"198","treeID":"18","treeType":"testing","title":"\u6027\u80fd\u6d4b\u8bd5","code":"performance-test","model":"4","url":"\/rrpl\/performance-test.html"},{"practice":"194","treeID":"18","treeType":"testing","title":"\u63a2\u7d22\u5f0f\u6d4b\u8bd5","code":"exploratory-testing","model":"4","url":"\/rrpl\/exploratory-testing.html"},{"practice":"191","treeID":"18","treeType":"testing","title":"\u6545\u969c\u6f14\u7ec3","code":"fault-test","model":"4","url":"\/rrpl\/fault-test.html"},{"practice":"187","treeID":"18","treeType":"testing","title":"\u517c\u5bb9\u6027\u6d4b\u8bd5","code":"compatibility-testing","model":"4","url":"\/rrpl\/compatibility-testing.html"},{"practice":"107","treeID":"18","treeType":"testing","title":"\u56de\u5f52\u6d4b\u8bd5","code":"regression-test","model":"4","url":"\/rrpl\/regression-test.html"},{"practice":"106","treeID":"18","treeType":"testing","title":"\u7cfb\u7edf\u96c6\u6210\u6d4b\u8bd5","code":"system-integration-test","model":"4","url":"\/rrpl\/system-integration-test.html"},{"practice":"105","treeID":"18","treeType":"testing","title":"\u7528\u6237\u9a8c\u6536\u6d4b\u8bd5","code":"user-acceptance-test","model":"4","url":"\/rrpl\/user-acceptance-test.html"},{"practice":"104","treeID":"18","treeType":"testing","title":"\u5355\u5143\u6d4b\u8bd5","code":"unit-test","model":"4","url":"\/rrpl\/unit-test.html"},{"practice":"103","treeID":"18","treeType":"testing","title":"\u5192\u70df\u6d4b\u8bd5","code":"smoke-testing","model":"4","url":"\/rrpl\/smoke-testing.html"}]}]},{"title":"\u90e8\u7f72\u548c\u53d1\u5e03","id":"20","open":true,"code":"release","children":[{"title":"\u53d1\u5e03\u7b56\u7565","id":"26","code":"","children":[{"practice":"100","treeID":"26","treeType":"release","title":"\u91d1\u4e1d\u96c0\u53d1\u5e03","code":"canary-release","model":"4","url":"\/rrpl\/canary-release.html"},{"practice":"99","treeID":"26","treeType":"release","title":"\u84dd\u7eff\u90e8\u7f72","code":"blue-green-deployment","model":"4","url":"\/rrpl\/blue-green-deployment.html"},{"practice":"90","treeID":"26","treeType":"release","title":"\u9010\u7279\u6027\u53d1\u5e03","code":"release-per-feature","model":"4","url":"\/rrpl\/release-per-feature.html"},{"practice":"77","treeID":"26","treeType":"release","title":"\u7070\u5ea6\u53d1\u5e03","code":"dark-launch","model":"4","url":"\/rrpl\/dark-launch.html"}]},{"title":"\u53d1\u5e03\u5b9e\u65bd","id":"27","code":"","children":[{"practice":"247","treeID":"27","treeType":"release","title":"\u5bf9\u4e0d\u540c\u73af\u5883\u91c7\u7528\u540c\u4e00\u90e8\u7f72\u65b9\u5f0f","code":"same-deployment-method-for-diff-envs","model":"4","url":"\/rrpl\/same-deployment-method-for-diff-envs.html"},{"practice":"101","treeID":"27","treeType":"release","title":"\u90e8\u7f72\u4eba\u5458\u53c2\u4e0e\u8bbe\u8ba1\u90e8\u7f72\u6d41\u7a0b","code":"deployer-join-process-creation","model":"4","url":"\/rrpl\/deployer-join-process-creation.html"}]}]},{"title":"\u8fd0\u7ef4","id":"21","open":true,"code":"operation","children":[{"title":"\u57fa\u7840\u8bbe\u65bd\u670d\u52a1","id":"60","code":"","children":[{"practice":"95","treeID":"60","treeType":"operation","title":"\u521b\u5efa\u5171\u4eab\u670d\u52a1","code":"create-shared-service","model":"4","url":"\/rrpl\/create-shared-service.html"}]},{"title":"\u4eba\u5458\u914d\u5907","id":"61","code":"","children":[{"practice":"97","treeID":"61","treeType":"operation","title":"\u4e3a\u6bcf\u4e2a\u5f00\u53d1\u56e2\u961f\u5206\u6d3e\u8fd0\u7ef4\u8054\u7edc\u4eba","code":"assign-ops-contact-to-dev-team","model":"4","url":"\/rrpl\/assign-ops-contact-to-dev-team.html"},{"practice":"96","treeID":"61","treeType":"operation","title":"\u8fd0\u7ef4\u5de5\u7a0b\u5e08\u878d\u5165\u5f00\u53d1\u56e2\u961f","code":"ops-engineer-join-dev-team","model":"4","url":"\/rrpl\/ops-engineer-join-dev-team.html"}]}]},{"title":"\u5ea6\u91cf","id":"23","open":true,"code":"measure","children":[{"title":"\u4ea4\u4ed8\u4ef7\u503c","id":"24","code":"","children":[{"practice":"179","treeID":"24","treeType":"measure","title":"\u5ba2\u6237\u6ee1\u610f\u7387","code":"customer-satisfaction-rate","model":"4","url":"\/rrpl\/customer-satisfaction-rate.html"},{"practice":"181","treeID":"24","treeType":"measure","title":"\u5ba2\u6237\u95ee\u9898\u54cd\u5e94\u65f6\u957f","code":"customer-question-response-time","model":"4","url":"\/rrpl\/customer-question-response-time.html"},{"practice":"182","treeID":"24","treeType":"measure","title":"\u5ba2\u6237\u95ee\u9898\u89e3\u51b3\u65f6\u957f","code":"customer-problem-resolution-time","model":"4","url":"\/rrpl\/customer-problem-resolution-time.html"},{"practice":"170","treeID":"24","treeType":"measure","title":"\u7528\u6237\u589e\u957f\u7387","code":"user-growth-rate","model":"4","url":"\/rrpl\/user-growth-rate.html"},{"practice":"171","treeID":"24","treeType":"measure","title":"\u5e02\u573a\u5360\u6709\u7387","code":"market-share","model":"4","url":"\/rrpl\/market-share.html"},{"practice":"121","treeID":"24","treeType":"measure","title":"\u8425\u6536\u589e\u957f\u7387","code":"revenue-growth-rate","model":"4","url":"\/rrpl\/revenue-growth-rate.html"},{"practice":"120","treeID":"24","treeType":"measure","title":"\u4ea7\u54c1\u4ef7\u503c\u8fbe\u6210\u7387","code":"achievement-rate-of-product-value","model":"4","url":"\/rrpl\/achievement-rate-of-product-value.html"}]},{"title":"\u4ea4\u4ed8\u901f\u7387","id":"25","code":"","children":[{"practice":"172","treeID":"25","treeType":"measure","title":"\u9700\u6c42\u9897\u7c92\u5ea6","code":"granularity-of-requirements","model":"4","url":"\/rrpl\/granularity-of-requirements.html"},{"practice":"126","treeID":"25","treeType":"measure","title":"\u7ec4\u4ef6\u6309\u65f6\u4ea4\u4ed8\u7387","code":"on-time-delivery-of-components","model":"4","url":"\/rrpl\/on-time-delivery-of-components.html"},{"practice":"127","treeID":"25","treeType":"measure","title":"\u7ec4\u4ef6\u590d\u7528\u7387","code":"component-reuse-rate","model":"4","url":"\/rrpl\/component-reuse-rate.html"},{"practice":"128","treeID":"25","treeType":"measure","title":"\u63a5\u53e3\u53d8\u66f4\u7387","code":"interface-change-rate","model":"4","url":"\/rrpl\/interface-change-rate.html"},{"practice":"129","treeID":"25","treeType":"measure","title":"\u4ee3\u7801\u63d0\u4ea4\u9891\u7387","code":"code-submission-frequency","model":"4","url":"\/rrpl\/code-submission-frequency.html"},{"practice":"122","treeID":"25","treeType":"measure","title":"\u5f00\u53d1\u4ea4\u4ed8\u5468\u671f","code":"development-lead-time","model":"4","url":"\/rrpl\/development-lead-time.html"},{"practice":"123","treeID":"25","treeType":"measure","title":"\u91cc\u7a0b\u7891\u504f\u5dee","code":"milestone-deviation","model":"4","url":"\/rrpl\/milestone-deviation.html"},{"practice":"124","treeID":"25","treeType":"measure","title":"\u9700\u6c42\u6309\u65f6\u4ea4\u4ed8\u7387","code":"demand-on-time-delivery-rate","model":"4","url":"\/rrpl\/demand-on-time-delivery-rate.html"},{"practice":"125","treeID":"25","treeType":"measure","title":"\u9700\u6c42\u53d8\u66f4\u7387","code":"demand-change-rate","model":"4","url":"\/rrpl\/demand-change-rate.html"},{"practice":"119","treeID":"25","treeType":"measure","title":"\u9700\u6c42\u4ea4\u4ed8\u5468\u671f","code":"requirements-lead-time","model":"4","url":"\/rrpl\/requirements-lead-time.html"},{"practice":"82","treeID":"25","treeType":"measure","title":"\u6d41\u52a8\u901f\u7387","code":"flow-velocity","model":"4","url":"\/rrpl\/flow-velocity.html"},{"practice":"83","treeID":"25","treeType":"measure","title":"\u6d41\u52a8\u65f6\u95f4","code":"flow-time","model":"4","url":"\/rrpl\/flow-time.html"},{"practice":"85","treeID":"25","treeType":"measure","title":"\u6d41\u52a8\u6548\u7387","code":"flow-efficiency","model":"4","url":"\/rrpl\/flow-efficiency.html"},{"practice":"86","treeID":"25","treeType":"measure","title":"\u6d41\u52a8\u5206\u5e03","code":"flow-distribution","model":"4","url":"\/rrpl\/flow-distribution.html"},{"practice":"80","treeID":"25","treeType":"measure","title":"\u8fed\u4ee3\u901f\u7387","code":"iteration-velocity","model":"4","url":"\/rrpl\/iteration-velocity.html"}]},{"title":"\u4ea4\u4ed8\u8d28\u91cf","id":"64","code":"","children":[{"practice":"173","treeID":"64","treeType":"measure","title":"\u5e73\u5747\u6545\u969c\u95f4\u9694\u65f6\u957f","code":"mean-time-between-failures","model":"4","url":"\/rrpl\/mean-time-between-failures.html"},{"practice":"174","treeID":"64","treeType":"measure","title":"\u5e73\u5747\u6545\u969c\u4fee\u590d\u65f6\u957f","code":"mean-time-to-repair","model":"4","url":"\/rrpl\/mean-time-to-repair.html"},{"practice":"131","treeID":"64","treeType":"measure","title":"\u6f14\u793a\u9891\u7387","code":"demo-frequency","model":"4","url":"\/rrpl\/demo-frequency.html"},{"practice":"130","treeID":"64","treeType":"measure","title":"\u6d4b\u8bd5\u4e00\u6b21\u901a\u8fc7\u7387","code":"test-pass-rate","model":"4","url":"\/rrpl\/test-pass-rate.html"},{"practice":"132","treeID":"64","treeType":"measure","title":"\u9700\u6c42\u8bc4\u5ba1\u7f3a\u9677\u5bc6\u5ea6","code":"requirements-review-defect-density","model":"4","url":"\/rrpl\/requirements-review-defect-density.html"},{"practice":"133","treeID":"64","treeType":"measure","title":"\u9700\u6c42\u8bc4\u5ba1\u901a\u8fc7\u7387","code":"requirements-review-pass-rate","model":"4","url":"\/rrpl\/requirements-review-pass-rate.html"},{"practice":"134","treeID":"64","treeType":"measure","title":"\u8bbe\u8ba1\u8bc4\u5ba1\u7f3a\u9677\u5bc6\u5ea6","code":"design-review-defect-density","model":"4","url":"\/rrpl\/design-review-defect-density.html"},{"practice":"135","treeID":"64","treeType":"measure","title":"\u8bbe\u8ba1\u8bc4\u5ba1\u901a\u8fc7\u7387","code":"desig-review-pass-rate","model":"4","url":"\/rrpl\/desig-review-pass-rate.html"},{"practice":"136","treeID":"64","treeType":"measure","title":"\u4ee3\u7801\u91cd\u590d\u7387","code":"code-repetition-rate","model":"4","url":"\/rrpl\/code-repetition-rate.html"},{"practice":"137","treeID":"64","treeType":"measure","title":"\u5708\u590d\u6742\u5ea6","code":"cyclomatic-complexity","model":"4","url":"\/rrpl\/cyclomatic-complexity.html"},{"practice":"138","treeID":"64","treeType":"measure","title":"\u9759\u6001\u626b\u63cf\u7f3a\u9677\u5bc6\u5ea6","code":"static-scan-defect-density","model":"4","url":"\/rrpl\/static-scan-defect-density.html"},{"practice":"139","treeID":"64","treeType":"measure","title":"\u4ee3\u7801\u8d70\u67e5\u7f3a\u9677\u5bc6\u5ea6","code":"code-walkthrough-defect-density","model":"4","url":"\/rrpl\/code-walkthrough-defect-density.html"},{"practice":"140","treeID":"64","treeType":"measure","title":"\u4ee3\u7801\u8bc4\u5ba1\u8f6e\u6570","code":"number-of-code-review-rounds","model":"4","url":"\/rrpl\/number-of-code-review-rounds.html"},{"practice":"141","treeID":"64","treeType":"measure","title":"\u63d0\u6d4b\u6210\u529f\u7387","code":"test-success-rate","model":"4","url":"\/rrpl\/test-success-rate.html"},{"practice":"142","treeID":"64","treeType":"measure","title":"\u6d4b\u8bd5\u7528\u4f8b\u8bc4\u5ba1\u7f3a\u9677\u5bc6\u5ea6","code":"use-case-review-defect-density","model":"4","url":"\/rrpl\/use-case-review-defect-density.html"},{"practice":"143","treeID":"64","treeType":"measure","title":"\u6d4b\u8bd5\u7528\u4f8b\u8bc4\u5ba1\u901a\u8fc7\u7387","code":"use-case-review-pass-rate","model":"4","url":"\/rrpl\/use-case-review-pass-rate.html"},{"practice":"145","treeID":"64","treeType":"measure","title":"\u6d4b\u8bd5\u7f3a\u9677\u5bc6\u5ea6","code":"test-defect-density","model":"4","url":"\/rrpl\/test-defect-density.html"},{"practice":"147","treeID":"64","treeType":"measure","title":"\u53d1\u5e03\u6210\u529f\u7387","code":"release-success-rate","model":"4","url":"\/rrpl\/release-success-rate.html"},{"practice":"148","treeID":"64","treeType":"measure","title":"\u7cfb\u7edf\u53ef\u7528\u6027","code":"system-availability","model":"4","url":"\/rrpl\/system-availability.html"},{"practice":"149","treeID":"64","treeType":"measure","title":"\u7ebf\u4e0a\u6545\u969c\u6570","code":"number-of-online-failures","model":"4","url":"\/rrpl\/number-of-online-failures.html"},{"practice":"88","treeID":"64","treeType":"measure","title":"\u5e73\u5747\u670d\u52a1\u6062\u590d\u65f6\u95f4","code":"mean-time-to-recovery","model":"4","url":"\/rrpl\/mean-time-to-recovery.html"},{"practice":"68","treeID":"64","treeType":"measure","title":"\u4ee3\u7801\u8986\u76d6\u7387","code":"code-coverage","model":"4","url":"\/rrpl\/code-coverage.html"},{"practice":"87","treeID":"64","treeType":"measure","title":"\u7f3a\u9677\u9003\u9038\u7387","code":"defect-escape-percentage","model":"4","url":"\/rrpl\/defect-escape-percentage.html"}]},{"title":"\u4ea4\u4ed8\u6210\u672c","id":"65","code":"","children":[{"practice":"175","treeID":"65","treeType":"measure","title":"\u4eba\u529b\u6210\u672c","code":"labor-costs","model":"4","url":"\/rrpl\/labor-costs.html"},{"practice":"176","treeID":"65","treeType":"measure","title":"\u4eba\u5458\u6d41\u52a8\u7387","code":"turnover-rate","model":"4","url":"\/rrpl\/turnover-rate.html"},{"practice":"183","treeID":"65","treeType":"measure","title":"\u5de5\u4f5c\u91cf\u5206\u5e03","code":"workload-distribution","model":"4","url":"\/rrpl\/workload-distribution.html"},{"practice":"150","treeID":"65","treeType":"measure","title":"\u9884\u7b97\u6267\u884c\u7387","code":"budget-execution-rate","model":"4","url":"\/rrpl\/budget-execution-rate.html"},{"practice":"151","treeID":"65","treeType":"measure","title":"\u975e\u4eba\u529b\u6210\u672c","code":"non-human-cost","model":"4","url":"\/rrpl\/non-human-cost.html"},{"practice":"152","treeID":"65","treeType":"measure","title":"\u6280\u80fd\u6307\u6570","code":"skill-index","model":"4","url":"\/rrpl\/skill-index.html"}]},{"title":"\u4ea4\u4ed8\u80fd\u529b","id":"66","code":"","children":[{"practice":"154","treeID":"66","treeType":"measure","title":"\u6784\u5efa\u9891\u7387","code":"build-frequency","model":"4","url":"\/rrpl\/build-frequency.html"},{"practice":"155","treeID":"66","treeType":"measure","title":"\u6784\u5efa\u65f6\u957f","code":"build-time","model":"4","url":"\/rrpl\/build-time.html"},{"practice":"156","treeID":"66","treeType":"measure","title":"\u6784\u5efa\u6210\u529f\u7387","code":"build-success-rate","model":"4","url":"\/rrpl\/build-success-rate.html"},{"practice":"157","treeID":"66","treeType":"measure","title":"\u7f3a\u9677\u91cd\u5f00\u7387","code":"defect-reopen-rate","model":"4","url":"\/rrpl\/defect-reopen-rate.html"},{"practice":"158","treeID":"66","treeType":"measure","title":" \u6d4b\u8bd5\u81ea\u52a8\u5316\u7387","code":"test-automation-rate","model":"4","url":"\/rrpl\/test-automation-rate.html"},{"practice":"159","treeID":"66","treeType":"measure","title":"\u73af\u5883\u6574\u5907\u65f6\u957f","code":"environmental-preparation-time","model":"4","url":"\/rrpl\/environmental-preparation-time.html"},{"practice":"160","treeID":"66","treeType":"measure","title":"\u90e8\u7f72\u9891\u7387","code":"deployment-frequency","model":"4","url":"\/rrpl\/deployment-frequency.html"},{"practice":"161","treeID":"66","treeType":"measure","title":"\u90e8\u7f72\u65f6\u957f","code":"deployment-time","model":"4","url":"\/rrpl\/deployment-time.html"},{"practice":"162","treeID":"66","treeType":"measure","title":"\u90e8\u7f72\u6210\u529f\u7387","code":"deployment-success-rate","model":"4","url":"\/rrpl\/deployment-success-rate.html"},{"practice":"163","treeID":"66","treeType":"measure","title":"\u56de\u6eda\u6210\u529f\u7387","code":"rollback-success-rate","model":"4","url":"\/rrpl\/rollback-success-rate.html"},{"practice":"164","treeID":"66","treeType":"measure","title":"\u53d1\u5e03\u9891\u7387","code":"release-frequency","model":"4","url":"\/rrpl\/release-frequency.html"},{"practice":"165","treeID":"66","treeType":"measure","title":"\u53d1\u5e03\u65f6\u957f","code":"release-time","model":"4","url":"\/rrpl\/release-time.html"},{"practice":"84","treeID":"66","treeType":"measure","title":"\u6d41\u52a8\u8d1f\u8f7d","code":"flow-load","model":"4","url":"\/rrpl\/flow-load.html"}]},{"title":"\u6301\u7eed\u6539\u8fdb","id":"67","code":"","children":[{"practice":"177","treeID":"67","treeType":"measure","title":"\u5ba1\u8ba1\u9891\u7387","code":"audit-frequency","model":"4","url":"\/rrpl\/audit-frequency.html"},{"practice":"178","treeID":"67","treeType":"measure","title":"\u8fc7\u7a0b\u7b26\u5408\u5ea6","code":"process-compliance","model":"4","url":"\/rrpl\/process-compliance.html"},{"practice":"166","treeID":"67","treeType":"measure","title":"\u6539\u8fdb\u6548\u679c\u8bc4\u4ef7","code":"improvement-effect-evaluation","model":"4","url":"\/rrpl\/improvement-effect-evaluation.html"},{"practice":"167","treeID":"67","treeType":"measure","title":"\u4e13\u9879\u6539\u8fdb\u5b8c\u6210\u7387","code":"special-improvement-completion-rate","model":"4","url":"\/rrpl\/special-improvement-completion-rate.html"},{"practice":"168","treeID":"67","treeType":"measure","title":"\u5ba1\u8ba1\u95ee\u9898\u5173\u95ed\u7387","code":"audit-question-closure-rate","model":"4","url":"\/rrpl\/audit-question-closure-rate.html"}]},{"title":"\u7efc\u5408\u5ea6\u91cf","id":"68","code":"","children":[{"practice":"108","treeID":"68","treeType":"measure","title":"\u9879\u76ee\u5065\u5eb7\u6307\u6570","code":"project-healthy-index","model":"4","url":"\/rrpl\/project-healthy-index.html"}]},{"title":"\u6210\u719f\u5ea6\u8bc4\u4f30","id":"70","code":"","children":[{"practice":"293","treeID":"70","treeType":"measure","title":"Nokia Test","code":"nokia-test-assessment","model":"4","url":"\/rrpl\/nokia-test-assessment.html"}]}]},{"title":"\u9879\u76ee\u7ba1\u7406","id":"24","open":true,"code":"pjm","children":[{"title":"\u6574\u5408\u7ba1\u7406","id":"31","code":"","children":[{"practice":"438","treeID":"31","treeType":"pjm","title":"KT\u51b3\u7b56\u6cd5","code":"kt","model":"4","url":"\/rrpl\/kt.html"},{"practice":"250","treeID":"31","treeType":"pjm","title":"\u9700\u6c42\u5efa\u8bae\u4e66\uff08RFP\uff09","code":"request-for-proposal","model":"4","url":"\/rrpl\/request-for-proposal.html"},{"practice":"249","treeID":"31","treeType":"pjm","title":"\u9879\u76ee\u7acb\u9879\u62a5\u544a","code":"project-initiation-report","model":"4","url":"\/rrpl\/project-initiation-report.html"},{"practice":"203","treeID":"31","treeType":"pjm","title":"\u786e\u5b9a\u8fed\u4ee3\u957f\u5ea6","code":"decide-iteration-length","model":"4","url":"\/rrpl\/decide-iteration-length.html"},{"practice":"201","treeID":"31","treeType":"pjm","title":"\u9879\u76ee\u5f00\u8e22\uff08kick-off\uff09\u4f1a\u8bae","code":"project-kick-off-meeting","model":"4","url":"\/rrpl\/project-kick-off-meeting.html"},{"practice":"199","treeID":"31","treeType":"pjm","title":"\u9879\u76ee\u7ba1\u7406\u8ba1\u5212","code":"project-management-plan","model":"4","url":"\/rrpl\/project-management-plan.html"},{"practice":"76","treeID":"31","treeType":"pjm","title":"\u9650\u5236\u5728\u5236\u54c1","code":"limit-work-in-progress","model":"4","url":"\/rrpl\/limit-work-in-progress.html"},{"practice":"74","treeID":"31","treeType":"pjm","title":"\u9879\u76ee\u7ae0\u7a0b","code":"project-charter","model":"4","url":"\/rrpl\/project-charter.html"}]},{"title":"\u8303\u56f4\u7ba1\u7406","id":"32","code":"","children":[{"practice":"437","treeID":"32","treeType":"pjm","title":"\u5de5\u4f5c\u5206\u89e3\u7ed3\u6784","code":"wbs","model":"4","url":"\/rrpl\/wbs.html"},{"practice":"237","treeID":"32","treeType":"pjm","title":"\u5de5\u4f5c\u8bf4\u660e\u4e66\uff08SOW\uff09","code":"statement-of-work","model":"4","url":"\/rrpl\/statement-of-work.html"}]},{"title":"\u8fdb\u5ea6\u7ba1\u7406","id":"33","code":"","children":[{"practice":"355","treeID":"33","treeType":"pjm","title":"\u4e09\u70b9\u4f30\u7b97","code":"pert","model":"4","url":"\/rrpl\/pert.html"},{"practice":"419","treeID":"33","treeType":"pjm","title":"\u725b\u76ae\u7eb8\u6cd5","code":"brown-papering","model":"4","url":"\/rrpl\/brown-papering.html"},{"practice":"75","treeID":"33","treeType":"pjm","title":"\u7d2f\u79ef\u6d41\u56fe","code":"cumulative-flow-diagram","model":"4","url":"\/rrpl\/cumulative-flow-diagram.html"},{"practice":"245","treeID":"33","treeType":"pjm","title":"\u7518\u7279\u56fe","code":"gantt-chart","model":"4","url":"\/rrpl\/gantt-chart.html"},{"practice":"5","treeID":"33","treeType":"pjm","title":"\u71c3\u5c3d\u56fe","code":"burn-down-chart","model":"4","url":"\/rrpl\/burn-down-chart.html"},{"practice":"188","treeID":"33","treeType":"pjm","title":"\u71c3\u8d77\u56fe","code":"burn-up-chart","model":"4","url":"\/rrpl\/burn-up-chart.html"},{"practice":"61","treeID":"33","treeType":"pjm","title":"\u6bcf\u65e5\u7ad9\u4f1a","code":"daily-standup","model":"4","url":"\/rrpl\/daily-standup.html"},{"practice":"52","treeID":"33","treeType":"pjm","title":"\u65f6\u95f4\u76d2","code":"time-boxing","model":"4","url":"\/rrpl\/time-boxing.html"}]},{"title":"\u6210\u672c\u7ba1\u7406","id":"34","code":"","children":[{"practice":"381","treeID":"34","treeType":"pjm","title":"\u6210\u672c\u6548\u76ca\u5206\u6790","code":"cost-benefit-analysis","model":"4","url":"\/rrpl\/cost-benefit-analysis.html"}]},{"title":"\u8d28\u91cf\u7ba1\u7406","id":"35","code":"","children":[{"practice":"436","treeID":"35","treeType":"pjm","title":"QFD\u6cd5","code":"qfd","model":"4","url":"\/rrpl\/qfd.html"},{"practice":"406","treeID":"35","treeType":"pjm","title":"PDCA\u5faa\u73af","code":"pdca","model":"4","url":"\/rrpl\/pdca.html"},{"practice":"421","treeID":"35","treeType":"pjm","title":"\u516d\u897f\u683c\u739b","code":"six-sigma","model":"4","url":"\/rrpl\/six-sigma.html"},{"practice":"391","treeID":"35","treeType":"pjm","title":"\u9c7c\u9aa8\u5206\u6790\u6cd5","code":"fishbone-analysis-method","model":"4","url":"\/rrpl\/fishbone-analysis-method.html"},{"practice":"390","treeID":"35","treeType":"pjm","title":"\u4eb2\u548c\u56fe","code":"affinity-diagram","model":"4","url":"\/rrpl\/affinity-diagram.html"},{"practice":"252","treeID":"35","treeType":"pjm","title":"\u8d28\u91cf\u8ba1\u5212","code":"quality-plan","model":"4","url":"\/rrpl\/quality-plan.html"},{"practice":"246","treeID":"35","treeType":"pjm","title":"\u8d28\u91cf\u5185\u5efa","code":"built-in-quality","model":"4","url":"\/rrpl\/built-in-quality.html"},{"practice":"186","treeID":"35","treeType":"pjm","title":"\u6d4b\u8bd5\u5de6\u79fb","code":"shift-left-testing","model":"4","url":"\/rrpl\/shift-left-testing.html"},{"practice":"58","treeID":"35","treeType":"pjm","title":"\u5c31\u7eea\u5b9a\u4e49","code":"definition-of-ready","model":"4","url":"\/rrpl\/definition-of-ready.html"},{"practice":"56","treeID":"35","treeType":"pjm","title":"\u5b8c\u6210\u7684\u5b9a\u4e49","code":"definition-of-done","model":"4","url":"\/rrpl\/definition-of-done.html"}]},{"title":"\u8d44\u6e90\u7ba1\u7406","id":"36","code":"","children":[{"practice":"238","treeID":"36","treeType":"pjm","title":"\u8d23\u4efb\u5206\u914d\u77e9\u9635\uff08RACI\uff09","code":"raci-matrix","model":"4","url":"\/rrpl\/raci-matrix.html"}]},{"title":"\u6c9f\u901a\u7ba1\u7406","id":"37","code":"","children":[{"practice":"253","treeID":"37","treeType":"pjm","title":"\u9879\u76ee\u6c9f\u901a\u8ba1\u5212","code":"project-communication-plan","model":"4","url":"\/rrpl\/project-communication-plan.html"}]},{"title":"\u98ce\u9669\u7ba1\u7406","id":"38","code":"","children":[{"practice":"429","treeID":"38","treeType":"pjm","title":"\u8499\u7279\u5361\u7f57\u6a21\u62df","code":"monte-carlo-imulation","model":"4","url":"\/rrpl\/monte-carlo-imulation.html"},{"practice":"428","treeID":"38","treeType":"pjm","title":"5W2H\u5206\u6790\u6cd5","code":"5w2h","model":"4","url":"\/rrpl\/5w2h.html"},{"practice":"413","treeID":"38","treeType":"pjm","title":"\u73ab\u7470\u56fe","code":"rose-diagram","model":"4","url":"\/rrpl\/rose-diagram.html"},{"practice":"400","treeID":"38","treeType":"pjm","title":"ABC\u5206\u6790\u6cd5","code":"abc","model":"4","url":"\/rrpl\/abc.html"},{"practice":"397","treeID":"38","treeType":"pjm","title":"STACEY\u77e9\u9635","code":"stacey","model":"4","url":"\/rrpl\/stacey.html"},{"practice":"382","treeID":"38","treeType":"pjm","title":"\u51b3\u7b56\u6811","code":"decision-tree","model":"4","url":"\/rrpl\/decision-tree.html"},{"practice":"298","treeID":"38","treeType":"pjm","title":"\u4fe1\u5fc3\u6295\u7968","code":"confidence-voting","model":"4","url":"\/rrpl\/confidence-voting.html"},{"practice":"306","treeID":"38","treeType":"pjm","title":"\u654f\u6377\u9700\u6c42\u4ea4\u4e92\u77e9\u9635","code":"Requirements-Interaction-Matrix","model":"4","url":"\/rrpl\/Requirements-Interaction-Matrix.html"},{"practice":"260","treeID":"38","treeType":"pjm","title":"ROAM\u677f","code":"roam-board","model":"4","url":"\/rrpl\/roam-board.html"}]},{"title":"\u91c7\u8d2d\u7ba1\u7406","id":"39","code":"","children":[{"title":"\u654f\u6377\u5408\u540c","id":"58","code":"","children":[{"practice":"116","treeID":"58","treeType":"pjm","title":"\u4e0d\u52b3\u800c\u83b7\uff0c\u53d8\u66f4\u514d\u8d39","code":"money-for-nothing-change-for-free","model":"4","url":"\/rrpl\/money-for-nothing-change-for-free.html"},{"practice":"115","treeID":"58","treeType":"pjm","title":"\u6eda\u52a8\u5408\u540c","code":"rolling-contracts","model":"4","url":"\/rrpl\/rolling-contracts.html"}]},{"title":"\u4f20\u7edf\u5408\u540c","id":"59","code":"","children":[]}]},{"title":"\u5229\u76ca\u76f8\u5173\u4eba\u7ba1\u7406","id":"40","code":"","children":[{"practice":"394","treeID":"40","treeType":"pjm","title":"\u51f8\u663e\u6a21\u578b","code":"salience-model","model":"4","url":"\/rrpl\/salience-model.html"},{"practice":"395","treeID":"40","treeType":"pjm","title":"\u6743\u529b\u5229\u76ca\u65b9\u683c","code":"power-interest-grid","model":"4","url":"\/rrpl\/power-interest-grid.html"},{"practice":"94","treeID":"40","treeType":"pjm","title":"\u5e72\u7cfb\u4eba\u767b\u8bb0\u518c","code":"stakeholder-register","model":"4","url":"\/rrpl\/stakeholder-register.html"}]},{"title":"\u53d8\u9769\u7ba1\u7406","id":"80","code":"","children":[{"practice":"396","treeID":"80","treeType":"pjm","title":"ADKAR\u53d8\u9769\u6a21\u578b","code":"adkar","model":"4","url":"\/rrpl\/adkar.html"},{"practice":"403","treeID":"80","treeType":"pjm","title":"\u52d2\u6e29\u7684\u53d8\u9769\u7ba1\u7406\u6a21\u578b","code":"lewin","model":"4","url":"\/rrpl\/lewin.html"}]},{"title":"\u76ee\u6807\u7ba1\u7406","id":"82","code":"","children":[{"practice":"411","treeID":"82","treeType":"pjm","title":"SMART\u539f\u5219","code":"smart","model":"4","url":"\/rrpl\/smart.html"}]},{"title":"\u65f6\u95f4\u7ba1\u7406","id":"84","code":"","children":[{"practice":"447","treeID":"84","treeType":"pjm","title":"\u9879\u76ee\u91cc\u7a0b\u7891","code":"project-milestone","model":"4","url":"\/rrpl\/project-milestone.html"},{"practice":"430","treeID":"84","treeType":"pjm","title":"CPM\u5173\u952e\u8def\u5f84\u6cd5","code":"critical-path-method","model":"4","url":"\/rrpl\/critical-path-method.html"}]},{"title":"\u8fc7\u7a0b\u7ba1\u7406","id":"85","code":"","children":[{"practice":"440","treeID":"85","treeType":"pjm","title":"EPG","code":"epg","model":"4","url":"\/rrpl\/epg.html"}]}]},{"title":"\u56e2\u961f\u7ba1\u7406","id":"25","open":true,"code":"teammgmt","children":[{"title":"\u56e2\u961f\u7ec4\u5efa","id":"49","code":"","children":[{"practice":"424","treeID":"49","treeType":"teammgmt","title":"PAEI\u7ba1\u7406\u89d2\u8272\u6a21\u578b","code":"paei","model":"4","url":"\/rrpl\/paei.html"},{"practice":"73","treeID":"49","treeType":"teammgmt","title":"\u540c\u5730\u56e2\u961f","code":"colocated-team","model":"4","url":"\/rrpl\/colocated-team.html"},{"practice":"62","treeID":"49","treeType":"teammgmt","title":"\u8de8\u804c\u80fd\u56e2\u961f","code":"cross-functional-team","model":"4","url":"\/rrpl\/cross-functional-team.html"}]},{"title":"\u56e2\u961f\u5efa\u8bbe","id":"47","code":"","children":[{"practice":"79","treeID":"47","treeType":"teammgmt","title":"\u68c9\u82b1\u7cd6\u6311\u6218","code":"marshmallow-challenge-game","model":"4","url":"\/rrpl\/marshmallow-challenge-game.html"}]},{"title":"\u56e2\u961f\u6fc0\u52b1","id":"48","code":"","children":[{"practice":"193","treeID":"48","treeType":"teammgmt","title":"\u5938\u5956\u76d2\u548c\u5938\u5956\u5361","code":"kudo-box-card","model":"4","url":"\/rrpl\/kudo-box-card.html"},{"practice":"180","treeID":"48","treeType":"teammgmt","title":"\u6388\u6743\u677f\u4e0e\u6388\u6743\u6251\u514b","code":"delegation-board-poker","model":"4","url":"\/rrpl\/delegation-board-poker.html"}]},{"title":"\u5f15\u5bfc\u6280\u672f","id":"76","code":"","children":[{"practice":"433","treeID":"76","treeType":"teammgmt","title":"\u516d\u9876\u601d\u7ef4\u5e3d\u6cd5","code":"six-thinking-hats","model":"4","url":"\/rrpl\/six-thinking-hats.html"},{"practice":"393","treeID":"76","treeType":"teammgmt","title":"\u60c5\u5883\u9886\u5bfc\u529b\u6a21\u578b","code":"situational-leadership","model":"4","url":"\/rrpl\/situational-leadership.html"},{"practice":"387","treeID":"76","treeType":"teammgmt","title":"GROW\u6a21\u578b","code":"grow","model":"4","url":"\/rrpl\/grow.html"},{"practice":"389","treeID":"76","treeType":"teammgmt","title":"\u5934\u8111\u98ce\u66b4\u6cd5","code":"brainstorming","model":"4","url":"\/rrpl\/brainstorming.html"},{"practice":"304","treeID":"76","treeType":"teammgmt","title":"\u7cbe\u76ca\u5496\u5561","code":"lean-coffee","model":"4","url":"\/rrpl\/lean-coffee.html"},{"practice":"287","treeID":"76","treeType":"teammgmt","title":"10-for-10 \u5934\u8111\u98ce\u66b4\u6cd5","code":"ten-for-ten-brainstorming","model":"4","url":"\/rrpl\/ten-for-ten-brainstorming.html"},{"practice":"286","treeID":"76","treeType":"teammgmt","title":"6-3-5 \u5934\u8111\u5199\u4f5c","code":"6-3-5-brainwriting","model":"4","url":"\/rrpl\/6-3-5-brainwriting.html"},{"practice":"266","treeID":"76","treeType":"teammgmt","title":"\u753b\u5eca\u6f2b\u6b65","code":"gallery-walk","model":"4","url":"\/rrpl\/gallery-walk.html"},{"practice":"263","treeID":"76","treeType":"teammgmt","title":"1-2-4-All","code":"1-2-4-all","model":"4","url":"\/rrpl\/1-2-4-all.html"},{"practice":"262","treeID":"76","treeType":"teammgmt","title":"\u4e16\u754c\u5496\u5561","code":"world-coffee","model":"4","url":"\/rrpl\/world-coffee.html"},{"practice":"261","treeID":"76","treeType":"teammgmt","title":"\u5f00\u653e\u7a7a\u95f4\u6280\u672f","code":"open-space-tech","model":"4","url":"\/rrpl\/open-space-tech.html"}]},{"title":"\u6301\u7eed\u6539\u8fdb","id":"77","code":"","children":[{"practice":"296","treeID":"77","treeType":"teammgmt","title":"4Ls\u56de\u987e","code":"4ls","model":"4","url":"\/rrpl\/4ls.html"},{"practice":"267","treeID":"77","treeType":"teammgmt","title":"\u6d77\u661f\u6cd5\u56de\u987e\u4f1a","code":"starfish-retrospective","model":"4","url":"\/rrpl\/starfish-retrospective.html"},{"practice":"265","treeID":"77","treeType":"teammgmt","title":"\u56de\u987e\u4f1a","code":"retrospective-meeting","model":"4","url":"\/rrpl\/retrospective-meeting.html"}]},{"title":"\u5de5\u4f5c\u6c47\u62a5","id":"78","code":"","children":[{"practice":"409","treeID":"78","treeType":"teammgmt","title":"SCQA\u6a21\u578b","code":"scqa","model":"4","url":"\/rrpl\/scqa.html"},{"practice":"408","treeID":"78","treeType":"teammgmt","title":"SCRTV\u6a21\u578b","code":"scrtv","model":"4","url":"\/rrpl\/scrtv.html"},{"practice":"407","treeID":"78","treeType":"teammgmt","title":"FFC\u8d5e\u7f8e\u6cd5\u5219","code":"ffc","model":"4","url":"\/rrpl\/ffc.html"},{"practice":"388","treeID":"78","treeType":"teammgmt","title":"PREP\u6cd5\u5219","code":"prep","model":"4","url":"\/rrpl\/prep.html"},{"practice":"285","treeID":"78","treeType":"teammgmt","title":"15\/5 \u62a5\u544a","code":"15-5-reports","model":"4","url":"\/rrpl\/15-5-reports.html"}]},{"title":"\u56e2\u961f\u53d1\u5c55","id":"81","code":"","children":[{"practice":"444","treeID":"81","treeType":"teammgmt","title":"\u9ea6\u80af\u95217s\u6a21\u578b","code":"7s","model":"4","url":"\/rrpl\/7s.html"},{"practice":"443","treeID":"81","treeType":"teammgmt","title":"GE\u9886\u5bfc\u529b\u6a21\u578b","code":"ge-leadership-model","model":"4","url":"\/rrpl\/ge-leadership-model.html"},{"practice":"441","treeID":"81","treeType":"teammgmt","title":"\u5783\u573e\u6876\u6a21\u578b","code":"the-garbage-can-theory","model":"4","url":"\/rrpl\/the-garbage-can-theory.html"},{"practice":"398","treeID":"81","treeType":"teammgmt","title":"\u5854\u514b\u66fc\u9636\u68af","code":"tuckman-stages-of-group-development","model":"4","url":"\/rrpl\/tuckman-stages-of-group-development.html"}]}]},{"title":"\u5b66\u4e60\u5de5\u4f5c\u574a","id":"33","open":true,"code":"learning-workshop","children":[{"title":"\u654f\u6377\u5de5\u4f5c\u574a","id":"63","code":"","children":[{"practice":"294","treeID":"63","treeType":"learning-workshop","title":"\u770b\u677f\u62ab\u8428\u997c\u6e38\u620f","code":"kanban-pizza-game","model":"4","url":"\/rrpl\/kanban-pizza-game.html"},{"practice":"264","treeID":"63","treeType":"learning-workshop","title":"\u770b\u677f\u4f20\u9012\u786c\u5e01\u6e38\u620f","code":"kanban-penny-game","model":"4","url":"\/rrpl\/kanban-penny-game.html"},{"practice":"202","treeID":"63","treeType":"learning-workshop","title":"\u654f\u6377\u7eb8\u98de\u673a\u6e38\u620f","code":"agile-paper-plane","model":"4","url":"\/rrpl\/agile-paper-plane.html"},{"practice":"118","treeID":"63","treeType":"learning-workshop","title":"\u654f\u6377\u591a\u7c73\u8bfa\u9aa8\u724c\u5de5\u4f5c\u574a","code":"agile-domino-workshop","model":"4","url":"\/rrpl\/agile-domino-workshop.html"}]}]}]}];;v.improving = "\u5b8c\u5584\u4e2d";;
var $config = {
    sites               : ['wechat', 'weibo', 'qzone', 'qq'],
    wechatQrcodeTitle   : '微信分享',
    wechatQrcodeHelper  : '<p>打开微信扫一扫</p>',
};

socialShare('.social-share', $config);

var showTree = v.categoryTree;

if(window.innerWidth < 640) {showTree.map(item => {item.open = false;});}

$('#showTree').tree(
{
    data: showTree,
    itemCreator: function($li, item)
    {
        let ele = '';
        if(item.practice)
        {
            $li.addClass('leaf-parent');
            ele = `<a class='tree-leaf' href=${item.url} data-practice=${item.practice}>${item.title}</a>`;
        }
        else
        {
            ele = `<a href="#" data-id=${item.id}>${item.title}</a>`;
        }
        $li.append(ele);
    }
});
;$(function(){
   $('.join').click(function(e) {
        e.stopPropagation();
        $(this).find('.code-wrap').toggle()
    })
    $(document).click(function(){
        $('.join .code-wrap').hide();
    })
    $('.code-wrap').click(function(e) {
        e.stopPropagation();
    })
    
    if($('#copyright').find('.footer-link').length === 0) {
        $('#copyright').after('<a href="http://www.easycorp.cn" target="_blank" class="footer-link">禅道软件（青岛）有限公司</a>')
    } 
})

;$(function()
{
    var isLogin = false;
    $.getJSON(createLink('user', 'ajaxCheckLogin', '', 'json'), function(response) {
        isLogin = response.result;
    });

    $('#rrplSearch').keydown(function(e)
    {
        if(e.keyCode === 13 && e.target.value)
        {
            $.ajax(
                {
                    type : 'post',
                    data : "words=" + e.target.value,
                    url  : createLink('rrpl', 'search'),
                    datatype :'json',
                    success : function(data){
                        location.href = createLink('rrpl', 'search');
                    }
                });
        }
    });

    var dlValue = (function() {
        var match = RegExp('[?&]dl=([^&]*)').exec(window.location.search);

        return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
    })();

    if(dlValue !== null)
    {
        var element = $('#' + dlValue);
        if(element.length > 0)
        {
            element[0].click();
            location.href = window.location.pathname;
        }
    }

    $('.search-wrap .icon-search').click(function()
    {
        $.ajax(
            {
                type : 'post',
                data : "words=" + $('#rrplSearch').val(),
                url  : createLink('rrpl', 'search'),
                datatype :'json',
                success : function(data){
                    location.href = createLink('rrpl', 'search');
                }
            });
    });

    if(window.innerWidth > 640)
    {
        $('a.tree-leaf').each(function ()
        {
            if ($(this).attr('href') === location.pathname)
            {
                $(this).addClass('active');
                $(this).parents('.has-list').addClass('active')
                $('#showTree').tree('expand', $(this).parents('.has-list'));
            }
        });
    }

    initStarStatus();

    function initStarStatus()
    {
        if(!$('.empty-wrap').is(':visible'))
        {
            $('#commentBox').show();
            $('.right-menu').show();
            setTimeout(function()
            {
                initContent();
            }, 300)
        }

        $('#showTree li').each(function()
        {
            if (!$(this).hasClass('has-list') && $(this).children('a').attr('href') === '#')
            {
                $(this).attr('title', v.improving);
            }
        })

        if(sessionStorage.getItem('comment'))
        {
            $('#commentBox #content').text(sessionStorage.getItem('comment'));
            sessionStorage.removeItem('comment');
        }
    }

    $('.page-wrapper').on('click', '.like-wrap', function ()
    {
        var url = $('#uri').val() + '/star.html';
        $.ajax({
            method: 'get',
            url: url,
            success: function (res)
            {
                $('.star-count').text(res.stars);
                if(res.type == 'star')
                {
                    $('.like-wrap').find('.like-text').text(v.staredText);
                    $('.like-wrap').find('i').removeClass('icon-star').addClass('icon-stared');
                    $('.tt').find('.icon-star1').removeClass('icon-star1').addClass('icon-stared1');
                }

                if(res.type == 'cancel')
                {
                    $('.like-wrap').find('.like-text').text(v.starText);
                    $('.like-wrap').find('i').removeClass('icon-stared').addClass('icon-star');
                    $('.tt').find('.icon-stared1').removeClass('icon-stared1').addClass('icon-star1');
                }
            }
        })
    })

    $('.page-wrapper').on('click', '.collect-wrap', function ()
    {
        var url = $('#uri').val() + '/bookmark.html';
        $.ajax({
            method: 'get',
            url: url,
            success: function (res)
            {
                if (res.result === 'success') {
                    $('.collect-count').text(res.bookmarks)
                    if (!$('.collect-wrap').find('i').hasClass('icon-star'))
                    {
                        $('.collect-count').prev('i').addClass('icon-thumbs-o-up').removeClass('thumbs-up');
                        $('.collect-wrap').find('.collect-text').text(v.collected);
                        $('.collect-wrap').find('i').removeClass('icon-star-empty').addClass('icon-star');
                    } else
                    {
                        $('.collect-count').prev('i').addClass('thumbs-up').removeClass('icon-thumbs-o-up');
                        $('.collect-wrap').find('.collect-text').text(v.collect);
                        $('.collect-wrap').find('i').removeClass('icon-star').addClass('icon-star-empty');
                    }
                }
            }
        })
    })

    function initContent()
    {
        if (location.pathname.includes('rrpl'))
        {
            $('a[href="/rrpl.html"]').parent().addClass('active');
        }
        $('.right-menu-fixed h6 a').each(function ()
        {
            var href = $(this).attr('href');
            if (document.querySelector(`${href}-textarea`)) {
                new toastuiview.Editor({
                    language: 'zh-CN',
                    el: document.querySelector(`${href}-textarea`),
                    viewer: true,
                    initialValue: $(`${href}-textarea`).data('content'),
                });
            }
        })
        if ($('.content-wrap').find($('#define-textarea')).length)
        {
            new toastuiview.Editor({
                language: 'zh-CN',
                el: document.querySelector('#define-textarea'),
                viewer: true,
                initialValue: $('#define-textarea').data('content'),
            });
        }

    }

    $('.content-wrap #commentBox').children('.panel').last().find('.panel-heading').html('<strong><span class="icon icon-comment-alt"></span> 请提出您的意见</strong>');

    $('.btn-history, .creator-more').click(function (e)
    {
        e.stopPropagation();
        $(this).siblings('.more-list').toggle();
        $(this).siblings('.more-list').toggleClass('open');
        $(this).toggleClass('active');
        $(this).parent().siblings().find('.more-list').hide();
        $('.share-component').hide();
    })

    $('[data-toggle="tooltip"]').tooltip();

    $('.more-list, .claim-list, .share-component').click(function (e)
    {
        if ($(e.target).hasClass('icon-link'))
        {
            return;
        }
        e.stopPropagation();
    })

    $(document).click(function (e)
    {
        $('.btn-history').removeClass('active');
        $('.claim-list, .more-list, .popover').hide();
        if (!$(e.target).hasClass('icon-link'))
        {
            $('.share-component').hide();
            $('.icon-share').removeClass('icon-share-active');
        }
    })

    $('.item-edit').click(function ()
    {
        if(isLogin)
        {
            const id = $(this).parent('.preview-h3').attr('id');
            if ($(`#${id}_div`).length) {
                initMarkdownEdit({
                    id: [`${id}_div`]
                });
                $(`#${id}_div`).show();
                $(`#${id}-textarea`).hide();
                $(`#${id}_div`).next('.item-options-btn').show();
            } else {
                $(`#${id}_input`).show().val($(`.${id}-content`).text());
                $(`.${id}-content`).hide();
                $(`#${id}_input`).next('.item-options-btn').show();
            }
        }
        else
        {
            location.href = v.loginLink;
        }
    });

    $('.item-save, .item-save-textarea').tooltip('destroy');

    $('.item-save').click(function ()
    {
        var _this = $(this);
        if (!_this.prev().find('input[type=radio]').prop('checked')) {
            _this.prev().find('label').addClass('error').tooltip('show');
            return;
        }
        var value = $(this).parent().prev().data('value');
        var key = $(this).parent().prev().attr('id').split('_')[0];
        if(key === 'outputs')
        {
            key = 'output';
        }
        $.ajax({
            method: 'post',
            url: `/rrpl/${v.code}/edit.html`,
            data: {
                [key]: value
            },
            success: function (res)
            {
                _this.tooltip('show');
                setTimeout(() => {
                    _this.parent().prev().hide().prev().show();
                    _this.parent().hide();
                    _this.tooltip('destroy');
                    _this.prev().find('label').tooltip('hide').removeClass('error');
                    _this.prev().find('input[type=radio]').prop('checked', false);
                }, 1000);
            }
        })
    });

    $('.item-save-textarea').click(function ()
    {
        const _this = $(this);
        const value = $(this).parent().prev().val();
        const key = $(this).parent().prev().attr('id').split('_')[0];
        $.ajax({
            method: 'post',
            url: `/rrpl/${v.code}/edit.html`,
            data: {
                [key]: value
            },
            success: function () {
                _this.tooltip('show');
                setTimeout(() => {
                    _this.parent().prev().hide().prev().show();
                    _this.parent().hide();
                    _this.tooltip('destroy');
                }, 1000);
            }
        })
    });

    $('.item-cancel').click(function ()
    {
        $(this).parent().prev().hide().prev().show();
        $(this).parent().hide();
        $(this).parent().find('label').tooltip('hide').removeClass('error');
        $(this).parent().find('input[type=radio]').prop('checked', false)
    })

    function initMarkdownEdit(config, afterInit)
    {
        config = config || markdownEditor;
        $.each(config.id, function (key, markdownEditorID) {
            var $textarea = $('#' + markdownEditorID.replace('_div', '-textarea'));
            var options =
            {
                el: document.querySelector('#' + markdownEditorID),
                previewStyle: 'vertical',
                height: '200px',
                initialEditType: 'markdown',
                language: 'zh-CN',
                initialValue: String($textarea.data('content')),
                hooks: {
                    addImageBlobHook: (blob, callback) => {

                        var formData = new FormData();
                        var link = createLink('file', 'ajaxUpload', 'uid=' + v.uid);

                        formData.append('imgFile', blob, blob.name);

                        fetch(link, {
                            method: 'POST',
                            body: formData
                        }).then(response => {

                            if (response.ok) return response.json();

                            throw new Error('Server or network error');
                        }).then(response => {
                            callback(response.url, 'image');
                        });
                    },
                },
            };

            var markdown = new toastui.Editor(options);

            markdown.on('change', function () {
                let elementId = $($(markdown.getEditorElements()).prop('mdEditor')).parent().parent().parent().parent().parent().prop('id');
                $('#' + elementId).css('height', $('#' + elementId).height() + markdown.getScrollTop() + 'px');
                $(`#${elementId}`).attr('data-value', markdown.getMarkdown());
            });

            if (!window.markdownEditor) window.markdownEditor = {};
            window.markdownEditor['#'] = window.markdownEditor[markdownEditorID] = markdown;

            $(':input[type=submit]').after("<input type='hidden' id='uid' name='uid' value=" + v.uid + ">");
        });

        if ($.isFunction(afterInit)) afterInit();
    }

    let tuiEditorId = '';
    $(document).on('focus', '.ProseMirror', function ()
    {
        tuiEditorId = $(this).parent().parent().parent().parent().parent().parent().prop('id');
        let height = $('#' + tuiEditorId + ' .toastui-editor-contents').height();
        let tuiEditorItems = $('.toastui-editor-defaultUI');
        $.each(tuiEditorItems, function (index, item) {
            let itemId = $(item).parent().prop('id');
            if (itemId != tuiEditorId) {
                $('#' + itemId).css('height', '200px');
            }
        })
        if (Math.abs(height - $('#' + tuiEditorId).height()) > 40) {
            $('#' + tuiEditorId).css('height', height + 200 + "px");
        }
    });
    $(document).on('blur', '.ProseMirror', function ()
    {
        let tuiEditorItems = $('.toastui-editor-defaultUI');
        $.each(tuiEditorItems, function (index, item) {
            let itemId = $(item).parent().prop('id');
            if (itemId != tuiEditorId) {
                $('#' + itemId).css('height', '200px');
            }
        })
    });

    $('.flex-creator, .zt-swiper-wrapper, .detail-recommend-wrap, .convert-zt').appendTo('.col-md-2 .right-menu-fixed');

    $('.social-share .icon-qq').after('<a class="social-share-icon icon-link" data-clipboard-text="'+ window.location.href + '" style="font-family:ZenIcon !important"></a>');
    $('.icon-link').click(function(e)
    {
        var link = $(this);
        var clipboard = new ClipboardJS('.icon-link');
        clipboard.on('success', function(e) {
            link.popover({container : 'body', trigger : 'manual', content: v.copySuccess, placement:'right', tipClass : 'popover-success'}).popover('show');
            link.next('.popover').addClass('popover-success');
            setTimeout(function(){link.popover('hide');}, 2000);
            e.clearSelection();
        });

        clipboard.on('error', function(e) {
            alert(v.copyFailed);
        });
    });

    $('.icon-share').click(function(e)
    {
        e.stopPropagation();
        $(this).toggleClass('icon-share-active');
        $(this).siblings('.share-component').toggle();
        $('.more-list').hide();
    })

    document.querySelector('#content-view').addEventListener('copy', function(e)
    {
        if($(e.target).parent().parent().attr('id') == 'references-textarea') return;
        var selection = document.getSelection();
        selection = selection.toString() + '\n' + v.copyCreator + v.users + '\n' + v.copyLink + location.href + '\n' + v.copySource + '\n' + v.copyTips;
        e.clipboardData.setData('text/plain', selection);
        e.preventDefault();
        e.stopPropagation();
    });

    $('#commentBox #content').blur(function(e)
    {
        sessionStorage.setItem('comment', e.target.value);
    });

    if($('#commentBox a[href="#commentForm"]').length > 0) $('#commentBox a[href="#commentForm"]').hide();

    var mySwiper = new Swiper('.zt-swiper', {
        autoplay: {delay: 4000},
        pagination: {
            el: '.swiper-pagination',
            clickable: true
        },
    });
})
$(function(){
    $(".siteNav a[href*='register']").remove();
    $(".siteNav a[href*='login']").text('登录/注册');
    
    $('.all-bottom').prependTo('#footer');

    var windowHeight = $(window).innerHeight();
    var minHeight = windowHeight - $('#header').height() - $('#footer').height() + 30;
    if($('html').hasClass('m-user-settings')) minHeight = minHeight - 30;
    if($('.page-wrapper').height() < minHeight) {
        $('.page-wrapper').css('minHeight', minHeight)
    }
    
    if($(window).innerWidth() < 768) {
        if($('html').hasClass('m-ask')) {
            $('.tree > li').removeClass('open');
        }
        
        if($('html').hasClass('m-claim')) {
            $('.clickable-claim').click(function() {
                $('.popover').remove();
            });
        }
    }
    
    if(location.href.includes('rrpl-search')) {
        $('a[href="/rrpl.html"]').parent().addClass('active');
    }
    
    if($('html').hasClass('m-ask-view')) {
        $('a[href="/ask.html"]').parent().addClass('active');
    }
    
    if(location.pathname == '/') $('a[href="/index.html"]').parent().addClass('active');
    
    $('.m-claim-browse .status-list a:last-child').addClass('hide');
    $('.m-claim-browse .type-wrap').css('display', 'none');
    $('.m-claim-browse #keyword').attr('placeholder', '请输入您要搜索的实践');
    if($('.related-zentao').length > 0) $('.details .origin').after($('.details .related-zentao'));
});
;
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?3f3a48b32f0477a6748d1771a83f99a1";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
;
function loadCartInfo(twinkle)
{
    $('.siteNav').load(createLink('misc', 'printTopBar'),
        function()
        {
            if(twinkle)
            {
                bootbox.dialog(
                {
                    message: v.addToCartSuccess,
                    buttons:
                    {
                        back:
                        {
                            label:     v.lang.continueShopping,
                            className: 'btn-primary',
                            callback:  function(){location.reload();}
                        },
                        cart:
                        {
                            label:     v.gotoCart,
                            className: 'btn-primary',
                            callback:  function(){location.href = createLink('cart', 'browse');}
                        }
                    }
                });
            }
        }
    );
}
;
var hash = window.location.hash.substring(1);
var browserLanguage = navigator.language || navigator.userLanguage;
var resolution      = screen.availWidth + ' X ' + screen.availHeight;
$.get(createLink('log', 'record', "hash=" + hash), {browserLanguage:browserLanguage, resolution:resolution});
