├── back ├── __init__.py ├── api │ └── __init__.py ├── migrations │ └── __init__.py ├── admin.py ├── static │ ├── img │ │ ├── 1.png │ │ ├── a1.jpg │ │ ├── a2.jpg │ │ ├── a3.jpg │ │ ├── a4.jpg │ │ ├── a5.jpg │ │ ├── a6.jpg │ │ ├── a7.jpg │ │ ├── a8.jpg │ │ ├── a9.jpg │ │ ├── bg.png │ │ ├── p1.jpg │ │ ├── p2.jpg │ │ ├── p3.jpg │ │ ├── icons.png │ │ ├── user.png │ │ ├── browser.png │ │ ├── browser.psd │ │ ├── loading.gif │ │ ├── locked.png │ │ ├── p_big1.jpg │ │ ├── p_big2.jpg │ │ ├── p_big3.jpg │ │ ├── profile.jpg │ │ ├── success.png │ │ ├── progress.png │ │ ├── wenku_logo.png │ │ ├── profile_big.jpg │ │ ├── webuploader.png │ │ ├── iconfont-logo.png │ │ ├── loading-upload.gif │ │ ├── profile_small.jpg │ │ ├── login-background.jpg │ │ └── sprite-skin-flat.png │ ├── favicon.ico │ ├── user_pic │ │ └── 1.png │ ├── user_default.png │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── css │ │ ├── patterns │ │ │ ├── shattered.png │ │ │ ├── header-profile.png │ │ │ ├── header-profile-skin-1.png │ │ │ └── header-profile-skin-3.png │ │ ├── plugins │ │ │ ├── iCheck │ │ │ │ ├── green.png │ │ │ │ ├── green@2x.png │ │ │ │ └── custom.css │ │ │ ├── jsTree │ │ │ │ ├── 32px.png │ │ │ │ └── throbber.gif │ │ │ ├── blueimp │ │ │ │ ├── img │ │ │ │ │ ├── error.png │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── play-pause.png │ │ │ │ │ ├── video-play.png │ │ │ │ │ ├── video-play.svg │ │ │ │ │ ├── error.svg │ │ │ │ │ └── play-pause.svg │ │ │ │ └── css │ │ │ │ │ ├── demo.css │ │ │ │ │ ├── blueimp-gallery-indicator.css │ │ │ │ │ └── blueimp-gallery-video.css │ │ │ ├── images │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_desc.png │ │ │ │ ├── spritemap.png │ │ │ │ ├── spritemap@2x.png │ │ │ │ └── sprite-skin-flat.png │ │ │ ├── chosen │ │ │ │ ├── chosen-sprite.png │ │ │ │ └── chosen-sprite@2x.png │ │ │ ├── footable │ │ │ │ └── fonts │ │ │ │ │ ├── footable.eot │ │ │ │ │ ├── footable.ttf │ │ │ │ │ └── footable.woff │ │ │ ├── jQueryUI │ │ │ │ └── images │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ └── ui-bg_flat_75_ffffff_40x100.png │ │ │ ├── colorpicker │ │ │ │ └── img │ │ │ │ │ └── bootstrap-colorpicker │ │ │ │ │ ├── hue.png │ │ │ │ │ ├── alpha.png │ │ │ │ │ ├── saturation.png │ │ │ │ │ ├── hue-horizontal.png │ │ │ │ │ └── alpha-horizontal.png │ │ │ ├── morris │ │ │ │ └── morris-0.4.3.min.css │ │ │ ├── webuploader │ │ │ │ └── webuploader.css │ │ │ ├── switchery │ │ │ │ └── switchery.css │ │ │ ├── fullcalendar │ │ │ │ └── fullcalendar.print.css │ │ │ ├── multiselect │ │ │ │ └── bootstrap-multiselect.css │ │ │ ├── treeview │ │ │ │ └── bootstrap-treeview.css │ │ │ ├── duallistbox │ │ │ │ └── bootstrap-duallistbox.css │ │ │ ├── ionRangeSlider │ │ │ │ └── ion.rangeSlider.skinFlat.css │ │ │ └── markdown │ │ │ │ └── bootstrap-markdown.min.css │ │ └── login.css │ └── js │ │ ├── plugins │ │ ├── fancybox │ │ │ ├── blank.gif │ │ │ ├── fancybox_loading.gif │ │ │ ├── fancybox_overlay.png │ │ │ ├── fancybox_sprite.png │ │ │ ├── fancybox_loading@2x.gif │ │ │ └── fancybox_sprite@2x.png │ │ ├── layer │ │ │ ├── layim │ │ │ │ ├── loading.gif │ │ │ │ └── data │ │ │ │ │ ├── chatlog.json │ │ │ │ │ ├── groups.json │ │ │ │ │ └── group.json │ │ │ ├── skin │ │ │ │ ├── default │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── textbg.png │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── icon_ext.png │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ ├── xubox_ico0.png │ │ │ │ │ ├── xubox_loading0.gif │ │ │ │ │ ├── xubox_loading1.gif │ │ │ │ │ ├── xubox_loading2.gif │ │ │ │ │ ├── xubox_loading3.gif │ │ │ │ │ └── xubox_title0.png │ │ │ │ └── moon │ │ │ │ │ └── default.png │ │ │ └── laydate │ │ │ │ └── skins │ │ │ │ └── default │ │ │ │ └── icon.png │ │ ├── webuploader │ │ │ ├── Uploader.swf │ │ │ ├── webuploader.css │ │ │ └── README.md │ │ ├── gritter │ │ │ └── images │ │ │ │ ├── gritter.png │ │ │ │ ├── ie-spacer.gif │ │ │ │ └── gritter-light.png │ │ ├── codemirror │ │ │ └── mode │ │ │ │ ├── tiddlywiki │ │ │ │ └── tiddlywiki.css │ │ │ │ ├── ruby │ │ │ │ └── test.js │ │ │ │ ├── tiki │ │ │ │ ├── tiki.css │ │ │ │ └── index.html │ │ │ │ ├── diff │ │ │ │ └── diff.js │ │ │ │ ├── ntriples │ │ │ │ └── index.html │ │ │ │ ├── spreadsheet │ │ │ │ └── index.html │ │ │ │ ├── http │ │ │ │ └── index.html │ │ │ │ ├── solr │ │ │ │ └── index.html │ │ │ │ ├── z80 │ │ │ │ └── index.html │ │ │ │ ├── ecl │ │ │ │ └── index.html │ │ │ │ ├── rust │ │ │ │ └── index.html │ │ │ │ ├── turtle │ │ │ │ └── index.html │ │ │ │ ├── pascal │ │ │ │ └── index.html │ │ │ │ ├── pig │ │ │ │ └── index.html │ │ │ │ ├── vbscript │ │ │ │ └── index.html │ │ │ │ ├── gherkin │ │ │ │ └── index.html │ │ │ │ ├── properties │ │ │ │ ├── index.html │ │ │ │ └── properties.js │ │ │ │ ├── javascript │ │ │ │ ├── typescript.html │ │ │ │ └── json-ld.html │ │ │ │ ├── sass │ │ │ │ └── index.html │ │ │ │ ├── perl │ │ │ │ └── index.html │ │ │ │ ├── idl │ │ │ │ └── index.html │ │ │ │ ├── dart │ │ │ │ ├── index.html │ │ │ │ └── dart.js │ │ │ │ ├── xml │ │ │ │ ├── test.js │ │ │ │ └── index.html │ │ │ │ ├── jinja2 │ │ │ │ └── index.html │ │ │ │ ├── css │ │ │ │ ├── less_test.js │ │ │ │ └── index.html │ │ │ │ ├── shell │ │ │ │ ├── test.js │ │ │ │ └── index.html │ │ │ │ ├── sparql │ │ │ │ └── index.html │ │ │ │ ├── tornado │ │ │ │ └── index.html │ │ │ │ ├── django │ │ │ │ ├── index.html │ │ │ │ └── django.js │ │ │ │ ├── gas │ │ │ │ └── index.html │ │ │ │ ├── toml │ │ │ │ └── index.html │ │ │ │ ├── octave │ │ │ │ └── index.html │ │ │ │ ├── cypher │ │ │ │ └── index.html │ │ │ │ ├── pegjs │ │ │ │ └── index.html │ │ │ │ ├── smalltalk │ │ │ │ └── index.html │ │ │ │ ├── htmlembedded │ │ │ │ └── index.html │ │ │ │ ├── soy │ │ │ │ └── index.html │ │ │ │ ├── php │ │ │ │ └── index.html │ │ │ │ ├── modelica │ │ │ │ └── index.html │ │ │ │ ├── apl │ │ │ │ └── index.html │ │ │ │ ├── haml │ │ │ │ └── index.html │ │ │ │ ├── lua │ │ │ │ └── index.html │ │ │ │ ├── yaml │ │ │ │ └── index.html │ │ │ │ ├── rpm │ │ │ │ └── changes │ │ │ │ │ └── index.html │ │ │ │ ├── erlang │ │ │ │ └── index.html │ │ │ │ ├── haskell │ │ │ │ └── index.html │ │ │ │ ├── dockerfile │ │ │ │ ├── dockerfile.js │ │ │ │ └── index.html │ │ │ │ ├── go │ │ │ │ └── index.html │ │ │ │ └── groovy │ │ │ │ └── index.html │ │ ├── bootstrap-table │ │ │ ├── locale │ │ │ │ ├── bootstrap-table-zh-CN.min.js │ │ │ │ └── bootstrap-table-zh-CN.js │ │ │ └── bootstrap-table-mobile.min.js │ │ ├── markdown │ │ │ └── bootstrap-markdown.zh.js │ │ ├── validate │ │ │ └── messages_zh.min.js │ │ ├── suggest │ │ │ └── data.json │ │ ├── prettyfile │ │ │ └── bootstrap-prettyfile.js │ │ └── simditor │ │ │ └── module.min.js │ │ ├── index.js │ │ ├── demo │ │ ├── table_base.json │ │ ├── peity-demo.js │ │ ├── photos.json │ │ ├── bootstrap_table_test2.json │ │ └── sparkline-demo.js │ │ └── content.js ├── utils │ ├── skill_type.csv │ ├── data │ │ ├── job_dic.pickle │ │ ├── job_count.pickle │ │ ├── vector_weight.pickle │ │ └── welfare_count.txt │ ├── File │ │ └── 职业.txt │ ├── Bootstarp.py │ ├── decorators.py │ ├── data2sql.py │ ├── predict_model.py │ ├── Tools.py │ └── Data_cs.py ├── apps.py ├── routings.py └── consumers.py ├── boss_drf ├── __init__.py ├── wsgi.py ├── asgi.py └── urls.py ├── templates ├── favicon.ico └── base.html ├── manage.py └── requirements.txt /back/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /back/api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boss_drf/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /back/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /back/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /back/static/img/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/1.png -------------------------------------------------------------------------------- /back/static/img/a1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a1.jpg -------------------------------------------------------------------------------- /back/static/img/a2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a2.jpg -------------------------------------------------------------------------------- /back/static/img/a3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a3.jpg -------------------------------------------------------------------------------- /back/static/img/a4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a4.jpg -------------------------------------------------------------------------------- /back/static/img/a5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a5.jpg -------------------------------------------------------------------------------- /back/static/img/a6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a6.jpg -------------------------------------------------------------------------------- /back/static/img/a7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a7.jpg -------------------------------------------------------------------------------- /back/static/img/a8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a8.jpg -------------------------------------------------------------------------------- /back/static/img/a9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/a9.jpg -------------------------------------------------------------------------------- /back/static/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/bg.png -------------------------------------------------------------------------------- /back/static/img/p1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p1.jpg -------------------------------------------------------------------------------- /back/static/img/p2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p2.jpg -------------------------------------------------------------------------------- /back/static/img/p3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p3.jpg -------------------------------------------------------------------------------- /templates/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/templates/favicon.ico -------------------------------------------------------------------------------- /back/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/favicon.ico -------------------------------------------------------------------------------- /back/static/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/icons.png -------------------------------------------------------------------------------- /back/static/img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/user.png -------------------------------------------------------------------------------- /back/utils/skill_type.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/utils/skill_type.csv -------------------------------------------------------------------------------- /back/static/img/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/browser.png -------------------------------------------------------------------------------- /back/static/img/browser.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/browser.psd -------------------------------------------------------------------------------- /back/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/loading.gif -------------------------------------------------------------------------------- /back/static/img/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/locked.png -------------------------------------------------------------------------------- /back/static/img/p_big1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p_big1.jpg -------------------------------------------------------------------------------- /back/static/img/p_big2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p_big2.jpg -------------------------------------------------------------------------------- /back/static/img/p_big3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/p_big3.jpg -------------------------------------------------------------------------------- /back/static/img/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/profile.jpg -------------------------------------------------------------------------------- /back/static/img/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/success.png -------------------------------------------------------------------------------- /back/static/user_pic/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/user_pic/1.png -------------------------------------------------------------------------------- /back/static/img/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/progress.png -------------------------------------------------------------------------------- /back/static/img/wenku_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/wenku_logo.png -------------------------------------------------------------------------------- /back/static/user_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/user_default.png -------------------------------------------------------------------------------- /back/utils/data/job_dic.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/utils/data/job_dic.pickle -------------------------------------------------------------------------------- /back/static/img/profile_big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/profile_big.jpg -------------------------------------------------------------------------------- /back/static/img/webuploader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/webuploader.png -------------------------------------------------------------------------------- /back/utils/data/job_count.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/utils/data/job_count.pickle -------------------------------------------------------------------------------- /back/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /back/static/img/iconfont-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/iconfont-logo.png -------------------------------------------------------------------------------- /back/static/img/loading-upload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/loading-upload.gif -------------------------------------------------------------------------------- /back/static/img/profile_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/profile_small.jpg -------------------------------------------------------------------------------- /back/static/img/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/login-background.jpg -------------------------------------------------------------------------------- /back/static/img/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/img/sprite-skin-flat.png -------------------------------------------------------------------------------- /back/utils/data/vector_weight.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/utils/data/vector_weight.pickle -------------------------------------------------------------------------------- /back/static/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/patterns/shattered.png -------------------------------------------------------------------------------- /back/static/css/plugins/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/iCheck/green.png -------------------------------------------------------------------------------- /back/static/css/plugins/jsTree/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jsTree/32px.png -------------------------------------------------------------------------------- /back/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /back/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /back/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/blank.gif -------------------------------------------------------------------------------- /back/static/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/patterns/header-profile.png -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/blueimp/img/error.png -------------------------------------------------------------------------------- /back/static/css/plugins/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/iCheck/green@2x.png -------------------------------------------------------------------------------- /back/static/css/plugins/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/images/sort_asc.png -------------------------------------------------------------------------------- /back/static/css/plugins/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/images/sort_desc.png -------------------------------------------------------------------------------- /back/static/css/plugins/images/spritemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/images/spritemap.png -------------------------------------------------------------------------------- /back/static/css/plugins/jsTree/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jsTree/throbber.gif -------------------------------------------------------------------------------- /back/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/blueimp/img/loading.gif -------------------------------------------------------------------------------- /back/static/css/plugins/images/spritemap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/images/spritemap@2x.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/layim/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/layim/loading.gif -------------------------------------------------------------------------------- /back/static/js/plugins/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/webuploader/Uploader.swf -------------------------------------------------------------------------------- /back/static/css/patterns/header-profile-skin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/patterns/header-profile-skin-1.png -------------------------------------------------------------------------------- /back/static/css/patterns/header-profile-skin-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/patterns/header-profile-skin-3.png -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/play-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/blueimp/img/play-pause.png -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/blueimp/img/video-play.png -------------------------------------------------------------------------------- /back/static/css/plugins/chosen/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/chosen/chosen-sprite.png -------------------------------------------------------------------------------- /back/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /back/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /back/static/js/plugins/gritter/images/gritter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/gritter/images/gritter.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/icon.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/moon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/moon/default.png -------------------------------------------------------------------------------- /back/static/css/plugins/chosen/chosen-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/chosen/chosen-sprite@2x.png -------------------------------------------------------------------------------- /back/static/css/plugins/footable/fonts/footable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/footable/fonts/footable.eot -------------------------------------------------------------------------------- /back/static/css/plugins/footable/fonts/footable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/footable/fonts/footable.ttf -------------------------------------------------------------------------------- /back/static/css/plugins/footable/fonts/footable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/footable/fonts/footable.woff -------------------------------------------------------------------------------- /back/static/css/plugins/images/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/images/sprite-skin-flat.png -------------------------------------------------------------------------------- /back/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /back/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /back/static/js/plugins/gritter/images/ie-spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/gritter/images/ie-spacer.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/textbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/textbg.png -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /back/static/js/plugins/fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /back/static/js/plugins/gritter/images/gritter-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/gritter/images/gritter-light.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/icon_ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/icon_ext.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_ico0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_ico0.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/laydate/skins/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/laydate/skins/default/icon.png -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_loading0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_loading0.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_loading1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_loading1.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_loading2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_loading2.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_loading3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_loading3.gif -------------------------------------------------------------------------------- /back/static/js/plugins/layer/skin/default/xubox_title0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/js/plugins/layer/skin/default/xubox_title0.png -------------------------------------------------------------------------------- /back/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BackConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'back' 7 | -------------------------------------------------------------------------------- /back/routings.py: -------------------------------------------------------------------------------- 1 | from django.urls import re_path 2 | from back import consumers 3 | 4 | websocket_urlpatterns = [ 5 | re_path(r'test/', consumers.ChatConsumer.as_asgi()) 6 | ] -------------------------------------------------------------------------------- /back/static/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /back/static/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /back/static/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /back/static/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /back/static/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Noah0115/boss_drf/HEAD/back/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /back/utils/data/welfare_count.txt: -------------------------------------------------------------------------------- 1 | 全额五险一金 2 | 工龄带薪年假 3 | 年终奖励分红 4 | 节日福利 5 | 定期体检 6 | 员工旅游 7 | 三餐补助 8 | 零食下午茶 9 | 加班补助 10 | 交通补助 11 | 补充医疗保险 12 | 股票期权 13 | 通讯补贴 14 | 全勤奖 15 | Q 米 16 | 团建聚餐 17 | 年终绩效奖金 18 | 员工生日福利 19 | 免费班车 20 | 包吃住 21 | -------------------------------------------------------------------------------- /back/static/js/index.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | //菜单点击 3 | J_iframe 4 | $(".J_menuItem").on('click', function () { 5 | var url = $(this).attr('href'); 6 | $("#J_iframe").attr('src', url); 7 | return false; 8 | }); 9 | }); -------------------------------------------------------------------------------- /back/utils/File/职业.txt: -------------------------------------------------------------------------------- 1 | 技术支持 2 | 架构师 3 | 大数据工程师 4 | 新媒体技术 5 | 全栈工程师 6 | UI设计师 7 | 嵌入式 8 | 网络安全 9 | 前端 10 | 移动端 11 | 软件测试 12 | 运维工程师 13 | 人工智能 14 | 硬件工程师 15 | java工程师 16 | Python工程师 17 | C,C++语言工程师 18 | 算法工程师 19 | 数据分析 20 | 数据挖掘 21 | 网络工程师 22 | 软件项目经理 -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/video-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/img/play-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /boss_drf/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for boss_drf project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss_drf.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /back/static/css/plugins/morris/morris-0.4.3.min.css: -------------------------------------------------------------------------------- 1 | .morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} 2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} 3 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } 27 | -------------------------------------------------------------------------------- /back/static/css/plugins/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /back/static/js/plugins/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /boss_drf/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for boss_drf project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from channels.routing import ProtocolTypeRouter, URLRouter 13 | from django.core.asgi import get_asgi_application 14 | from back import routings 15 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss_drf.settings') 16 | application = ProtocolTypeRouter({ 17 | 'http': get_asgi_application(), # 支持http请求 18 | 'websocket': URLRouter(routings.websocket_urlpatterns), # 支持websocket请求 19 | }) 20 | -------------------------------------------------------------------------------- /back/utils/Bootstarp.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.shortcuts import render, HttpResponse, redirect 3 | from django.forms import widgets 4 | from back import models 5 | 6 | 7 | class BootstarpForm(forms.ModelForm): 8 | def __init__(self,*args,**kwargs): 9 | super().__init__(*args,**kwargs) 10 | for name,field in self.fields.items(): 11 | if field.widget.attrs: 12 | field.widget.attrs['class']="form-control" 13 | field.widget.attrs['placeholder']=field.label 14 | else: 15 | field.widget.attrs = { 16 | "class":"form-control", 17 | "placeholder":field.label 18 | } -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss_drf.settings') 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == '__main__': 22 | main() 23 | -------------------------------------------------------------------------------- /back/static/css/plugins/switchery/switchery.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Main stylesheet for Switchery. 4 | * http://abpetkov.github.io/switchery/ 5 | * 6 | */ 7 | 8 | .switchery { 9 | background-color: #fff; 10 | border: 1px solid #dfdfdf; 11 | border-radius: 20px; 12 | cursor: pointer; 13 | display: inline-block; 14 | height: 30px; 15 | position: relative; 16 | vertical-align: middle; 17 | width: 50px; 18 | 19 | -webkit-box-sizing: content-box; 20 | -moz-box-sizing: content-box; 21 | box-sizing: content-box; 22 | } 23 | 24 | .switchery > small { 25 | background: #fff; 26 | border-radius: 100%; 27 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 28 | height: 30px; 29 | position: absolute; 30 | top: 0; 31 | width: 30px; 32 | } 33 | -------------------------------------------------------------------------------- /back/static/js/demo/table_base.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "Tid": "1", 3 | "First": "奔波儿灞", 4 | "sex": "男", 5 | "Score": "50" 6 | }, { 7 | "Tid": "2", 8 | "First": "灞波儿奔", 9 | "sex": "男", 10 | "Score": "94" 11 | }, { 12 | "Tid": "3", 13 | "First": "作家崔成浩", 14 | "sex": "男", 15 | "Score": "80" 16 | }, { 17 | "Tid": "4", 18 | "First": "韩寒", 19 | "sex": "男", 20 | "Score": "67" 21 | }, { 22 | "Tid": "5", 23 | "First": "郭敬明", 24 | "sex": "男", 25 | "Score": "100" 26 | }, { 27 | "Tid": "6", 28 | "First": "马云", 29 | "sex": "男", 30 | "Score": "77" 31 | }, { 32 | "Tid": "7", 33 | "First": "范爷", 34 | "sex": "女", 35 | "Score": "87" 36 | }] 37 | -------------------------------------------------------------------------------- /back/static/js/plugins/layer/layim/data/chatlog.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "id": "100001", 7 | "name": "Beaut-zihan", 8 | "time": "10:23", 9 | "face": "img/a1.jpg" 10 | }, 11 | { 12 | "id": "100002", 13 | "name": "慕容晓晓", 14 | "time": "昨天", 15 | "face": "img/a2.jpg" 16 | }, 17 | { 18 | "id": "1000033", 19 | "name": "乔峰", 20 | "time": "2014-4.22", 21 | "face": "img/a3.jpg" 22 | }, 23 | { 24 | "id": "10000333", 25 | "name": "高圆圆", 26 | "time": "2014-4.21", 27 | "face": "img/a4.jpg" 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /back/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";a.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(a){return"每页显示 "+a+" 条记录"},formatShowingRows:function(a,b,c){return"显示第 "+a+" 到第 "+b+" 条记录,总共 "+c+" 条记录"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-CN"])}(jQuery); 8 | -------------------------------------------------------------------------------- /back/static/css/plugins/fullcalendar/fullcalendar.print.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * FullCalendar v1.6.4 Print Stylesheet 3 | * Docs & License: http://arshaw.com/fullcalendar/ 4 | * (c) 2013 Adam Shaw 5 | */ 6 | 7 | /* 8 | * Include this stylesheet on your page to get a more printer-friendly calendar. 9 | * When including this stylesheet, use the media='print' attribute of the tag. 10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. 11 | */ 12 | 13 | 14 | /* Events 15 | -----------------------------------------------------*/ 16 | 17 | .fc-event { 18 | background: #fff !important; 19 | color: #000 !important; 20 | } 21 | 22 | /* for vertical events */ 23 | 24 | .fc-event-bg { 25 | display: none !important; 26 | } 27 | 28 | .fc-event .ui-resizable-handle { 29 | display: none !important; 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /back/static/js/plugins/webuploader/README.md: -------------------------------------------------------------------------------- 1 | 目录说明 2 | ======================== 3 | 4 | ```bash 5 | ├── Uploader.swf # SWF文件,当使用Flash运行时需要引入。 6 | ├ 7 | ├── webuploader.js # 完全版本。 8 | ├── webuploader.min.js # min版本 9 | ├ 10 | ├── webuploader.flashonly.js # 只有Flash实现的版本。 11 | ├── webuploader.flashonly.min.js # min版本 12 | ├ 13 | ├── webuploader.html5only.js # 只有Html5实现的版本。 14 | ├── webuploader.html5only.min.js # min版本 15 | ├ 16 | ├── webuploader.noimage.js # 去除图片处理的版本,包括HTML5和FLASH. 17 | ├── webuploader.noimage.min.js # min版本 18 | ├ 19 | ├── webuploader.custom.js # 自定义打包方案,请查看 Gruntfile.js,满足移动端使用。 20 | └── webuploader.custom.min.js # min版本 21 | ``` 22 | 23 | ## 示例 24 | 25 | 请把整个 Git 包下载下来放在 php 服务器下,因为默认提供的文件接受是用 php 编写的,打开 examples 页面便能查看示例效果。 -------------------------------------------------------------------------------- /back/static/js/demo/peity-demo.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $("span.pie").peity("pie", { 3 | fill: ['#1ab394', '#d7d7d7', '#ffffff'] 4 | }) 5 | 6 | $(".line").peity("line",{ 7 | fill: '#1ab394', 8 | stroke:'#169c81', 9 | }) 10 | 11 | $(".bar").peity("bar", { 12 | fill: ["#1ab394", "#d7d7d7"] 13 | }) 14 | 15 | $(".bar_dashboard").peity("bar", { 16 | fill: ["#1ab394", "#d7d7d7"], 17 | width:100 18 | }) 19 | 20 | var updatingChart = $(".updating-chart").peity("line", { fill: '#1ab394',stroke:'#169c81', width: 64 }) 21 | 22 | setInterval(function() { 23 | var random = Math.round(Math.random() * 10) 24 | var values = updatingChart.text().split(",") 25 | values.shift() 26 | values.push(random) 27 | 28 | updatingChart 29 | .text(values.join(",")) 30 | .change() 31 | }, 1000); 32 | 33 | }); 34 | -------------------------------------------------------------------------------- /back/static/js/plugins/markdown/bootstrap-markdown.zh.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Chinese translation for bootstrap-markdown 3 | * benhaile 4 | */ 5 | (function ($) { 6 | $.fn.markdown.messages.zh = { 7 | 'Bold': "粗体", 8 | 'Italic': "斜体", 9 | 'Heading': "标题", 10 | 'URL/Link': "链接", 11 | 'Image': "图片", 12 | 'List': "列表", 13 | 'Unordered List': "无序列表", 14 | 'Ordered List': "有序列表", 15 | 'Code': "代码", 16 | 'Quote': "引用", 17 | 'Preview': "预览", 18 | 'strong text': "粗体", 19 | 'emphasized text': "强调", 20 | 'heading text': "标题", 21 | 'enter link description here': "输入链接说明", 22 | 'Insert Hyperlink': "URL地址", 23 | 'enter image description here': "输入图片说明", 24 | 'Insert Image Hyperlink': "图片URL地址", 25 | 'enter image title here': "在这里输入图片标题", 26 | 'list text here': "这里是列表文本", 27 | 'code text here': "这里输入代码", 28 | 'quote here': "这里输入引用文本" 29 | 30 | 31 | }; 32 | }(jQuery)); 33 | -------------------------------------------------------------------------------- /templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {% block title %} {% endblock %} 8 | 9 | 10 | 12 | 13 | 14 | 15 | 18 | 19 | 20 | 21 | 22 | {% include "header.html" %} 23 |
24 | {% block content %}{% endblock %} 25 |
26 | {% include "footer.html" %} 27 | {% block js %} 28 | {% endblock %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/css/demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * blueimp Gallery Demo CSS 2.0.0 3 | * https://github.com/blueimp/Gallery 4 | * 5 | * Copyright 2013, Sebastian Tschan 6 | * https://blueimp.net 7 | * 8 | * Licensed under the MIT license: 9 | * http://www.opensource.org/licenses/MIT 10 | */ 11 | 12 | body { 13 | max-width: 750px; 14 | margin: 0 auto; 15 | padding: 1em; 16 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; 17 | font-size: 1em; 18 | line-height: 1.4em; 19 | background: #222; 20 | color: #fff; 21 | -webkit-text-size-adjust: 100%; 22 | -ms-text-size-adjust: 100%; 23 | } 24 | a { 25 | color: orange; 26 | text-decoration: none; 27 | } 28 | img { 29 | border: 0; 30 | vertical-align: middle; 31 | } 32 | h1 { 33 | line-height: 1em; 34 | } 35 | h2, 36 | .links { 37 | text-align: center; 38 | } 39 | 40 | @media (min-width: 481px) { 41 | .navigation { 42 | list-style: none; 43 | padding: 0; 44 | } 45 | .navigation li { 46 | display: inline-block; 47 | } 48 | .navigation li:not(:first-child):before { 49 | content: '| '; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /boss_drf/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path 3 | from back.api import index 4 | urlpatterns = [ 5 | path('', index.index), 6 | path('index/', index.index), 7 | path('datatable/', index.datatable), 8 | path('avgWageOfCityAndJob/', index.avgWageOfCityAndJob), 9 | path('everyJobTypeCountInCity/', index.everyJobTypeCountInCity), 10 | path('job_count_inCity/', index.job_count_inCity), 11 | path('educationAndExperienceOfCity/', index.educationAndExperienceOfCity), 12 | path('getJobsInfo/', index.getJobsInfo), 13 | path('avgWage/', index.getAvgSalaryByCityAndJobType), 14 | path('jobTypeCountOfCity/', index.getJobTypeCountByCity), 15 | path('jobCountsEveryCity/', index.getJobCountsByEveryCity), 16 | path('getEducationAndExperienceOfCity/', index.getEducationAndExperienceOfCity), 17 | path('onlineSpider/', index.onlineSpider), 18 | path('data_init/', index.data_init), 19 | path('data_init_page/', index.data_init_page), 20 | path('data_to_sql/', index.data_to_sql), 21 | path('predict_page/', index.predict_page), 22 | path('predict/', index.predict), 23 | 24 | 25 | 26 | ] 27 | -------------------------------------------------------------------------------- /back/static/css/plugins/multiselect/bootstrap-multiselect.css: -------------------------------------------------------------------------------- 1 | .multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px 3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.radio,.multiselect-container>li>a>label.checkbox{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0} 2 | -------------------------------------------------------------------------------- /back/static/js/demo/photos.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "", 4 | "title": "JSON请求的相册", 5 | "id": 8, 6 | "start": 0, 7 | "data": [ 8 | { 9 | "name": "越来越喜欢观察微小的事物", 10 | "pid": 109, 11 | "src": "http://f8.topitme.com/8/99/b0/1100251118d0cb0998l.jpg", 12 | "thumb": "http://f8.topitme.com/8/99/b0/1100251118d0cb0998l.jpg", 13 | "area": [ 14 | 510, 15 | 287 16 | ] 17 | }, 18 | { 19 | "name": "决定,意味着对与错的并存", 20 | "pid": 110, 21 | "src": "http://t.williamgates.net/image-9A50_54058FA3.jpg", 22 | "thumb": "http://t.williamgates.net/image-9A50_54058FA3.jpg", 23 | "area": [ 24 | 690, 25 | 431 26 | ] 27 | }, 28 | { 29 | "name": "给人姐姐般温暖的的邻家女孩", 30 | "pid": 111, 31 | "src": "http://t.williamgates.net/image-E9BF_54058FA3.jpg", 32 | "thumb": "http://t.williamgates.net/image-E9BF_54058FA3.jpg", 33 | "area": [ 34 | 690, 35 | 431 36 | ] 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /back/static/css/plugins/treeview/bootstrap-treeview.css: -------------------------------------------------------------------------------- 1 | /* ========================================================= 2 | * bootstrap-treeview.css v1.0.0 3 | * ========================================================= 4 | * Copyright 2013 Jonathan Miles 5 | * Project URL : http://www.jondmiles.com/bootstrap-treeview 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ========================================================= */ 19 | 20 | .list-group-item { 21 | cursor: pointer; 22 | } 23 | 24 | /*.list-group-item:hover { 25 | background-color: #f5f5f5; 26 | }*/ 27 | 28 | span.indent { 29 | margin-left: 10px; 30 | margin-right: 10px; 31 | } 32 | 33 | span.icon { 34 | margin-right: 5px; 35 | } 36 | -------------------------------------------------------------------------------- /back/static/js/plugins/validate/messages_zh.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Validation Plugin - v1.13.1 - 10/14/2014 2 | * http://jqueryvalidation.org/ 3 | * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ 4 | ! function (a) { 5 | "function" == typeof define && define.amd ? define(["jquery", "jquery.validate.min"], a) : a(jQuery) 6 | }(function (a) { 7 | var icon = " "; 8 | a.extend(a.validator.messages, { 9 | required: icon + "必填", 10 | remote: icon + "请修正此栏位", 11 | email: icon + "请输入有效的电子邮件", 12 | url: icon + "请输入有效的网址", 13 | date: icon + "请输入有效的日期", 14 | dateISO: icon + "请输入有效的日期 (YYYY-MM-DD)", 15 | number: icon + "请输入正确的数字", 16 | digits: icon + "只能输入数字", 17 | creditcard: icon + "请输入有效的信用卡号码", 18 | equalTo: icon + "你的输入不相同", 19 | extension: icon + "请输入有效的后缀", 20 | maxlength: a.validator.format(icon + "最多 {0} 个字"), 21 | minlength: a.validator.format(icon + "最少 {0} 个字"), 22 | rangelength: a.validator.format(icon + "请输入长度为 {0} 至 {1} 之间的字串"), 23 | range: a.validator.format(icon + "请输入 {0} 至 {1} 之间的数值"), 24 | max: a.validator.format(icon + "请输入不大于 {0} 的数值"), 25 | min: a.validator.format(icon + "请输入不小于 {0} 的数值") 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /back/static/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bootstrap Table Chinese translation 3 | * Author: Zhixin Wen 4 | */ 5 | (function ($) { 6 | 'use strict'; 7 | 8 | $.fn.bootstrapTable.locales['zh-CN'] = { 9 | formatLoadingMessage: function () { 10 | return '正在努力地加载数据中,请稍候……'; 11 | }, 12 | formatRecordsPerPage: function (pageNumber) { 13 | return '每页显示 ' + pageNumber + ' 条记录'; 14 | }, 15 | formatShowingRows: function (pageFrom, pageTo, totalRows) { 16 | return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录'; 17 | }, 18 | formatSearch: function () { 19 | return '搜索'; 20 | }, 21 | formatNoMatches: function () { 22 | return '没有找到匹配的记录'; 23 | }, 24 | formatPaginationSwitch: function () { 25 | return '隐藏/显示分页'; 26 | }, 27 | formatRefresh: function () { 28 | return '刷新'; 29 | }, 30 | formatToggle: function () { 31 | return '切换'; 32 | }, 33 | formatColumns: function () { 34 | return '列'; 35 | } 36 | }; 37 | 38 | $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); 39 | 40 | })(jQuery); 41 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /back/static/js/demo/bootstrap_table_test2.json: -------------------------------------------------------------------------------- 1 | 2 | [ 3 | { 4 | "name": "asSelect", 5 | "star": 777, 6 | "license": "MIT", 7 | "description": "A jQuery plugin to select multiple elements with checkboxes and radio:)", 8 | "url": "https://github.com/amazingSurger/jquery-asSelect" 9 | }, 10 | { 11 | "name": "Bootstrap Table", 12 | "star": 778, 13 | "license": "MIT & XXX", 14 | "description": "Bootstrap table displays data in a tabular format and offers rich support to radio, checkbox, sort, pagination and so on. ", 15 | "url": "https://github.com/wenzhixin/bootstrap-table" 16 | }, 17 | { 18 | "name": "asDatepicker", 19 | "star": 779, 20 | "license": "MIT", 21 | "description": "A jQuery datepicker plugin for best .", 22 | "url": "https://github.com/amazingSurger/jquery-asDatepicker" 23 | }, 24 | { 25 | "name": "asColorpicker", 26 | "star": 780, 27 | "license": "MIT", 28 | "description": "A jQuery colorpicker for best .", 29 | "url": "https://github.com/amazingSurger/jquery-asColorpicker" 30 | } 31 | ] 32 | -------------------------------------------------------------------------------- /back/static/js/plugins/layer/layim/data/groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "id": "100001", 7 | "name": "無言的蒁説", 8 | "face": "img/a1.jpg" 9 | }, 10 | { 11 | "id": "100002", 12 | "name": "婷宝奢侈品", 13 | "face": "img/a2.jpg" 14 | }, 15 | { 16 | "id": "100003", 17 | "name": "忆恨思爱", 18 | "face": "img/a3.jpg" 19 | }, 20 | { 21 | "id": "100004", 22 | "name": "天涯奥拓慢", 23 | "face": "img/a4.jpg" 24 | }, 25 | { 26 | "id": "100005", 27 | "name": "雨落无声的天空", 28 | "face": "img/a5.jpg" 29 | }, 30 | { 31 | "id": "100006", 32 | "name": "李越LycorisRadiate", 33 | "face": "img/a6.jpg" 34 | }, 35 | { 36 | "id": "100007", 37 | "name": "冯胖妞张直丑", 38 | "face": "img/a7.jpg" 39 | }, 40 | { 41 | "id": "100008", 42 | "name": "陈龙hmmm", 43 | "face": "img/a8.jpg" 44 | }, 45 | { 46 | "id": "100009", 47 | "name": "别闹哥胆儿小", 48 | "face": "img/a9.jpg" 49 | }, 50 | { 51 | "id": "100010", 52 | "name": "锅锅锅锅萌哒哒 ", 53 | "face": "img/a10.jpg" 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /back/static/js/plugins/suggest/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "", 3 | "value": [ 4 | { 5 | "userName": "淳芸", 6 | "shortAccount": "chunyun", 7 | "userId": 20001 8 | }, { 9 | "userName": "orion-01", 10 | "shortAccount": "chunyun", 11 | "userId": 20000 12 | }, { 13 | "userName": "穆晓晨", 14 | "shortAccount": "chunyun", 15 | "userId": 20002 16 | }, { 17 | "userName": "张欢引", 18 | "shortAccount": "chunyun", 19 | "userId": 20003 20 | }, { 21 | "userName": "吴琼", 22 | "shortAccount": "wuqiong", 23 | "userId": 20004 24 | }, { 25 | "userName": "吴东鹏", 26 | "shortAccount": "wudongpeng", 27 | "userId": 20005 28 | }, { 29 | "userName": "黄少铅", 30 | "shortAccount": "huangshaoqian", 31 | "userId": 20006 32 | }, { 33 | "userName": "胡运燕", 34 | "shortAccount": "yunyan", 35 | "userId": 20007 36 | }, { 37 | "userName": "刘幸", 38 | "shortAccount": "liuxing", 39 | "userId": 20008 40 | }, { 41 | "userName": "陈媛媛", 42 | "shortAccount": "chenyuanyuan", 43 | "userId": 20009 44 | }, { 45 | "userName": "旷东林", 46 | "shortAccount": "chunyun", 47 | "userId": 20010 48 | }, { 49 | "userName": "唐宏禹", 50 | "shortAccount": "chunyun", 51 | "userId": 20011 52 | }, { 53 | "userName": "旷东林", 54 | "shortAccount": "kuangdonglin", 55 | "userId": 20010 56 | }, { 57 | "userName": "唐宏禹", 58 | "shortAccount": "tanghongyu", 59 | "userId": 20011 60 | } 61 | ], 62 | "code": 200, 63 | "redirect": "" 64 | } 65 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | appdirs==1.4.4 2 | asgiref==3.7.2 3 | attrs==23.2.0 4 | autobahn==23.6.2 5 | Automat==22.10.0 6 | background==0.2.1 7 | certifi==2023.11.17 8 | cffi==1.16.0 9 | channels==4.0.0 10 | colorama==0.4.6 11 | constantly==23.10.4 12 | contourpy==1.2.0 13 | cryptography==42.0.0 14 | cycler==0.12.1 15 | daphne==4.0.0 16 | Django==5.0.1 17 | django-background-tasks==1.2.5 18 | django-compat==1.0.15 19 | dwebsocket==0.5.12 20 | Faker==18.10.0 21 | fonttools==4.47.2 22 | greenlet==3.0.3 23 | h11==0.14.0 24 | hyperlink==21.0.0 25 | idna==3.6 26 | importlib-metadata==7.0.1 27 | incremental==22.10.0 28 | kiwisolver==1.4.5 29 | lxml==5.1.0 30 | matplotlib==3.8.2 31 | mysqlclient==2.2.1 32 | nest-asyncio==1.6.0 33 | numpy==1.26.3 34 | outcome==1.3.0.post0 35 | packaging==23.2 36 | pandas==2.2.0 37 | pillow==10.2.0 38 | pyasn1==0.5.1 39 | pyasn1-modules==0.3.0 40 | pycparser==2.21 41 | pyee==8.2.2 42 | PyMySQL==1.1.0 43 | pyOpenSSL==24.0.0 44 | pyparsing==3.1.1 45 | pyppeteer==1.0.2 46 | PySocks==1.7.1 47 | python-dateutil==2.8.2 48 | pytz==2023.3.post1 49 | selenium==4.17.2 50 | service-identity==24.1.0 51 | six==1.16.0 52 | sniffio==1.3.0 53 | sortedcontainers==2.4.0 54 | SQLAlchemy==2.0.25 55 | sqlparse==0.4.4 56 | tqdm==4.66.1 57 | trio==0.24.0 58 | trio-websocket==0.11.1 59 | Twisted==23.10.0 60 | twisted-iocpsupport==1.0.4 61 | txaio==23.1.1 62 | typing_extensions==4.9.0 63 | tzdata==2023.4 64 | urllib3==1.26.18 65 | websockets==10.4 66 | wordcloud==1.9.3 67 | wsproto==1.2.0 68 | zipp==3.17.0 69 | zope.interface==6.1 70 | -------------------------------------------------------------------------------- /back/static/js/content.js: -------------------------------------------------------------------------------- 1 | // var $parentNode = window.parent.document; 2 | 3 | // function $childNode(name) { 4 | // return window.frames[name] 5 | // } 6 | 7 | // // tooltips 8 | // $('.tooltip-demo').tooltip({ 9 | // selector: "[data-toggle=tooltip]", 10 | // container: "body" 11 | // }); 12 | 13 | // // 使用animation.css修改Bootstrap Modal 14 | // $('.modal').appendTo("body"); 15 | 16 | // $("[data-toggle=popover]").popover(); 17 | 18 | 19 | //判断当前页面是否在iframe中 20 | if (top == this) { 21 | var gohome = '
'; 22 | $('body').append(gohome); 23 | } 24 | 25 | //animation.css 26 | function animationHover(element, animation) { 27 | element = $(element); 28 | element.hover( 29 | function () { 30 | element.addClass('animated ' + animation); 31 | }, 32 | function () { 33 | //动画完成之前移除class 34 | window.setTimeout(function () { 35 | element.removeClass('animated ' + animation); 36 | }, 2000); 37 | }); 38 | } 39 | 40 | //拖动面板 41 | function WinMove() { 42 | var element = "[class*=col]"; 43 | var handle = ".ibox-title"; 44 | var connect = "[class*=col]"; 45 | $(element).sortable({ 46 | handle: handle, 47 | connectWith: connect, 48 | tolerance: 'pointer', 49 | forcePlaceholderSize: true, 50 | opacity: 0.8, 51 | }) 52 | .disableSelection(); 53 | }; 54 | -------------------------------------------------------------------------------- /back/consumers.py: -------------------------------------------------------------------------------- 1 | import json 2 | import asyncio 3 | from channels.generic.websocket import AsyncWebsocketConsumer 4 | from channels.layers import get_channel_layer 5 | from asgiref.sync import async_to_sync 6 | from .utils.boss import run_crawl # 假设这是您的爬虫程序 7 | 8 | 9 | class ChatConsumer(AsyncWebsocketConsumer): 10 | def __init__(self, *args, **kwargs): 11 | super().__init__(*args, **kwargs) 12 | self.crawl_running = False # 控制爬虫运行的标志 13 | async def connect(self): 14 | await self.accept() 15 | 16 | async def disconnect(self, close_code): 17 | pass 18 | 19 | async def receive(self, text_data): 20 | text_data_json = json.loads(text_data) 21 | message = text_data_json['message'] 22 | 23 | if message == "start": 24 | self.crawl_running = True 25 | await self.start_crawl() 26 | elif message == "stop": 27 | self.crawl_running = False 28 | 29 | async def start_crawl(self): 30 | try: 31 | # 确保 run_crawl 是一个生成器 32 | for output in run_crawl(): 33 | if not self.crawl_running: 34 | break # 如果收到停止指令,退出循环 35 | send_msg = json.dumps({'message': output},ensure_ascii=False) 36 | # 解码 JSON 字符串中的 Unicode 转义字符 37 | print(f"向前端发送消息:{send_msg}") 38 | await self.send(text_data=send_msg) 39 | await asyncio.sleep(0.5) # 控制消息发送的速度 40 | except Exception as e: 41 | await self.send(text_data=json.dumps({'error': str(e)})) 42 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /back/utils/decorators.py: -------------------------------------------------------------------------------- 1 | from django.contrib.auth.decorators import login_required 2 | from django.shortcuts import HttpResponse 3 | """ 4 | 获取用户session中的信息并返回 5 | """ 6 | 7 | def get_user_from_session(view_func): 8 | def wrapper(request, *args, **kwargs): 9 | # 从会话中获取用户信息 10 | is_login = request.session.get('is_login') 11 | session_username = request.session.get("username") 12 | session_phone = request.session.get("phone") 13 | session_role = request.session.get("role") 14 | session_pic = request.session.get("pic") 15 | session_list = [is_login, session_username, session_phone, session_role, session_pic] 16 | # 将用户信息作为参数传递给视图函数 17 | return view_func(request, session_list=session_list,*args, **kwargs) 18 | return wrapper 19 | 20 | 21 | def has_permission(view_func): 22 | def _wrapped_view(request, *args, **kwargs): 23 | if request.user.is_authenticated: 24 | user_groups = Group.objects.filter(users=request.user) # 获取用户所属的权限组 25 | user_permissions = set() # 用于存储用户所具有的权限索引 26 | for group in user_groups: 27 | rules = group.rules.split(',') # 将权限组的rules字段拆分成索引列表 28 | user_permissions.update(rules) # 将权限索引添加到用户权限集合中 29 | requested_url = request.path_info # 获取请求的路由地址 30 | if requested_url in user_permissions: 31 | return view_func(request, *args, **kwargs) 32 | else: 33 | return HttpResponse("你没有访问这个页面的权限!") 34 | else: 35 | return HttpResponse("Please log in to access this page.") 36 | return login_required(_wrapped_view) 37 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /back/static/css/plugins/iCheck/custom.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-green.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-green.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-green.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-green.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-green { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-green.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-green.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-green.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-green.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 53 | .icheckbox_square-green, 54 | .iradio_square-green { 55 | background-image: url(green@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /back/static/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(a.resetView,1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery); 8 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pig Latin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pig Latin mode

27 |
39 | 40 | 47 | 48 |

49 | Simple mode that handles Pig Latin language. 50 |

51 | 52 |

MIME type defined: text/x-pig 53 | (PIG code) 54 | 55 |

56 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /back/static/js/plugins/layer/layim/data/group.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "name": "H+交流群", 7 | "nums": 36, 8 | "id": 1, 9 | "item": [ 10 | { 11 | "id": "101", 12 | "name": "H+ Bug反馈", 13 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 14 | }, 15 | { 16 | "id": "102", 17 | "name": "H+ 技术交流", 18 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 19 | } 20 | ] 21 | }, 22 | { 23 | "name": "Bootstrap", 24 | "nums": 16, 25 | "id": 2, 26 | "item": [ 27 | { 28 | "id": "103", 29 | "name": "Bootstrap中文", 30 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 31 | }, 32 | { 33 | "id": "104", 34 | "name": "Bootstrap资源", 35 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 36 | } 37 | ] 38 | }, 39 | { 40 | "name": "WebApp", 41 | "nums": 106, 42 | "id": 3, 43 | "item": [ 44 | { 45 | "id": "105", 46 | "name": "移动开发", 47 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 48 | }, 49 | { 50 | "id": "106", 51 | "name": "H5前言", 52 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 53 | } 54 | ] 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/sass/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Sass mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Sass mode

28 |
58 | 64 | 65 |

MIME types defined: text/x-sass.

66 |
67 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/perl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Perl mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Perl mode

27 | 28 | 29 |
67 | 68 | 73 | 74 |

MIME types defined: text/x-perl.

75 |
76 | -------------------------------------------------------------------------------- /back/static/js/demo/sparkline-demo.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | $("#sparkline1").sparkline([34, 43, 43, 35, 44, 32, 44, 52, 25], { 3 | type: 'line', 4 | lineColor: '#17997f', 5 | fillColor: '#1ab394', 6 | }); 7 | $("#sparkline2").sparkline([5, 6, 7, 2, 0, -4, -2, 4], { 8 | type: 'bar', 9 | barColor: '#1ab394', 10 | negBarColor: '#c6c6c6'}); 11 | 12 | $("#sparkline3").sparkline([1, 1, 2], { 13 | type: 'pie', 14 | sliceColors: ['#1ab394', '#b3b3b3', '#e4f0fb']}); 15 | 16 | $("#sparkline4").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], { 17 | type: 'line', 18 | lineColor: '#17997f', 19 | fillColor: '#ffffff', 20 | }); 21 | 22 | $("#sparkline5").sparkline([1, 1, 0, 1, -1, -1, 1, -1, 0, 0, 1, 1], { 23 | type: 'tristate', 24 | posBarColor: '#1ab394', 25 | negBarColor: '#bfbfbf'}); 26 | 27 | 28 | $("#sparkline6").sparkline([4, 6, 7, 7, 4, 3, 2, 1, 4, 4, 5, 6, 3, 4, 5, 8, 7, 6, 9, 3, 2, 4, 1, 5, 6, 4, 3, 7, ], { 29 | type: 'discrete', 30 | lineColor: '#1ab394'}); 31 | 32 | $("#sparkline7").sparkline([52, 12, 44], { 33 | type: 'pie', 34 | height: '150px', 35 | sliceColors: ['#1ab394', '#b3b3b3', '#e4f0fb']}); 36 | 37 | $("#sparkline8").sparkline([5, 6, 7, 2, 0, 4, 2, 4, 5, 7, 2, 4, 12, 14, 4, 2, 14, 12, 7], { 38 | type: 'bar', 39 | barWidth: 8, 40 | height: '150px', 41 | barColor: '#1ab394', 42 | negBarColor: '#c6c6c6'}); 43 | 44 | $("#sparkline9").sparkline([34, 43, 43, 35, 44, 32, 15, 22, 46, 33, 86, 54, 73, 53, 12, 53, 23, 65, 23, 63, 53, 42, 34, 56, 76, 15, 54, 23, 44], { 45 | type: 'line', 46 | lineWidth: 1, 47 | height: '150px', 48 | lineColor: '#17997f', 49 | fillColor: '#ffffff', 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/idl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: IDL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

IDL mode

27 | 28 |
52 | 62 | 63 |

MIME types defined: text/x-idl.

64 |
65 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/dart/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Dart mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Dart mode

27 |
28 | 62 |
63 | 64 | 70 | 71 |
72 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/xml/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } 7 | 8 | MT("matching", 9 | "[tag&bracket <][tag top][tag&bracket >]", 10 | " text", 11 | " [tag&bracket <][tag inner][tag&bracket />]", 12 | "[tag&bracket ]"); 13 | 14 | MT("nonmatching", 15 | "[tag&bracket <][tag top][tag&bracket >]", 16 | " [tag&bracket <][tag inner][tag&bracket />]", 17 | " [tag&bracket ]"); 18 | 19 | MT("doctype", 20 | "[meta ]", 21 | "[tag&bracket <][tag top][tag&bracket />]"); 22 | 23 | MT("cdata", 24 | "[tag&bracket <][tag top][tag&bracket >]", 25 | " [atom ]", 27 | "[tag&bracket ]"); 28 | 29 | // HTML tests 30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); 31 | 32 | MT("selfclose", 33 | "[tag&bracket <][tag html][tag&bracket >]", 34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", 35 | "[tag&bracket ]"); 36 | 37 | MT("list", 38 | "[tag&bracket <][tag ol][tag&bracket >]", 39 | " [tag&bracket <][tag li][tag&bracket >]one", 40 | " [tag&bracket <][tag li][tag&bracket >]two", 41 | "[tag&bracket ]"); 42 | 43 | MT("valueless", 44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); 45 | 46 | MT("pThenArticle", 47 | "[tag&bracket <][tag p][tag&bracket >]", 48 | " foo", 49 | "[tag&bracket <][tag article][tag&bracket >]bar"); 50 | 51 | })(); 52 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/jinja2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Jinja2 mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Jinja2 mode

27 |
49 | 54 |
55 | -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/css/blueimp-gallery-indicator.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * blueimp Gallery Indicator CSS 1.1.0 4 | * https://github.com/blueimp/Gallery 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .blueimp-gallery > .indicator { 14 | position: absolute; 15 | top: auto; 16 | right: 15px; 17 | bottom: 15px; 18 | left: 15px; 19 | margin: 0 40px; 20 | padding: 0; 21 | list-style: none; 22 | text-align: center; 23 | line-height: 10px; 24 | display: none; 25 | } 26 | .blueimp-gallery > .indicator > li { 27 | display: inline-block; 28 | width: 9px; 29 | height: 9px; 30 | margin: 6px 3px 0 3px; 31 | -webkit-box-sizing: content-box; 32 | -moz-box-sizing: content-box; 33 | box-sizing: content-box; 34 | border: 1px solid transparent; 35 | background: #ccc; 36 | background: rgba(255, 255, 255, 0.25) center no-repeat; 37 | border-radius: 5px; 38 | box-shadow: 0 0 2px #000; 39 | opacity: 0.5; 40 | cursor: pointer; 41 | } 42 | .blueimp-gallery > .indicator > li:hover, 43 | .blueimp-gallery > .indicator > .active { 44 | background-color: #fff; 45 | border-color: #fff; 46 | opacity: 1; 47 | } 48 | .blueimp-gallery-controls > .indicator { 49 | display: block; 50 | /* Fix z-index issues (controls behind slide element) on Android: */ 51 | -webkit-transform: translateZ(0); 52 | -moz-transform: translateZ(0); 53 | -ms-transform: translateZ(0); 54 | -o-transform: translateZ(0); 55 | transform: translateZ(0); 56 | } 57 | .blueimp-gallery-single > .indicator { 58 | display: none; 59 | } 60 | .blueimp-gallery > .indicator { 61 | -webkit-user-select: none; 62 | -khtml-user-select: none; 63 | -moz-user-select: none; 64 | -ms-user-select: none; 65 | user-select: none; 66 | } 67 | 68 | /* IE7 fixes */ 69 | *+html .blueimp-gallery > .indicator > li { 70 | display: inline; 71 | } 72 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/css/less_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | "use strict"; 6 | 7 | var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); 8 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } 9 | 10 | MT("variable", 11 | "[variable-2 @base]: [atom #f04615];", 12 | "[qualifier .class] {", 13 | " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", 14 | " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", 15 | "}"); 16 | 17 | MT("amp", 18 | "[qualifier .child], [qualifier .sibling] {", 19 | " [qualifier .parent] [atom &] {", 20 | " [property color]: [keyword black];", 21 | " }", 22 | " [atom &] + [atom &] {", 23 | " [property color]: [keyword red];", 24 | " }", 25 | "}"); 26 | 27 | MT("mixin", 28 | "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", 29 | " [property color]: [variable darken]([variable-2 @color], [number 10%]);", 30 | "}", 31 | "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", 32 | " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", 33 | "}", 34 | "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", 35 | " [property display]: [atom block];", 36 | "}", 37 | "[variable-2 @switch]: [variable light];", 38 | "[qualifier .class] {", 39 | " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", 40 | "}"); 41 | 42 | MT("nest", 43 | "[qualifier .one] {", 44 | " [def @media] ([property width]: [number 400px]) {", 45 | " [property font-size]: [number 1.2em];", 46 | " [def @media] [attribute print] [keyword and] [property color] {", 47 | " [property color]: [keyword blue];", 48 | " }", 49 | " }", 50 | "}"); 51 | })(); 52 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/shell/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({}, "shell"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("var", 9 | "text [def $var] text"); 10 | MT("varBraces", 11 | "text[def ${var}]text"); 12 | MT("varVar", 13 | "text [def $a$b] text"); 14 | MT("varBracesVarBraces", 15 | "text[def ${a}${b}]text"); 16 | 17 | MT("singleQuotedVar", 18 | "[string 'text $var text']"); 19 | MT("singleQuotedVarBraces", 20 | "[string 'text ${var} text']"); 21 | 22 | MT("doubleQuotedVar", 23 | '[string "text ][def $var][string text"]'); 24 | MT("doubleQuotedVarBraces", 25 | '[string "text][def ${var}][string text"]'); 26 | MT("doubleQuotedVarPunct", 27 | '[string "text ][def $@][string text"]'); 28 | MT("doubleQuotedVarVar", 29 | '[string "][def $a$b][string "]'); 30 | MT("doubleQuotedVarBracesVarBraces", 31 | '[string "][def ${a}${b}][string "]'); 32 | 33 | MT("notAString", 34 | "text\\'text"); 35 | MT("escapes", 36 | "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); 37 | 38 | MT("subshell", 39 | "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); 40 | MT("doubleQuotedSubshell", 41 | "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); 42 | 43 | MT("hashbang", 44 | "[meta #!/bin/bash]"); 45 | MT("comment", 46 | "text [comment # Blurb]"); 47 | 48 | MT("numbers", 49 | "[number 0] [number 1] [number 2]"); 50 | MT("keywords", 51 | "[keyword while] [atom true]; [keyword do]", 52 | " [builtin sleep] [number 3]", 53 | "[keyword done]"); 54 | MT("options", 55 | "[builtin ls] [attribute -l] [attribute --human-readable]"); 56 | MT("operator", 57 | "[def var][operator =]value"); 58 | })(); 59 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/dart/dart.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../clike/clike")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../clike/clike"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var keywords = ("this super static final const abstract class extends external factory " + 15 | "implements get native operator set typedef with enum throw rethrow " + 16 | "assert break case continue default in return new deferred async await " + 17 | "try catch finally do else for if switch while import library export " + 18 | "part of show hide is").split(" "); 19 | var blockKeywords = "try catch finally do else for if switch while".split(" "); 20 | var atoms = "true false null".split(" "); 21 | var builtins = "void bool num int double dynamic var String".split(" "); 22 | 23 | function set(words) { 24 | var obj = {}; 25 | for (var i = 0; i < words.length; ++i) obj[words[i]] = true; 26 | return obj; 27 | } 28 | 29 | CodeMirror.defineMIME("application/dart", { 30 | name: "clike", 31 | keywords: set(keywords), 32 | multiLineStrings: true, 33 | blockKeywords: set(blockKeywords), 34 | builtin: set(builtins), 35 | atoms: set(atoms), 36 | hooks: { 37 | "@": function(stream) { 38 | stream.eatWhile(/[\w\$_]/); 39 | return "meta"; 40 | } 41 | } 42 | }); 43 | 44 | CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); 45 | 46 | // This is needed to make loading through meta.js work. 47 | CodeMirror.defineMode("dart", function(conf) { 48 | return CodeMirror.getMode(conf, "application/dart"); 49 | }, "clike"); 50 | }); 51 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/shell/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Shell mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
29 |

Shell mode

30 | 31 | 32 | 56 | 57 | 64 | 65 |

MIME types defined: text/x-sh.

66 |
67 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/sparql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: SPARQL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

SPARQL mode

28 |
52 | 58 | 59 |

MIME types defined: application/sparql-query.

60 | 61 |
62 | -------------------------------------------------------------------------------- /back/utils/data2sql.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import create_engine 2 | import os 3 | from back.utils.Tools import find_csv_files 4 | import pandas as pd 5 | # 数据库连接信息(根据你的数据库信息进行替换) 6 | username = 'root' 7 | password = '123456' 8 | host = '127.0.0.1' 9 | database = 'boss_drf' 10 | port = '3306' 11 | 12 | # 创建数据库连接 13 | engine = create_engine(f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}', echo=True) 14 | 15 | current_directory = os.path.dirname(os.path.abspath(__file__)) 16 | os.chdir(current_directory) 17 | def single_data_import(csv_path,table_name): 18 | """ 19 | 将单个CSV导入数据库中 20 | :param csv_path:CSV文件路径 21 | :param table_name:导入的表名 22 | :return: 23 | """ 24 | csv = pd.read_csv(csv_path) 25 | # 为数据添加 'status' 列,其值为 1 26 | # csv['status'] = 1 27 | # 将数据导入到 MySQL 数据库中(假设表名为 your_table) 28 | csv.to_sql(table_name, con=engine, if_exists='append', index=False) 29 | 30 | 31 | 32 | def all_csv_conbine(): 33 | """ 34 | 将目录下所有CSV合并为一个CSV文件 35 | :return: 36 | """ 37 | # 定义一个空的 DataFrame 用于存储合并后的数据 38 | combined_csv = pd.DataFrame() 39 | food_data_path_prefix = "./data" 40 | csv_files = find_csv_files(food_data_path_prefix) 41 | 42 | # 使用列表推导式读取所有文件 43 | dfs = [pd.read_csv(file.replace('\\', '/')) for file in csv_files] 44 | 45 | # 使用 pd.concat() 合并所有 DataFrame 46 | combined_csv = pd.concat(dfs, ignore_index=True) 47 | 48 | # 保存合并后的 CSV 文件 49 | combined_csv.to_csv("combined_csv.csv", index=False) 50 | 51 | def all_data_import(): 52 | """ 53 | 将目录下所有CSV文件导入到MYSQL中 54 | :return: 55 | """ 56 | food_data_path_prefix = "./File" 57 | food_data_table = 'back_jobinfo' 58 | csv_files = find_csv_files(food_data_path_prefix) 59 | for file in csv_files: 60 | single_data_import(file.replace('\\', '/'),food_data_table) 61 | # single_data_import('all_types.csv',food_types_table) 62 | 63 | def run_sql(): 64 | all_data_import() # 目录下CSV文件导入数据库中 65 | if __name__ == '__main__': 66 | all_data_import() # 目录下CSV文件导入数据库中 67 | # all_csv_conbine() # 目录下所有CSV合并至一个CSV中 -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/tornado/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tornado template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Tornado template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Tornado template markup.

61 | 62 |

MIME types defined: text/x-tornado

63 |
64 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/django/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Django template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Django template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Django template markup.

61 | 62 |

MIME types defined: text/x-django

63 |
64 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/gas/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gas mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gas mode

27 |
28 | 50 |
51 | 52 | 58 | 59 |

Handles AT&T assembler syntax (more specifically this handles 60 | the GNU Assembler (gas) syntax.) 61 | It takes a single optional configuration parameter: 62 | architecture, which can be one of "ARM", 63 | "ARMv6" or "x86". 64 | Including the parameter adds syntax for the registers and special 65 | directives for the supplied architecture. 66 | 67 |

MIME types defined: text/x-gas

68 |
69 | -------------------------------------------------------------------------------- /back/static/css/plugins/duallistbox/bootstrap-duallistbox.css: -------------------------------------------------------------------------------- 1 | .bootstrap-duallistbox-container .buttons { 2 | width:calc(100% + 1px); 3 | margin-bottom: -6px; 4 | box-sizing: border-box; 5 | } 6 | 7 | .bootstrap-duallistbox-container label { 8 | display: block; 9 | } 10 | 11 | .bootstrap-duallistbox-container .info { 12 | display: inline-block; 13 | margin-bottom: 5px; 14 | } 15 | 16 | .bootstrap-duallistbox-container .clear1, 17 | .bootstrap-duallistbox-container .clear2 { 18 | display: none; 19 | font-size: 10px; 20 | } 21 | 22 | .bootstrap-duallistbox-container .box1.filtered .clear1, 23 | .bootstrap-duallistbox-container .box2.filtered .clear2 { 24 | display: inline-block; 25 | } 26 | 27 | .bootstrap-duallistbox-container .move, 28 | .bootstrap-duallistbox-container .remove { 29 | width: 50%;box-sizing: border-box; 30 | } 31 | 32 | .bootstrap-duallistbox-container .btn-group .btn { 33 | border-bottom-left-radius: 0; 34 | border-bottom-right-radius: 0; 35 | } 36 | .bootstrap-duallistbox-container select { 37 | border-top-left-radius: 0; 38 | border-top-right-radius: 0; 39 | } 40 | 41 | .bootstrap-duallistbox-container .moveall, 42 | .bootstrap-duallistbox-container .removeall { 43 | width: 50%;box-sizing: border-box; 44 | } 45 | 46 | .bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn { 47 | margin-left: 0; 48 | } 49 | 50 | .bootstrap-duallistbox-container select { 51 | height: 300px; 52 | box-sizing: border-box; 53 | } 54 | .bootstrap-duallistbox-container select:focus{ 55 | border-color: #e5e6e7!important; 56 | } 57 | 58 | .bootstrap-duallistbox-container .filter { 59 | display: inline-block; 60 | width: 100%; 61 | height: 31px;margin-bottom:-1px; 62 | -webkit-box-sizing: border-box; 63 | -moz-box-sizing: border-box; 64 | } 65 | 66 | .bootstrap-duallistbox-container .filter.placeholder { 67 | color: #aaa; 68 | } 69 | 70 | .bootstrap-duallistbox-container.moveonselect .move, 71 | .bootstrap-duallistbox-container.moveonselect .remove { 72 | display:none; 73 | } 74 | 75 | .bootstrap-duallistbox-container.moveonselect .moveall, 76 | .bootstrap-duallistbox-container.moveonselect .removeall { 77 | width: 100%; 78 | } 79 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/toml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TOML Mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TOML Mode

27 |
64 | 70 |

The TOML Mode

71 |

Created by Forbes Lindesay.

72 |

MIME type defined: text/x-toml.

73 |
74 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/tiki/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tiki wiki mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Tiki wiki mode

28 | 29 | 30 |
87 | 88 | 94 | 95 |
96 | -------------------------------------------------------------------------------- /back/utils/predict_model.py: -------------------------------------------------------------------------------- 1 | """模型预测""" 2 | import os 3 | import pandas 4 | import re 5 | from tqdm import tqdm 6 | import copy 7 | import pickle 8 | 9 | current_directory = os.path.dirname(os.path.abspath(__file__)) 10 | os.chdir(current_directory) 11 | class Score_model: 12 | def __init__(self): 13 | self.vector_weight=pandas.read_pickle('data/vector_weight.pickle') 14 | 15 | def count_score(self,skills):#计算技能点得分情况 16 | scores=[] 17 | for jobname in self.vector_weight.keys(): 18 | vector=self.vector_weight[jobname] 19 | score=0 20 | for skill in skills: 21 | if skill in vector.keys(): 22 | score+=vector[skill] 23 | scores.append([jobname,score]) 24 | scores.sort(key=lambda x: x[1], reverse=True) 25 | return scores 26 | 27 | def predict(self,skills): 28 | result=[] 29 | mix_scores=0 30 | scores=self.count_score(skills) 31 | for i in range(len(scores)): 32 | if i>=3 or scores[i][1]<=4: 33 | break 34 | result.append(scores[i]) 35 | mix_scores+=scores[i][1] 36 | for i in range(len(result)): 37 | result[i][1]=str(int(result[i][1]/mix_scores*100))+"%" 38 | return result 39 | 40 | def model_ceshi(skill): 41 | model=Score_model() 42 | # skill=['Vue','Django','全栈工程师','爬虫','运维经验','Nginx'] 43 | result=model.predict(skill) 44 | print(result) 45 | return result 46 | def model_test(): 47 | model=Score_model() 48 | x=0 49 | y=0 50 | data=pandas.read_csv('File/Boss_jobitem.csv') 51 | for i in range(len(data)): 52 | result=model.predict(re.split('[ 、]',str(data['skill'][i]))) 53 | print(result) 54 | if len(result)!=0: 55 | x+=1 56 | for xc in result: 57 | if xc[0]==data['Type'][i]: 58 | y+=1 59 | break 60 | print('权重阈值: 2') 61 | print('得分公式特征词权重 v1: 80%') 62 | print('得分公式学历权重 v2: 10%') 63 | print('得分公式经验权重 v3: 5%') 64 | print('得分公式其它因素权重 v4: 5%') 65 | print('当前模型的准确率为:'+str(y/x)) 66 | return str(y/x) 67 | # model_ceshi() -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/octave/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Octave mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Octave mode

27 | 28 |
71 | 81 | 82 |

MIME types defined: text/x-octave.

83 |
84 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/cypher/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Cypher Mode for CodeMirror 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 17 | 30 | 31 |
32 |

Cypher Mode for CodeMirror

33 |
34 | 40 |
41 |

MIME types defined: 42 | application/x-cypher-query 43 |

44 | 62 | 63 |
64 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/pegjs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CodeMirror: PEG.js Mode 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
30 |

PEG.js Mode

31 |
56 | 62 |

The PEG.js Mode

63 |

Created by Forbes Lindesay.

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/xml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: XML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

XML mode

27 |
39 | 45 |

The XML mode supports two configuration parameters:

46 |
47 |
htmlMode (boolean)
48 |
This switches the mode to parse HTML instead of XML. This 49 | means attributes do not have to be quoted, and some elements 50 | (such as br) do not require a closing tag.
51 |
alignCDATA (boolean)
52 |
Setting this to true will force the opening tag of CDATA 53 | blocks to not be indented.
54 |
55 | 56 |

MIME types defined: application/xml, text/html.

57 |
58 | -------------------------------------------------------------------------------- /back/static/js/plugins/prettyfile/bootstrap-prettyfile.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery and Bootsrap3 Plugin prettyFile 3 | * 4 | * version 2.0, Jan 20th, 2014 5 | * by episage, sujin2f 6 | * Git repository : https://github.com/episage/bootstrap-3-pretty-file-upload 7 | */ 8 | ( function( $ ) { 9 | $.fn.extend({ 10 | prettyFile: function( options ) { 11 | var defaults = { 12 | text : "选择文件" 13 | }; 14 | 15 | var options = $.extend(defaults, options); 16 | var plugin = this; 17 | 18 | function make_form( $el, text ) { 19 | $el.wrap('
'); 20 | 21 | $el.hide(); 22 | $el.after( '\ 23 |
\ 24 | \ 25 | \ 26 | \ 27 | \ 28 |
\ 29 | ' ); 30 | 31 | return $el.parent(); 32 | }; 33 | 34 | function bind_change( $wrap, multiple ) { 35 | $wrap.find( 'input[type="file"]' ).change(function () { 36 | // When original file input changes, get its value, show it in the fake input 37 | var files = $( this )[0].files, 38 | info = ''; 39 | 40 | if ( files.length == 0 ) 41 | return false; 42 | 43 | if ( !multiple || files.length == 1 ) { 44 | var path = $( this ).val().split('\\'); 45 | info = path[path.length - 1]; 46 | } else if ( files.length > 1 ) { 47 | // Display number of selected files instead of filenames 48 | info = "已选择了" + files.length + ' 个文件'; 49 | } 50 | 51 | $wrap.find('.input-append input').val( info ); 52 | }); 53 | }; 54 | 55 | function bind_button( $wrap, multiple ) { 56 | $wrap.find( '.input-append' ).click( function( e ) { 57 | e.preventDefault(); 58 | $wrap.find( 'input[type="file"]' ).click(); 59 | }); 60 | }; 61 | 62 | return plugin.each( function() { 63 | $this = $( this ); 64 | 65 | if ( $this ) { 66 | var multiple = $this.attr( 'multiple' ); 67 | 68 | $wrap = make_form( $this, options.text ); 69 | bind_change( $wrap, multiple ); 70 | bind_button( $wrap ); 71 | } 72 | }); 73 | } 74 | }); 75 | }( jQuery )); 76 | 77 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/smalltalk/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Smalltalk mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 29 | 30 |
31 |

Smalltalk mode

32 |
55 | 56 | 64 | 65 |

Simple Smalltalk mode.

66 | 67 |

MIME types defined: text/x-stsrc.

68 |
69 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/htmlembedded/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Html Embedded Scripts mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
30 |

Html Embedded Scripts mode

31 |
43 | 44 | 52 | 53 |

Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on 54 | JavaScript, CSS and XML.
Other dependancies include those of the scriping language chosen.

55 | 56 |

MIME types defined: application/x-aspx (ASP.NET), 57 | application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages)

58 |
59 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/soy/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Soy (Closure Template) mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | 30 |
31 |

Soy (Closure Template) mode

32 |
55 | 56 | 65 | 66 |

A mode for Closure Templates (Soy).

67 |

MIME type defined: text/x-soy.

68 |
69 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: CSS mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

CSS mode

30 |
65 | 70 | 71 |

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

72 | 73 |

Parsing/Highlighting Tests: normal, verbose.

74 | 75 |
76 | -------------------------------------------------------------------------------- /back/static/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css: -------------------------------------------------------------------------------- 1 | /* Ion.RangeSlider, Flat UI Skin 2 | // css version 1.8.5 3 | // by Denis Ineshin | ionden.com 4 | // ===================================================================================================================*/ 5 | 6 | /* ===================================================================================================================== 7 | // Skin details */ 8 | 9 | .irs-line-mid, 10 | .irs-line-left, 11 | .irs-line-right, 12 | .irs-diapason, 13 | .irs-slider { 14 | background: url(../images/sprite-skin-flat.png) repeat-x; 15 | } 16 | 17 | .irs { 18 | height: 40px; 19 | } 20 | .irs-with-grid { 21 | height: 60px; 22 | } 23 | .irs-line { 24 | height: 12px; top: 25px; 25 | } 26 | .irs-line-left { 27 | height: 12px; 28 | background-position: 0 -30px; 29 | } 30 | .irs-line-mid { 31 | height: 12px; 32 | background-position: 0 0; 33 | } 34 | .irs-line-right { 35 | height: 12px; 36 | background-position: 100% -30px; 37 | } 38 | 39 | .irs-diapason { 40 | height: 12px; top: 25px; 41 | background-position: 0 -60px; 42 | } 43 | 44 | .irs-slider { 45 | width: 16px; height: 18px; 46 | top: 22px; 47 | background-position: 0 -90px; 48 | } 49 | #irs-active-slider, .irs-slider:hover { 50 | background-position: 0 -120px; 51 | } 52 | 53 | .irs-min, .irs-max { 54 | color: #999; 55 | font-size: 10px; line-height: 1.333; 56 | text-shadow: none; 57 | top: 0; padding: 1px 3px; 58 | background: #e1e4e9; 59 | border-radius: 4px; 60 | } 61 | 62 | .irs-from, .irs-to, .irs-single { 63 | color: #fff; 64 | font-size: 10px; line-height: 1.333; 65 | text-shadow: none; 66 | padding: 1px 5px; 67 | background: #ed5565; 68 | border-radius: 4px; 69 | } 70 | .irs-from:after, .irs-to:after, .irs-single:after { 71 | position: absolute; display: block; content: ""; 72 | bottom: -6px; left: 50%; 73 | width: 0; height: 0; 74 | margin-left: -3px; 75 | overflow: hidden; 76 | border: 3px solid transparent; 77 | border-top-color: #ed5565; 78 | } 79 | 80 | 81 | .irs-grid-pol { 82 | background: #e1e4e9; 83 | } 84 | .irs-grid-text { 85 | color: #999; 86 | } 87 | 88 | .irs-disabled { 89 | } 90 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/php/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: PHP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 30 | 31 |
32 |

PHP mode

33 |
48 | 49 | 58 | 59 |

Simple HTML/PHP mode based on 60 | the C-like mode. Depends on XML, 61 | JavaScript, CSS, HTMLMixed, and C-like modes.

62 | 63 |

MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

64 |
65 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/modelica/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Modelica mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Modelica mode

30 | 31 |
52 | 53 | 62 | 63 |

Simple mode that tries to handle Modelica as well as it can.

64 | 65 |

MIME types defined: text/x-modelica 66 | (Modlica code).

67 |
68 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/apl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: APL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
29 |

APL mode

30 |
56 | 57 | 64 | 65 |

Simple mode that tries to handle APL as well as it can.

66 |

It attempts to label functions/operators based upon 67 | monadic/dyadic usage (but this is far from fully fleshed out). 68 | This means there are meaningful classnames so hover states can 69 | have popups etc.

70 | 71 |

MIME types defined: text/apl (APL code)

72 |
73 | -------------------------------------------------------------------------------- /back/static/css/login.css: -------------------------------------------------------------------------------- 1 | html{height: 100%;} 2 | body.signin { 3 | background: #18c8f6; 4 | height: auto; 5 | background:url("../img/login-background.jpg") no-repeat center fixed; 6 | -webkit-background-size: cover; 7 | -moz-background-size: cover; 8 | -o-background-size: cover; 9 | background-size: cover; 10 | color: rgba(255,255,255,.95); 11 | } 12 | 13 | .signinpanel { 14 | width: 320px; 15 | margin: 10% auto 0 auto; 16 | } 17 | 18 | .signinpanel .logopanel { 19 | float: none; 20 | width: auto; 21 | padding: 0; 22 | background: none; 23 | } 24 | 25 | .signinpanel .signin-info ul { 26 | list-style: none; 27 | padding: 0; 28 | margin: 20px 0; 29 | } 30 | 31 | .signinpanel .form-control { 32 | display: block; 33 | margin-top: 15px; 34 | } 35 | 36 | .signinpanel .uname { 37 | background: #fff url(../img/user.png) no-repeat 95% center;color:#333; 38 | } 39 | 40 | .signinpanel .pword { 41 | background: #fff url(../img/locked.png) no-repeat 95% center;color:#333; 42 | } 43 | 44 | .signinpanel .btn { 45 | margin-top: 15px; 46 | } 47 | 48 | .signinpanel form { 49 | background: rgba(255, 255, 255, 0.2); 50 | border: 1px solid rgba(255,255,255,.3); 51 | -moz-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 52 | -webkit-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 53 | box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 54 | -moz-border-radius: 3px; 55 | -webkit-border-radius: 3px; 56 | border-radius: 3px; 57 | padding: 30px; 58 | } 59 | 60 | .signup-footer{border-top: solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top: 15px;} 61 | 62 | @media screen and (max-width: 768px) { 63 | .signinpanel, 64 | .signuppanel { 65 | margin: 0 auto; 66 | width: 420px!important; 67 | padding: 20px; 68 | } 69 | .signinpanel form { 70 | margin-top: 20px; 71 | } 72 | .signup-footer { 73 | margin-bottom: 10px; 74 | } 75 | .signuppanel .form-control { 76 | margin-bottom: 10px; 77 | } 78 | .signup-footer .pull-left, 79 | .signup-footer .pull-right { 80 | float: none !important; 81 | text-align: center; 82 | } 83 | .signinpanel .signin-info ul { 84 | display: none; 85 | } 86 | } 87 | @media screen and (max-width: 320px) { 88 | .signinpanel, 89 | .signuppanel { 90 | margin:0 20px; 91 | width:auto; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/haml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HAML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
30 |

HAML mode

31 |
68 | 74 | 75 |

MIME types defined: text/x-haml.

76 | 77 |

Parsing/Highlighting Tests: normal, verbose.

78 | 79 |
80 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/lua/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Lua mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
28 |

Lua mode

29 |
70 | 76 | 77 |

Loosely based on Franciszek 78 | Wawrzak's CodeMirror 79 | 1 mode. One configuration parameter is 80 | supported, specials, to which you can provide an 81 | array of strings to have those identifiers highlighted with 82 | the lua-special style.

83 |

MIME types defined: text/x-lua.

84 | 85 |
86 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/yaml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: YAML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

YAML mode

27 |
74 | 77 | 78 |

MIME types defined: text/x-yaml.

79 | 80 |
81 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/javascript/json-ld.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: JSON-LD mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

JSON-LD mode

30 | 31 | 32 |
61 | 62 | 70 | 71 |

This is a specialization of the JavaScript mode.

72 |
73 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/rpm/changes/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: RPM changes mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
28 |

RPM changes mode

29 | 30 |
57 | 64 | 65 |

MIME types defined: text/x-rpm-changes.

66 |
67 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/erlang/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Erlang mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
28 |

Erlang mode

29 |
65 | 66 | 74 | 75 |

MIME types defined: text/x-erlang.

76 |
77 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/haskell/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Haskell mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
28 |

Haskell mode

29 |
63 | 64 | 71 | 72 |

MIME types defined: text/x-haskell.

73 |
74 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/dockerfile/dockerfile.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../../addon/mode/simple"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | // Collect all Dockerfile directives 15 | var instructions = ["from", "maintainer", "run", "cmd", "expose", "env", 16 | "add", "copy", "entrypoint", "volume", "user", 17 | "workdir", "onbuild"], 18 | instructionRegex = "(" + instructions.join('|') + ")", 19 | instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"), 20 | instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i"); 21 | 22 | CodeMirror.defineSimpleMode("dockerfile", { 23 | start: [ 24 | // Block comment: This is a line starting with a comment 25 | { 26 | regex: /#.*$/, 27 | token: "comment" 28 | }, 29 | // Highlight an instruction without any arguments (for convenience) 30 | { 31 | regex: instructionOnlyLine, 32 | token: "variable-2" 33 | }, 34 | // Highlight an instruction followed by arguments 35 | { 36 | regex: instructionWithArguments, 37 | token: ["variable-2", null], 38 | next: "arguments" 39 | }, 40 | { 41 | regex: /./, 42 | token: null 43 | } 44 | ], 45 | arguments: [ 46 | { 47 | // Line comment without instruction arguments is an error 48 | regex: /#.*$/, 49 | token: "error", 50 | next: "start" 51 | }, 52 | { 53 | regex: /[^#]+\\$/, 54 | token: null 55 | }, 56 | { 57 | // Match everything except for the inline comment 58 | regex: /[^#]+/, 59 | token: null, 60 | next: "start" 61 | }, 62 | { 63 | regex: /$/, 64 | token: null, 65 | next: "start" 66 | }, 67 | // Fail safe return to start 68 | { 69 | token: null, 70 | next: "start" 71 | } 72 | ] 73 | }); 74 | 75 | CodeMirror.defineMIME("text/x-dockerfile", "dockerfile"); 76 | }); 77 | -------------------------------------------------------------------------------- /back/static/css/plugins/blueimp/css/blueimp-gallery-video.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * blueimp Gallery Video Factory CSS 1.3.0 4 | * https://github.com/blueimp/Gallery 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .blueimp-gallery > .slides > .slide > .video-content > img { 14 | position: absolute; 15 | top: 0; 16 | right: 0; 17 | bottom: 0; 18 | left: 0; 19 | margin: auto; 20 | width: auto; 21 | height: auto; 22 | max-width: 100%; 23 | max-height: 100%; 24 | /* Prevent artifacts in Mozilla Firefox: */ 25 | -moz-backface-visibility: hidden; 26 | } 27 | .blueimp-gallery > .slides > .slide > .video-content > video { 28 | position: absolute; 29 | top: 0; 30 | left: 0; 31 | width: 100%; 32 | height: 100%; 33 | } 34 | .blueimp-gallery > .slides > .slide > .video-content > iframe { 35 | position: absolute; 36 | top: 100%; 37 | left: 0; 38 | width: 100%; 39 | height: 100%; 40 | border: none; 41 | } 42 | .blueimp-gallery > .slides > .slide > .video-playing > iframe { 43 | top: 0; 44 | } 45 | .blueimp-gallery > .slides > .slide > .video-content > a { 46 | position: absolute; 47 | top: 50%; 48 | right: 0; 49 | left: 0; 50 | margin: -64px auto 0; 51 | width: 128px; 52 | height: 128px; 53 | background: url(../img/video-play.png) center no-repeat; 54 | opacity: 0.8; 55 | cursor: pointer; 56 | } 57 | .blueimp-gallery > .slides > .slide > .video-content > a:hover { 58 | opacity: 1; 59 | } 60 | .blueimp-gallery > .slides > .slide > .video-playing > a, 61 | .blueimp-gallery > .slides > .slide > .video-playing > img { 62 | display: none; 63 | } 64 | .blueimp-gallery > .slides > .slide > .video-content > video { 65 | display: none; 66 | } 67 | .blueimp-gallery > .slides > .slide > .video-playing > video { 68 | display: block; 69 | } 70 | .blueimp-gallery > .slides > .slide > .video-loading > a { 71 | background: url(../img/loading.gif) center no-repeat; 72 | background-size: 64px 64px; 73 | } 74 | 75 | /* Replace PNGs with SVGs for capable browsers (excluding IE<9) */ 76 | body:last-child .blueimp-gallery > .slides > .slide > .video-content:not(.video-loading) > a { 77 | background-image: url(../img/video-play.svg); 78 | } 79 | 80 | /* IE7 fixes */ 81 | *+html .blueimp-gallery > .slides > .slide > .video-content { 82 | height: 100%; 83 | } 84 | *+html .blueimp-gallery > .slides > .slide > .video-content > a { 85 | left: 50%; 86 | margin-left: -64px; 87 | } 88 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/go/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Go mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
28 |

Go mode

29 |
72 | 73 | 83 | 84 |

MIME type: text/x-go

85 |
86 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/properties/properties.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("properties", function() { 15 | return { 16 | token: function(stream, state) { 17 | var sol = stream.sol() || state.afterSection; 18 | var eol = stream.eol(); 19 | 20 | state.afterSection = false; 21 | 22 | if (sol) { 23 | if (state.nextMultiline) { 24 | state.inMultiline = true; 25 | state.nextMultiline = false; 26 | } else { 27 | state.position = "def"; 28 | } 29 | } 30 | 31 | if (eol && ! state.nextMultiline) { 32 | state.inMultiline = false; 33 | state.position = "def"; 34 | } 35 | 36 | if (sol) { 37 | while(stream.eatSpace()); 38 | } 39 | 40 | var ch = stream.next(); 41 | 42 | if (sol && (ch === "#" || ch === "!" || ch === ";")) { 43 | state.position = "comment"; 44 | stream.skipToEnd(); 45 | return "comment"; 46 | } else if (sol && ch === "[") { 47 | state.afterSection = true; 48 | stream.skipTo("]"); stream.eat("]"); 49 | return "header"; 50 | } else if (ch === "=" || ch === ":") { 51 | state.position = "quote"; 52 | return null; 53 | } else if (ch === "\\" && state.position === "quote") { 54 | if (stream.next() !== "u") { // u = Unicode sequence \u1234 55 | // Multiline value 56 | state.nextMultiline = true; 57 | } 58 | } 59 | 60 | return state.position; 61 | }, 62 | 63 | startState: function() { 64 | return { 65 | position : "def", // Current position, "def", "quote" or "comment" 66 | nextMultiline : false, // Is the next line multiline value 67 | inMultiline : false, // Is the current line a multiline value 68 | afterSection : false // Did we just open a section 69 | }; 70 | } 71 | 72 | }; 73 | }); 74 | 75 | CodeMirror.defineMIME("text/x-properties", "properties"); 76 | CodeMirror.defineMIME("text/x-ini", "properties"); 77 | 78 | }); 79 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/groovy/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Groovy mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Groovy mode

28 |
74 | 75 | 82 | 83 |

MIME types defined: text/x-groovy

84 |
85 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/dockerfile/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Dockerfile mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Dockerfile mode

28 |
61 | 62 | 68 | 69 |

Dockerfile syntax highlighting for CodeMirror. Depends on 70 | the simplemode addon.

71 | 72 |

MIME types defined: text/x-dockerfile

73 |
74 | -------------------------------------------------------------------------------- /back/static/js/plugins/simditor/module.min.js: -------------------------------------------------------------------------------- 1 | !function(a,b){"function"==typeof define&&define.amd?define("simple-module",["jquery"],function(c){return a.returnExportsGlobal=b(c)}):"object"==typeof exports?module.exports=b(require("jquery")):a.SimpleModule=b(jQuery)}(this,function(a){var b,c=[].slice;return b=function(){function b(b){var c,d,e,f,g,h,i;if(this.opts=a.extend({},this.opts,b),(g=this.constructor)._connectedClasses||(g._connectedClasses=[]),e=function(){var a,b,d,e;for(d=this.constructor._connectedClasses,e=[],a=0,b=d.length;b>a;a++)c=d[a],f=c.pluginName.charAt(0).toLowerCase()+c.pluginName.slice(1),c.prototype._connected&&(c.prototype._module=this),e.push(this[f]=new c);return e}.call(this),this._connected)this.opts=a.extend({},this.opts,this._module.opts);else for(this._init(),h=0,i=e.length;i>h;h++)d=e[h],"function"==typeof d._init&&d._init();this.trigger("initialized")}return b.extend=function(a){var b,c,d;if(null!=a&&"object"==typeof a){for(b in a)c=a[b],"included"!==b&&"extended"!==b&&(this[b]=c);return null!=(d=a.extended)?d.call(this):void 0}},b.include=function(a){var b,c,d;if(null!=a&&"object"==typeof a){for(b in a)c=a[b],"included"!==b&&"extended"!==b&&(this.prototype[b]=c);return null!=(d=a.included)?d.call(this):void 0}},b.connect=function(a){if("function"==typeof a){if(!a.pluginName)throw new Error("Module.connect: cannot connect plugin without pluginName");return a.prototype._connected=!0,this._connectedClasses||(this._connectedClasses=[]),this._connectedClasses.push(a),a.pluginName?this[a.pluginName]=a:void 0}},b.prototype.opts={},b.prototype._init=function(){},b.prototype.on=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).on.apply(d,b),this},b.prototype.one=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).one.apply(d,b),this},b.prototype.off=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).off.apply(d,b),this},b.prototype.trigger=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).trigger.apply(d,b),this},b.prototype.triggerHandler=function(){var b,d;return b=1<=arguments.length?c.call(arguments,0):[],(d=a(this)).triggerHandler.apply(d,b)},b.prototype._t=function(){var a,b;return a=1<=arguments.length?c.call(arguments,0):[],(b=this.constructor)._t.apply(b,a)},b._t=function(){var a,b,d,e;return b=arguments[0],a=2<=arguments.length?c.call(arguments,1):[],d=(null!=(e=this.i18n[this.locale])?e[b]:void 0)||"",a.length>0?(d=d.replace(/([^%]|^)%(?:(\d+)\$)?s/g,function(b,c,d){return d?c+a[parseInt(d)-1]:c+a.shift()}),d.replace(/%%s/g,"%s")):d},b.i18n={"zh-CN":{}},b.locale="zh-CN",b}()}); 2 | -------------------------------------------------------------------------------- /back/static/js/plugins/codemirror/mode/django/django.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), 7 | require("../../addon/mode/overlay")); 8 | else if (typeof define == "function" && define.amd) // AMD 9 | define(["../../lib/codemirror", "../htmlmixed/htmlmixed", 10 | "../../addon/mode/overlay"], mod); 11 | else // Plain browser env 12 | mod(CodeMirror); 13 | })(function(CodeMirror) { 14 | "use strict"; 15 | 16 | CodeMirror.defineMode("django:inner", function() { 17 | var keywords = ["block", "endblock", "for", "endfor", "in", "true", "false", 18 | "loop", "none", "self", "super", "if", "endif", "as", "not", "and", 19 | "else", "import", "with", "endwith", "without", "context", "ifequal", "endifequal", 20 | "ifnotequal", "endifnotequal", "extends", "include", "load", "length", "comment", 21 | "endcomment", "empty"]; 22 | keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); 23 | 24 | function tokenBase (stream, state) { 25 | stream.eatWhile(/[^\{]/); 26 | var ch = stream.next(); 27 | if (ch == "{") { 28 | if (ch = stream.eat(/\{|%|#/)) { 29 | state.tokenize = inTag(ch); 30 | return "tag"; 31 | } 32 | } 33 | } 34 | function inTag (close) { 35 | if (close == "{") { 36 | close = "}"; 37 | } 38 | return function (stream, state) { 39 | var ch = stream.next(); 40 | if ((ch == close) && stream.eat("}")) { 41 | state.tokenize = tokenBase; 42 | return "tag"; 43 | } 44 | if (stream.match(keywords)) { 45 | return "keyword"; 46 | } 47 | return close == "#" ? "comment" : "string"; 48 | }; 49 | } 50 | return { 51 | startState: function () { 52 | return {tokenize: tokenBase}; 53 | }, 54 | token: function (stream, state) { 55 | return state.tokenize(stream, state); 56 | } 57 | }; 58 | }); 59 | 60 | CodeMirror.defineMode("django", function(config) { 61 | var htmlBase = CodeMirror.getMode(config, "text/html"); 62 | var djangoInner = CodeMirror.getMode(config, "django:inner"); 63 | return CodeMirror.overlayMode(htmlBase, djangoInner); 64 | }); 65 | 66 | CodeMirror.defineMIME("text/x-django", "django"); 67 | }); 68 | -------------------------------------------------------------------------------- /back/utils/Tools.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pandas as pd 3 | import os 4 | import glob 5 | 6 | def find_csv_files(directory): 7 | # 遍历目录及其所有子目录 8 | for root, dirs, files in os.walk(directory): 9 | # 对于每个子目录,查找 CSV 文件 10 | for file in glob.glob(os.path.join(root, '*.csv')): 11 | yield file 12 | 13 | 14 | def utils_get_path_namelist(path): 15 | """ 16 | 工具函数:获取文件夹内文件全称 17 | :param path: 18 | :return: 19 | """ 20 | # 使用os.listdir()获取文件夹下的所有文件和子文件夹的名称 21 | file_names = os.listdir(path) 22 | 23 | # 过滤出只是文件而不是子文件夹的名称 24 | file_names = [f for f in file_names if os.path.isfile(os.path.join(path, f))] 25 | file_names = sorted(file_names, key=lambda x: int(x.split('.')[0])) 26 | # 打印文件名列表 27 | print(f"{file_names}") 28 | return file_names 29 | 30 | 31 | def utils_data_deduplicated_text(path_details, path_dedup_folder): 32 | """ 33 | 工具函数:语料去重,工具类,暂时不需要去重 34 | :return: 35 | """ 36 | # path_details = "./data/coal_type/coal_type_data_details" 37 | # path_deduplicated = "./data/coal_type/coal_type_data_deduplicated" 38 | get_file_name_list = utils_get_path_namelist(path_details) 39 | for index, value in enumerate(get_file_name_list): 40 | with open(path_details + '/' + value) as f: 41 | sample_text_lines = f.read() 42 | df = pd.DataFrame({'text': sample_text_lines.split('\n')}) 43 | df_deduplicated = df.drop_duplicates() 44 | deduplicated_text_pandas = '\n'.join(df_deduplicated['text']) 45 | with open(path_dedup_folder + f"\\dedup_{value}", "w", encoding="utf-8") as file: 46 | file.write(deduplicated_text_pandas) 47 | print(deduplicated_text_pandas) 48 | 49 | 50 | def utils_ensure_folder_exists(folder_path): 51 | """ 52 | 工具函数:确保给定的文件夹路径存在。如果不存在,则创建它。 53 | 参数: 54 | folder_path:要检查或创建的文件夹路径(字符串)。 55 | 返回值: 56 | True:如果文件夹已经存在或成功创建。 57 | False:如果文件夹不能被创建。 58 | """ 59 | if not os.path.isdir(folder_path): 60 | try: 61 | os.makedirs(folder_path) 62 | print(f"文件夹 {folder_path} 已创建") 63 | return True 64 | except Exception as e: 65 | print(f"无法创建文件夹 {folder_path},错误信息:{e}") 66 | return False 67 | else: 68 | print(f"文件夹 {folder_path} 已存在") 69 | return True 70 | 71 | 72 | def check_file_exists(file_path): 73 | """ 74 | 检查指定文件是否存在。 75 | 76 | 参数: 77 | file_path:要检查的文件的完整路径(字符串)。 78 | 79 | 返回值: 80 | True:如果文件存在。 81 | False:如果文件不存在。 82 | """ 83 | return os.path.isfile(file_path) 84 | -------------------------------------------------------------------------------- /back/utils/Data_cs.py: -------------------------------------------------------------------------------- 1 | """文本信息处理""" 2 | import os 3 | import pandas 4 | import re 5 | from tqdm import tqdm 6 | import numpy as np 7 | import copy 8 | import pickle 9 | 10 | # def getbriefly(): 11 | # filenames=os.listdir("Job_conduct") 12 | # job_briefly=dict() 13 | # 14 | # for filename in tqdm(filenames): 15 | # job_name=filename.strip('.txt') 16 | # job_briefly[job_name]=dict() 17 | # job_briefly[job_name]['introduce']='' 18 | # job_briefly[job_name]['content']=[] 19 | # with open('job_conduct/'+filename, "r",encoding='utf-8') as file: 20 | # describe=file.readlines() 21 | # for i in range(len(describe)): 22 | # if i==0: 23 | # job_briefly[job_name]['introduce']=describe[i].strip('\n') 24 | # else: 25 | # job_briefly[job_name]['content'].append(describe[i].strip('\n')) 26 | # file.close() 27 | # pickle.dump(job_briefly, open('data/job_briefly.pickle', 'wb')) # 将字典写进pkl文件 28 | 29 | #通过筛选进行职业推荐 30 | 31 | def getcomjob(jobname,skill,education,welfare): 32 | data=pandas.read_csv('Job_csv/'+jobname+'_job_items.csv') 33 | result=[] 34 | for i in range(len(data)): 35 | dskill=data['skill'][i].upper() 36 | dwelfare=data['welfare'][i] 37 | deducation=data['condition'][i] 38 | if education in deducation or '经验不限' in deducation: 39 | se = 0 40 | we = 0 41 | for x in skill: 42 | if x.upper() in dskill: 43 | se+=1 44 | for x in welfare: 45 | if x.upper() in dwelfare: 46 | we+=1 47 | result.append([i,se,we]) 48 | result.sort(key=lambda x: (x[1], x[2]), reverse=True) 49 | result=result[:10] 50 | st=[] 51 | for x in result: 52 | st.append(dict(data.loc[x[0]])) 53 | print(f"getcomjob返回结果:{st}") 54 | return st 55 | 56 | 57 | getcomjob('java工程师',['Spring','Java','MySQL','后端开发'],'本科',['午餐补贴','零食下午茶','补充医疗保险','加班补助']) 58 | 59 | # data=pandas.read_csv('Job_data/skill_type.csv', encoding='ANSI') 60 | # skilltype=data.columns 61 | # skills=[] 62 | # for i in range(len(skilltype)): 63 | # oc=[] 64 | # sk=data[skilltype[i]] 65 | # for c in sk: 66 | # if c!= ' 1': 67 | # oc.append(c) 68 | # else: 69 | # break 70 | # skills.append({'ID': str(i), 'actsetid': str(i), 'act_addondesc': skilltype[i], 'act_addonvalue': oc,'selected':[]}) 71 | # for x in skills: 72 | # print(x) 73 | # pickle.dump(skills, open('Job_data/data/skill_choice.pickle', 'wb')) # 将字典写进pkl文件 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /back/static/css/plugins/markdown/bootstrap-markdown.min.css: -------------------------------------------------------------------------------- 1 | .md-editor{display:block;border:1px solid #ddd}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5}.md-editor>.md-header{margin:0}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;overflow:auto}.md-editor>textarea{font-family:Menlo, Monaco, Consolas, "Courier New", monospace;font-size:14px;outline:0;margin:0;display:block;padding:15px;width:100%;border:0;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;box-shadow:none;background:#fafafa}.md-editor>textarea:focus{box-shadow:none;background:#fff}.md-editor.active{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6)}.md-editor .md-controls{float:right;padding:3px}.md-editor .md-controls .md-control{right:5px;color:#bebebe;padding:3px 3px 3px 10px}.md-editor .md-controls .md-control:hover{color:#333}.md-editor.md-fullscreen-mode{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999;padding:60px 30px 15px;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-footer{display:none}.md-editor.md-fullscreen-mode .md-input,.md-editor.md-fullscreen-mode .md-preview{margin:0 auto!important;height:100%!important;font-size:20px!important;padding:20px!important;color:#999;line-height:1.6em!important;resize:none!important;box-shadow:none!important;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-preview{color:#333;overflow:auto}.md-editor.md-fullscreen-mode .md-input:focus,.md-editor.md-fullscreen-mode .md-input:hover{color:#333;background:#fff!important}.md-editor.md-fullscreen-mode .md-header{background:0 0;text-align:center;position:fixed;width:100%;top:20px}.md-editor.md-fullscreen-mode .btn-group{float:none}.md-editor.md-fullscreen-mode .btn{border:0;background:0 0;color:#b3b3b3}.md-editor.md-fullscreen-mode .btn.active,.md-editor.md-fullscreen-mode .btn:active,.md-editor.md-fullscreen-mode .btn:focus,.md-editor.md-fullscreen-mode .btn:hover{box-shadow:none;color:#333}.md-editor.md-fullscreen-mode .md-fullscreen-controls{position:absolute;top:20px;right:20px;text-align:right;z-index:1002;display:block}.md-editor.md-fullscreen-mode .md-fullscreen-controls a{color:#b3b3b3;clear:right;margin:10px;width:30px;height:30px;text-align:center}.md-editor.md-fullscreen-mode .md-fullscreen-controls a:hover{color:#333;text-decoration:none}.md-editor.md-fullscreen-mode .md-editor{height:100%!important;position:relative}.md-editor .md-fullscreen-controls{display:none}.md-nooverflow{overflow:hidden;position:fixed;width:100%} 2 | --------------------------------------------------------------------------------