Initial commit
This commit is contained in:
667
partner alignment SDD.txt
Normal file
667
partner alignment SDD.txt
Normal file
@@ -0,0 +1,667 @@
|
||||
<EFBFBD>٦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD><EFBFBD> - <20>n<EFBFBD><6E><EFBFBD>]<5D>p<EFBFBD><70><EFBFBD><EFBFBD> (SDD)
|
||||
1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 1.0
|
||||
<EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>s: 2025<32>~10<31><30>
|
||||
<EFBFBD><EFBFBD><EFBFBD>A: <20>쪩
|
||||
<EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD>z<DEB2>t<EFBFBD><74>
|
||||
|
||||
2. <20><><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>n
|
||||
2.1 <20>M<EFBFBD>ץؼ<D7A5>
|
||||
<EFBFBD>إߤ@<40>M<EFBFBD><4D><EFBFBD>㪺<EFBFBD>٦<EFBFBD><D9A6><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD>z<DEB2><7A><EFBFBD>x<EFBFBD>A<EFBFBD>z<EFBFBD>L<EFBFBD><4C>ı<EFBFBD>Ʃ<EFBFBD><C6A9>Ԥ<EFBFBD><D4A4><EFBFBD>²<EFBFBD>Ư<EFBFBD><C6AF>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD>{<7B>A<EFBFBD>þ<EFBFBD><C3BE>XSTAR<41>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>n<EFBFBD><6E><EFBFBD>ƦW<C6A6>t<EFBFBD>ΡA<CEA1><41><EFBFBD>ɲ<EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>~<7E>o<EFBFBD>i<EFBFBD>P<EFBFBD>z<DEB2>IJv<C4B2>C
|
||||
2.2 <20>֤<D6A4><DFBB>ȥD<C8A5>i
|
||||
* <20>IJv<C4B2><76><EFBFBD><EFBFBD>: <20><><EFBFBD>Ԧ<EFBFBD><D4A6>ާ@<40><><EFBFBD><EFBFBD>50%<25>H<EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>
|
||||
* <20><><EFBFBD>c<EFBFBD>Ʀ^<5E>X: STAR<41>ج[<5B>T<EFBFBD>O<EFBFBD>^<5E>X<EFBFBD>~<7E><><EFBFBD>P<EFBFBD>i<EFBFBD>l<EFBFBD>ܩ<EFBFBD>
|
||||
* <20>E<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>: <20>n<EFBFBD><6E><EFBFBD>ƦW<C6A6>t<EFBFBD>ΫP<CEAB>i<EFBFBD><69><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>: <20><><EFBFBD>㪺<EFBFBD><E3AABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>R<EFBFBD>P<EFBFBD>ץX<D7A5>\<5C><>
|
||||
2.3 <20><><EFBFBD>䦨<EFBFBD>\<5C><><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>30%
|
||||
* <20>^<5E>X<EFBFBD>~<7E><><EFBFBD>зǤƹF90%
|
||||
* <20>t<EFBFBD>Ψϥβv<CEB2>F80%<25>H<EFBFBD>W
|
||||
|
||||
3. <20>t<EFBFBD>ά[<5B>c<EFBFBD>]<5D>p
|
||||
3.1 <20>N<DEB3>[<5B>c<EFBFBD><63><EFBFBD><EFBFBD>
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x <20>e<EFBFBD>ݼh (Presentation) <20>x
|
||||
<EFBFBD>x HTML5 + Bootstrap 5 + JavaScript <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
<20>x HTTP/REST API
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x <20><><EFBFBD>μh (Application) <20>x
|
||||
<EFBFBD>x Python Flask + SQLAlchemy <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
<20>x ORM
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x <20><><EFBFBD>Ƽh (Data) <20>x
|
||||
<EFBFBD>x MySQL 5.7+ <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
3.2 <20>t<EFBFBD>Τ<EFBFBD><CEA4>h<EFBFBD><68><EFBFBD><EFBFBD>
|
||||
3.2.1 <20>e<EFBFBD>ݼh
|
||||
* ¾<>d: <20>ϥΪ̤<CEAA><CCA4><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEBF>B<EFBFBD><42><EFBFBD>Ʈi<C6AE><69>
|
||||
* <20>N<DEB3>:
|
||||
o Bootstrap 5: <20>T<EFBFBD><54><EFBFBD><EFBFBD>UI<55>ج[
|
||||
o <20><><EFBFBD><EFBFBD>JavaScript: <20><><EFBFBD>ԥ\<5C><><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
o HTML5 Drag & Drop API: <20><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>:
|
||||
o app.js: <20><><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD>ƻPAPI<50>q<EFBFBD>T
|
||||
o assessment.js: <20><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
o admin.js: <20><><EFBFBD>x<EFBFBD>z<DEB2><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
3.2.2 <20><><EFBFBD>μh
|
||||
* ¾<>d: <20>~<7E><><EFBFBD><EFBFBD><DEBF>B<EFBFBD><42><EFBFBD>ƳB<C6B3>z<EFBFBD>BAPI<50><49><EFBFBD><EFBFBD>
|
||||
* <20>N<DEB3>:
|
||||
o Flask 2.x: <20><><EFBFBD>q<EFBFBD><71>Web<65>ج[
|
||||
o SQLAlchemy: ORM<52><4D><EFBFBD>Ʈw<C6AE><77><EFBFBD>H<EFBFBD>h
|
||||
o Flask-CORS: <20><><EFBFBD><EFBFBD><EFBFBD>ШD<D0A8>B<EFBFBD>z
|
||||
o pandas + openpyxl: <20><><EFBFBD>ƶץX
|
||||
* <20>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
o <20><><EFBFBD><EFBFBD><EFBFBD>ܼƺz<DEB2>ӷP<D3B7><50><EFBFBD>T
|
||||
o CORS<52><53><EFBFBD>쭭<EFBFBD><ECADAD>
|
||||
o <20><><EFBFBD>J<EFBFBD><4A><EFBFBD>һPSQL<51>`<60>J<EFBFBD><4A><EFBFBD>@
|
||||
o <20><><EFBFBD>~<7E>B<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD>
|
||||
3.2.3 <20><><EFBFBD>Ƽh
|
||||
* ¾<>d: <20><><EFBFBD>ƫ<EFBFBD><C6AB>[<5B>ơB<C6A1>d<EFBFBD><64><EFBFBD>u<EFBFBD><75>
|
||||
* <20>N<DEB3>: MySQL 5.7+
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53>:
|
||||
o <20>ưȳB<C8B3>z<EFBFBD>O<EFBFBD>Ҹ<EFBFBD><D2B8>Ƥ@<40>P<EFBFBD><50>
|
||||
o <20><><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>Ƭd<C6AC>߮į<DFAE>
|
||||
o JSON<4F><4E><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>s<EFBFBD>u<EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD>
|
||||
|
||||
4. <20><><EFBFBD>Ʈw<C6AE>]<5D>p
|
||||
4.1 ER<45><52><EFBFBD>Y<EFBFBD><59>
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{ <20>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x assessments <20>x <20>x capabilities <20>x
|
||||
<EFBFBD>x (<28><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20>x <20>x (<28><><EFBFBD>O<EFBFBD><4F><EFBFBD>ةw<D8A9>q) <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>} <20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
<20>x
|
||||
<20>x
|
||||
<20><>
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{ <20>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x star_feedbacks <20>x<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w?<3F>x employee_points <20>x
|
||||
<EFBFBD>x (STAR<41>^<5E>X) <20>x <20>x (<28><><EFBFBD>u<EFBFBD>n<EFBFBD><6E>) <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>} <20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
<20>x <20>x
|
||||
<20>x <20><>
|
||||
<20>x <20>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w?<3F>x monthly_rankings <20>x
|
||||
<20>x (<28><><EFBFBD>ױƦW) <20>x
|
||||
<20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
4.2 <20><><EFBFBD>ƪ<EFBFBD><C6AA><EFBFBD><EFBFBD>c
|
||||
4.2.1 assessments (<28><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>O
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
id
|
||||
INT
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
PK, AUTO_INCREMENT
|
||||
department
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
position
|
||||
VARCHAR(100)
|
||||
¾<EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
employee_name
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>m<EFBFBD>W
|
||||
NULL
|
||||
assessment_data
|
||||
JSON
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
created_at
|
||||
DATETIME
|
||||
<EFBFBD>إ߮ɶ<EFBFBD>
|
||||
DEFAULT CURRENT_TIMESTAMP
|
||||
updated_at
|
||||
DATETIME
|
||||
<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>ɶ<EFBFBD>
|
||||
ON UPDATE CURRENT_TIMESTAMP
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* idx_department: (department)
|
||||
* idx_position: (position)
|
||||
* idx_created_at: (created_at)
|
||||
4.2.2 capabilities (<28><><EFBFBD>O<EFBFBD><4F><EFBFBD>ةw<D8A9>q)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>O
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
id
|
||||
INT
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
PK, AUTO_INCREMENT
|
||||
name
|
||||
VARCHAR(200)
|
||||
<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>W<EFBFBD><EFBFBD>
|
||||
NOT NULL, UNIQUE
|
||||
l1_description
|
||||
TEXT
|
||||
L1<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL
|
||||
l2_description
|
||||
TEXT
|
||||
L2<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL
|
||||
l3_description
|
||||
TEXT
|
||||
L3<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL
|
||||
l4_description
|
||||
TEXT
|
||||
L4<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL
|
||||
l5_description
|
||||
TEXT
|
||||
L5<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>
|
||||
NULL
|
||||
is_active
|
||||
BOOLEAN
|
||||
<EFBFBD>O<EFBFBD>_<EFBFBD>ҥ<EFBFBD>
|
||||
DEFAULT TRUE
|
||||
4.2.3 star_feedbacks (STAR<41>^<5E>X)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>O
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
id
|
||||
INT
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
PK, AUTO_INCREMENT
|
||||
evaluator_name
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̩m<EFBFBD>W
|
||||
NOT NULL
|
||||
evaluatee_name
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̩m<EFBFBD>W
|
||||
NOT NULL
|
||||
evaluatee_department
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
evaluatee_position
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
situation
|
||||
TEXT
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ҵy<EFBFBD>z
|
||||
NOT NULL
|
||||
task
|
||||
TEXT
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
action
|
||||
TEXT
|
||||
<EFBFBD><EFBFBD><EFBFBD>ʴy<EFBFBD>z
|
||||
NOT NULL
|
||||
result
|
||||
TEXT
|
||||
<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
score
|
||||
INT
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1-5)
|
||||
CHECK (score BETWEEN 1 AND 5)
|
||||
points_earned
|
||||
INT
|
||||
<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>n<EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
feedback_date
|
||||
DATE
|
||||
<EFBFBD>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
created_at
|
||||
DATETIME
|
||||
<EFBFBD>إ߮ɶ<EFBFBD>
|
||||
DEFAULT CURRENT_TIMESTAMP
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* idx_evaluatee: (evaluatee_name, evaluatee_department)
|
||||
* idx_feedback_date: (feedback_date)
|
||||
<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>W<EFBFBD>h: points_earned = score <20><> 10
|
||||
4.2.4 employee_points (<28><><EFBFBD>u<EFBFBD>n<EFBFBD><6E>)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>O
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
id
|
||||
INT
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
PK, AUTO_INCREMENT
|
||||
employee_name
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>m<EFBFBD>W
|
||||
NOT NULL, UNIQUE
|
||||
department
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
position
|
||||
VARCHAR(100)
|
||||
¾<EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
total_points
|
||||
INT
|
||||
<EFBFBD>`<60>n<EFBFBD><6E>
|
||||
DEFAULT 0
|
||||
monthly_points
|
||||
INT
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD>
|
||||
DEFAULT 0
|
||||
last_updated
|
||||
DATETIME
|
||||
<EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>ɶ<EFBFBD>
|
||||
ON UPDATE CURRENT_TIMESTAMP
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* idx_total_points: (total_points DESC)
|
||||
* idx_monthly_points: (monthly_points DESC)
|
||||
4.2.5 monthly_rankings (<28><><EFBFBD>ױƦW)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>O
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
id
|
||||
INT
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
PK, AUTO_INCREMENT
|
||||
ranking_month
|
||||
DATE
|
||||
<EFBFBD>ƦW<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
employee_name
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>m<EFBFBD>W
|
||||
NOT NULL
|
||||
department
|
||||
VARCHAR(100)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
position
|
||||
VARCHAR(100)
|
||||
¾<EFBFBD><EFBFBD>
|
||||
NOT NULL
|
||||
total_points
|
||||
INT
|
||||
<EFBFBD>Ӥ<EFBFBD><EFBFBD>`<60>n<EFBFBD><6E>
|
||||
NOT NULL
|
||||
ranking
|
||||
INT
|
||||
<EFBFBD>ƦW
|
||||
NOT NULL
|
||||
created_at
|
||||
DATETIME
|
||||
<EFBFBD>إ߮ɶ<EFBFBD>
|
||||
DEFAULT CURRENT_TIMESTAMP
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* idx_ranking_month: (ranking_month, ranking)
|
||||
* unique_month_employee: (ranking_month, employee_name) UNIQUE
|
||||
|
||||
5. <20>\<5C><><EFBFBD>Ҳճ]<5D>p
|
||||
5.1 <20>Ҳլ[<5B>c<EFBFBD><63>
|
||||
<EFBFBD>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<EFBFBD>x <20>t<EFBFBD>ΥD<CEA5><44> <20>x
|
||||
<EFBFBD>x (index.html) <20>x
|
||||
<EFBFBD>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
<20>x <20>x <20>x <20>x
|
||||
<20>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD><77><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{ <20>z<EFBFBD>w<EFBFBD>w<EFBFBD><77><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{ <20>z<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD><77><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{ <20>z<EFBFBD>w<EFBFBD>w<EFBFBD><77><EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>{
|
||||
<20>x<EFBFBD><78><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>x <20>xSTAR <20>x <20>x<EFBFBD>Ʀ<EFBFBD><C6A6>] <20>x <20>x<EFBFBD>z <20>x
|
||||
<20>x<EFBFBD>Ҳ<EFBFBD> <20>x <20>x<EFBFBD>^<5E>X <20>x <20>x<EFBFBD>Ҳ<EFBFBD> <20>x <20>x<EFBFBD><78><EFBFBD>x <20>x
|
||||
<20>x <20>x <20>x<EFBFBD>Ҳ<EFBFBD> <20>x <20>x <20>x <20>x<EFBFBD>Ҳ<EFBFBD> <20>x
|
||||
<20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>} <20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>} <20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>} <20>|<7C>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>w<EFBFBD>}
|
||||
5.2 <20>֤ߥ\<5C><><EFBFBD>Ҳ<EFBFBD>
|
||||
5.2.1 <20><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>
|
||||
<EFBFBD>\<5C><><EFBFBD>ؼ<EFBFBD>: <20><><EFBFBD>Ѫ<EFBFBD><D1AA>[<5B><><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>䴩<EFBFBD><E4B4A9><EFBFBD>Ԧ<EFBFBD><D4A6>ާ@<40>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD>Ť<EFBFBD><C5A4>t
|
||||
<EFBFBD><EFBFBD><EFBFBD>J:
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
* ¾<><C2BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
* <20><><EFBFBD>u<EFBFBD>m<EFBFBD>W (<28><><EFBFBD><EFBFBD>)
|
||||
* <20><><EFBFBD>O<EFBFBD><4F><EFBFBD>ة<EFBFBD><D8A9>Ծާ@
|
||||
<EFBFBD>B<EFBFBD>z<EFBFBD><EFBFBD>:
|
||||
1. <20><><EFBFBD>J<EFBFBD><4A><EFBFBD>O<EFBFBD><4F><EFBFBD>زM<D8B2><4D>
|
||||
2. <20><><EFBFBD>l<EFBFBD><6C>5<EFBFBD>ӵ<EFBFBD><D3B5>Ůe<C5AE><65> (L1-L5)
|
||||
3. <20><>ť<EFBFBD><C5A5><EFBFBD>Ԩƥ<D4A8>
|
||||
4. <20><><EFBFBD>ҥ<EFBFBD><D2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5. <20>ո˵<D5B8><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>JSON
|
||||
6. <20><><EFBFBD><EFBFBD><EFBFBD>ܫ<EFBFBD><DCAB><EFBFBD>API
|
||||
<EFBFBD><EFBFBD><EFBFBD>X:
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>x<EFBFBD>s<EFBFBD>ܸ<EFBFBD><DCB8>Ʈw
|
||||
* <20><><EFBFBD>ܦ<EFBFBD><DCA6>\/<2F><><EFBFBD>ѰT<D1B0><54>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N:
|
||||
// <20><><EFBFBD>Ԩƥ<D4A8><C6A5>B<EFBFBD>z
|
||||
element.addEventListener('dragstart', handleDragStart);
|
||||
element.addEventListener('dragover', handleDragOver);
|
||||
element.addEventListener('drop', handleDrop);
|
||||
|
||||
// <20><><EFBFBD>Ƶ<EFBFBD><C6B5>c
|
||||
{
|
||||
"department": "<22>N<DEB3><4E>",
|
||||
"position": "<22><><EFBFBD>`<60>u<EFBFBD>{<7B>v",
|
||||
"employee_name": "<22>i<EFBFBD>T",
|
||||
"capabilities": {
|
||||
"L1": ["<22><><EFBFBD>O1", "<22><><EFBFBD>O2"],
|
||||
"L2": ["<22><><EFBFBD>O3"],
|
||||
...
|
||||
}
|
||||
}
|
||||
5.2.2 STAR<41>^<5E>X<EFBFBD>Ҳ<EFBFBD>
|
||||
<EFBFBD>\<5C><><EFBFBD>ؼ<EFBFBD>: <20><><EFBFBD>c<EFBFBD>Ʀ^<5E>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>P<EFBFBD>i<EFBFBD><69><EFBFBD>Ī<EFBFBD><C4AA>Z<EFBFBD>ķ<EFBFBD><C4B7>q<EFBFBD>P<EFBFBD>O<EFBFBD><4F>
|
||||
STAR<EFBFBD>ج[<5B><><EFBFBD><EFBFBD>:
|
||||
* S - Situation (<28><><EFBFBD><EFBFBD>): <20>y<EFBFBD>z<EFBFBD>ƥ<EFBFBD><C6A5>o<EFBFBD>ͪ<EFBFBD><CDAA>I<EFBFBD><49><EFBFBD>ߵ<EFBFBD>
|
||||
* T - Task (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD><EFBFBD>ݭn<DDAD>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>ؼЩγd<CEB3><64>
|
||||
* A - Action (<28><><EFBFBD><EFBFBD>): <20>ԭz<D4AD>Ĩ<EFBFBD><C4A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>J<EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD>
|
||||
* R - Result (<28><><EFBFBD>G): <20>q<EFBFBD><71>/<2F><><EFBFBD>ƪ<EFBFBD><C6AA><EFBFBD><EFBFBD>G<EFBFBD>P<EFBFBD>v<EFBFBD>T
|
||||
<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD><EFBFBD><EFBFBD>ҳW<EFBFBD>h:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>ҳW<EFBFBD>h
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̩m<EFBFBD>W
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-50<35>r<EFBFBD><72>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̩m<EFBFBD>W
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 2-50<35>r<EFBFBD><72>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
¾<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1-5<><35><EFBFBD><EFBFBD>
|
||||
S/T/A/R
|
||||
<EFBFBD>U<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>̤<EFBFBD>10<31>r<EFBFBD><72>
|
||||
<EFBFBD>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>i<EFBFBD><69><EFBFBD>Ӥ<EFBFBD><D3A4><EFBFBD>
|
||||
<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>:
|
||||
points_earned = score * 10
|
||||
# <20>d<EFBFBD><64>: <20><><EFBFBD><EFBFBD>4<EFBFBD><34> <20><> <20><><EFBFBD>o40<34>n<EFBFBD><6E>
|
||||
<EFBFBD>~<7E>Ȭy<C8AC>{:
|
||||
1. <20><><EFBFBD>g<EFBFBD><EFBFBD><F2A5BBB8>T (<28><><EFBFBD><EFBFBD><EFBFBD>̡B<CCA1><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
2. <20><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD> (1-5<><35>)
|
||||
3. <20><>STAR<41><52><EFBFBD>c<EFBFBD><63><EFBFBD>g<EFBFBD>^<5E>X
|
||||
4. <20>w<EFBFBD><77><EFBFBD>^<5E>X<EFBFBD><58><EFBFBD>e
|
||||
5. <20><><EFBFBD><EFBFBD><EFBFBD>^<5E>X
|
||||
6. <20>۰ʧ<DBB0><CAA7>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>̿n<CCBF><6E>
|
||||
7. IJ<>o<EFBFBD>ƦW<C6A6><57><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
5.2.3 <20>n<EFBFBD><6E><EFBFBD>ƦW<C6A6>Ҳ<EFBFBD>
|
||||
<EFBFBD>\<5C><><EFBFBD>ؼ<EFBFBD>: <20>i<EFBFBD>ܭ<EFBFBD><DCAD>u<EFBFBD>n<EFBFBD><6E><EFBFBD>ƦW<C6A6>A<EFBFBD><41><EFBFBD>ѿE<D1BF>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>Z<EFBFBD>ĥi<C4A5><69><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ƦW<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
1. <20>`<60>n<EFBFBD><6E><EFBFBD>Ʀ<EFBFBD><C6A6>]: <20>֭p<D6AD>Ҧ<EFBFBD><D2A6><EFBFBD><EFBFBD>v<EFBFBD>n<EFBFBD><6E>
|
||||
2. <20><><EFBFBD>ױƦ<D7B1><C6A6>]: <20>S<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD>ƦW
|
||||
3. <20><><EFBFBD><EFBFBD><EFBFBD>Ʀ<EFBFBD><C6A6>]: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>諸<EFBFBD>ƦW
|
||||
<EFBFBD>ƦW<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
# <20>C<EFBFBD><43>1<EFBFBD><31><EFBFBD>۰ʰ<DBB0><CAB0><EFBFBD>
|
||||
def calculate_monthly_ranking():
|
||||
# 1. <20>έp<CEAD>W<EFBFBD><57><EFBFBD>Ҧ<EFBFBD><D2A6><EFBFBD><EFBFBD>u<EFBFBD>n<EFBFBD><6E>
|
||||
# 2. <20><><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>DZƧ<C7B1>
|
||||
# 3. <20>B<EFBFBD>z<EFBFBD>æC<C3A6>ƦW
|
||||
# 4. <20>g<EFBFBD>J monthly_rankings <20><>
|
||||
# 5. <20><><EFBFBD>m employee_points.monthly_points
|
||||
<EFBFBD>ƦW<EFBFBD>W<EFBFBD>h:
|
||||
* <20>n<EFBFBD><6E><EFBFBD>ۦP<DBA6>ɨæC<C3A6>P<EFBFBD>W<EFBFBD><57>
|
||||
* <20>U<EFBFBD>@<40>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>: 2<>W<EFBFBD>æC<C3A6><43>3, <20>U<EFBFBD>@<40>W<EFBFBD><57><EFBFBD><EFBFBD>5)
|
||||
* <20>s<EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>J<EFBFBD>ƦW
|
||||
<EFBFBD>d<EFBFBD>ߥ\<5C><>:
|
||||
* <20>~<7E><><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>ᄍ
|
||||
* <20><><EFBFBD>v<EFBFBD>ƦW<C6A6><57><EFBFBD><EFBFBD>
|
||||
5.2.4 <20><><EFBFBD>ƺz<DEB2>Ҳ<EFBFBD>
|
||||
<EFBFBD>\<5C><><EFBFBD>ؼ<EFBFBD>: <20><><EFBFBD>ѧ<EFBFBD><D1A7>㪺<EFBFBD><E3AABA><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>B<EFBFBD>d<EFBFBD>ߡB<DFA1>ץX<D7A5>\<5C><>
|
||||
<EFBFBD>d<EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD>:
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
* ¾<><C2BE><EFBFBD>z<EFBFBD><7A>
|
||||
* <20><><EFBFBD>u<EFBFBD>m<EFBFBD>W<EFBFBD>j<EFBFBD>M
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6>z<EFBFBD><7A>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>p:
|
||||
* <20>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>20<32><30>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>X<EFBFBD>ɯ<EFBFBD>
|
||||
<EFBFBD>ץX<EFBFBD>\<5C><>:
|
||||
1. Excel<65>榡 (.xlsx):
|
||||
o <20>ϥ<EFBFBD> openpyxl <20>ͦ<EFBFBD>
|
||||
o <20>]<5D>t<EFBFBD>榡<EFBFBD>ƪ<EFBFBD><C6AA>Y
|
||||
o <20>䴩<EFBFBD>h<EFBFBD>u<EFBFBD>@<40><>
|
||||
2. CSV<53>榡:
|
||||
o UTF-8 BOM<4F>s<EFBFBD>X (Excel<65>ۮe)
|
||||
o <20>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD>j
|
||||
o <20><EFBFBD><DEB8>]<5D>ЯS<D0AF><53><EFBFBD>r<EFBFBD><72>
|
||||
<EFBFBD>ץX<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶץX:
|
||||
- ID, <20><><EFBFBD><EFBFBD>, ¾<><C2BE>, <20><><EFBFBD>u<EFBFBD>m<EFBFBD>W, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>إ߮ɶ<DFAE>
|
||||
|
||||
STAR<EFBFBD>^<5E>X<EFBFBD>ץX:
|
||||
- ID, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, ¾<><C2BE>, S/T/A/R<><52><EFBFBD>e, <20><><EFBFBD><EFBFBD>, <20>n<EFBFBD><6E>, <20>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD>, <20>إ߮ɶ<DFAE>
|
||||
|
||||
6. API<50><49><EFBFBD>I<EFBFBD>]<5D>p
|
||||
6.1 RESTful API<50>W<EFBFBD>d
|
||||
<EFBFBD><EFBFBD>¦URL: http://{host}:{port}
|
||||
Content-Type: application/json
|
||||
<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>X: UTF-8
|
||||
6.2 API<50><49><EFBFBD>I<EFBFBD>M<EFBFBD><4D>
|
||||
6.2.1 <20><><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GET /api/capabilities
|
||||
* <20>\<5C><>: <20><><EFBFBD>o<EFBFBD>Ҧ<EFBFBD><D2A6>ҥΪ<D2A5><CEAA><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>: <20>L
|
||||
* <20>^<5E><><EFBFBD>d<EFBFBD><64>:
|
||||
{
|
||||
"capabilities": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "<22>{<7B><><EFBFBD>]<5D>p<EFBFBD>P<EFBFBD>}<7D>o",
|
||||
"l1_description": "...",
|
||||
"l2_description": "...",
|
||||
"l3_description": "...",
|
||||
"l4_description": "...",
|
||||
"l5_description": "..."
|
||||
}
|
||||
]
|
||||
}
|
||||
POST /api/assessments
|
||||
* <20>\<5C><>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
||||
* <20>ШDBody:
|
||||
{
|
||||
"department": "<22>N<DEB3><4E>",
|
||||
"position": "<22><><EFBFBD>`<60>u<EFBFBD>{<7B>v",
|
||||
"employee_name": "<22>i<EFBFBD>T",
|
||||
"assessment_data": {
|
||||
"L1": ["<22><><EFBFBD>O1"],
|
||||
"L2": ["<22><><EFBFBD>O2", "<22><><EFBFBD>O3"],
|
||||
...
|
||||
}
|
||||
}
|
||||
* <20><><EFBFBD>ҳW<D2B3>h:
|
||||
o department: <20><><EFBFBD><EFBFBD>
|
||||
o position: <20><><EFBFBD><EFBFBD>
|
||||
o assessment_data: <20><><EFBFBD><EFBFBD>, <20>ܤ֤@<40>ӯ<EFBFBD><D3AF>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>\<5C>^<5E><> (201):
|
||||
{
|
||||
"success": true,
|
||||
"message": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>榨<EFBFBD>\",
|
||||
"assessment_id": 123
|
||||
}
|
||||
6.2.2 STAR<41>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD>
|
||||
POST /api/star-feedbacks
|
||||
* <20>\<5C><>: <20><><EFBFBD><EFBFBD>STAR<41>^<5E>X
|
||||
* <20>ШDBody:
|
||||
{
|
||||
"evaluator_name": "<22><><EFBFBD>|",
|
||||
"evaluatee_name": "<22>i<EFBFBD>T",
|
||||
"evaluatee_department": "<22>N<DEB3><4E>",
|
||||
"evaluatee_position": "<22><><EFBFBD>`<60>u<EFBFBD>{<7B>v",
|
||||
"situation": "<22>M<EFBFBD><EFBFBD><D7BA><EFBFBD><EFBFBD>ݨD...",
|
||||
"task": "<22>ݦb48<34>p<EFBFBD>ɤ<EFBFBD>...",
|
||||
"action": "<22><>´<EFBFBD><EFBFBD><F3B3A1AA>|ij...",
|
||||
"result": "<22><><EFBFBD>\<5C><><EFBFBD>I<EFBFBD>\<5C><>...",
|
||||
"score": 4,
|
||||
"feedback_date": "2025-10-15"
|
||||
}
|
||||
* <20>~<7E><><EFBFBD><EFBFBD>:
|
||||
1. <20>p<EFBFBD><70><EFBFBD>n<EFBFBD><6E>: points_earned = score * 10
|
||||
2. <20><><EFBFBD>s employee_points <20><>
|
||||
3. <20>s<EFBFBD>W<EFBFBD>^<5E>X<EFBFBD>O<EFBFBD><4F>
|
||||
* <20><><EFBFBD>\<5C>^<5E><> (201):
|
||||
{
|
||||
"success": true,
|
||||
"message": "<22>^<5E>X<EFBFBD><58><EFBFBD>榨<EFBFBD>\",
|
||||
"points_earned": 40
|
||||
}
|
||||
6.2.3 <20>ƦW<C6A6><57><EFBFBD><EFBFBD>
|
||||
GET /api/rankings/total
|
||||
* <20>\<5C><>: <20><><EFBFBD>o<EFBFBD>`<60>n<EFBFBD><6E><EFBFBD>Ʀ<EFBFBD><C6A6>]
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>:
|
||||
o department (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
o limit (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>, <20>w<EFBFBD>]50
|
||||
* <20>^<5E><><EFBFBD>d<EFBFBD><64>:
|
||||
{
|
||||
"rankings": [
|
||||
{
|
||||
"rank": 1,
|
||||
"employee_name": "<22>i<EFBFBD>T",
|
||||
"department": "<22>N<DEB3><4E>",
|
||||
"position": "<22><><EFBFBD>`<60>u<EFBFBD>{<7B>v",
|
||||
"total_points": 450
|
||||
}
|
||||
]
|
||||
}
|
||||
GET /api/rankings/monthly
|
||||
* <20>\<5C><>: <20><><EFBFBD>o<EFBFBD><6F><EFBFBD>ױƦ<D7B1><C6A6>]
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>:
|
||||
o year (<28><><EFBFBD><EFBFBD>): <20>~<7E><>
|
||||
o month (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD> (1-12)
|
||||
o department (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
* <20>^<5E><><EFBFBD>d<EFBFBD><64>:
|
||||
{
|
||||
"year": 2025,
|
||||
"month": 10,
|
||||
"rankings": [...]
|
||||
}
|
||||
POST /api/rankings/calculate
|
||||
* <20>\<5C><>: <20><><EFBFBD><EFBFBD>IJ<EFBFBD>o<EFBFBD><6F><EFBFBD>ױƦW<C6A6>p<EFBFBD><70>
|
||||
* <20>v<EFBFBD><76>: <20>z<DEB2><7A>
|
||||
* <20>ШDBody:
|
||||
{
|
||||
"year": 2025,
|
||||
"month": 10
|
||||
}
|
||||
6.2.4 <20><><EFBFBD>ƺz<DEB2><7A><EFBFBD><EFBFBD>
|
||||
GET /api/assessments
|
||||
* <20>\<5C><>: <20>d<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>:
|
||||
o page (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD>X, <20>w<EFBFBD>]1
|
||||
o per_page (<28><><EFBFBD><EFBFBD>): <20>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>w<EFBFBD>]20
|
||||
o department (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>
|
||||
o position (<28><><EFBFBD><EFBFBD>): ¾<><C2BE><EFBFBD>z<EFBFBD><7A>
|
||||
o employee_name (<28><><EFBFBD><EFBFBD>): <20><><EFBFBD>u<EFBFBD>m<EFBFBD>W<EFBFBD>j<EFBFBD>M
|
||||
* <20>^<5E><><EFBFBD>d<EFBFBD><64>:
|
||||
{
|
||||
"assessments": [...],
|
||||
"total": 150,
|
||||
"page": 1,
|
||||
"per_page": 20,
|
||||
"pages": 8
|
||||
}
|
||||
GET /api/export/assessments
|
||||
* <20>\<5C><>: <20>ץX<D7A5><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>:
|
||||
o format: excel | csv
|
||||
o <20><><EFBFBD>L<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>W
|
||||
* <20>^<5E><>: <20>ɮפU<D7A4><55>
|
||||
GET /api/export/star-feedbacks
|
||||
* <20>\<5C><>: <20>ץXSTAR<41>^<5E>X<EFBFBD><58><EFBFBD><EFBFBD>
|
||||
* <20>ШD<D0A8>Ѽ<EFBFBD>:
|
||||
o format: excel | csv
|
||||
o <20>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
7. <20>D<EFBFBD>\<5C><><EFBFBD>ݨD
|
||||
7.1 <20>į<EFBFBD><C4AF>ݨD
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>ؼЭ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>ɶ<EFBFBD>
|
||||
< 2<><32>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD>D<EFBFBD>n<EFBFBD>\<5C>୶
|
||||
API<EFBFBD>^<5E><><EFBFBD>ɶ<EFBFBD>
|
||||
< 500ms
|
||||
95<EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>õo<EFBFBD>ϥΪ<EFBFBD>
|
||||
100+
|
||||
<EFBFBD>P<EFBFBD>ɦb<EFBFBD>u<EFBFBD>ϥΪ̼<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ʈw<EFBFBD>d<EFBFBD><EFBFBD>
|
||||
< 100ms
|
||||
<EFBFBD>榸<EFBFBD>d<EFBFBD>߮ɶ<EFBFBD>
|
||||
<EFBFBD>ɮץX
|
||||
< 5<><35>
|
||||
1000<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥH<EFBFBD><EFBFBD>
|
||||
<EFBFBD>į<EFBFBD><EFBFBD>u<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>:
|
||||
* <20><><EFBFBD>Ʈw<C6AE><77><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75>
|
||||
* <20>e<EFBFBD>ݸ귽<DDB8><EAB7BD><EFBFBD>Y<EFBFBD>P<EFBFBD>֨<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>߭<EFBFBD><DFAD>C<EFBFBD>t<EFBFBD><74>
|
||||
* <20>D<EFBFBD>P<EFBFBD>B<EFBFBD>B<EFBFBD>z<EFBFBD>j<EFBFBD>q<EFBFBD><71><EFBFBD>ƶץX
|
||||
7.2 <20>w<EFBFBD><77><EFBFBD>ݨD
|
||||
7.2.1 <20><><EFBFBD>e<EFBFBD><65><EFBFBD>@
|
||||
? <20>w<EFBFBD><77><EFBFBD>@:
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>ܼƺz<DEB2>ӷP<D3B7><50><EFBFBD>T (.env)
|
||||
* CORS<52><53><EFBFBD><EFBFBD><EFBFBD>ШD<D0A8><44><EFBFBD><EFBFBD>
|
||||
* SQL<51>`<60>J<EFBFBD><4A><EFBFBD>@ (SQLAlchemy<6D>ѼƤƬd<C6AC><64>)
|
||||
* XSS<53><53><EFBFBD>@ (<28><><EFBFBD>J<EFBFBD><4A><EFBFBD>һP<D2BB>M<EFBFBD>z)
|
||||
* <20><><EFBFBD>~<7E>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* HTTPS<50>䴩 (<28>ݰt<DDB0>m)
|
||||
? <20><><EFBFBD><EFBFBD><EFBFBD>@ (<28>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>ҥ<EFBFBD><D2A5><EFBFBD>):
|
||||
* <20>ϥΪ̨<CEAA><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Session<6F>z
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ާ@<40><><EFBFBD>x<EFBFBD>O<EFBFBD><4F>
|
||||
* API<50>t<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>
|
||||
7.2.2 <20>w<EFBFBD><77><EFBFBD>t<EFBFBD>m<EFBFBD>ˬd<CBAC>M<EFBFBD><4D>
|
||||
<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
<EFBFBD><EFBFBD> <20>ͦ<EFBFBD><CDA6>w<EFBFBD><77><EFBFBD><EFBFBD> SECRET_KEY (32<33>r<EFBFBD><72><EFBFBD>H<EFBFBD>W)
|
||||
<EFBFBD><EFBFBD> <20>]<5D>w<EFBFBD>j<EFBFBD>K<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>Ʈw<C6AE>b<EFBFBD><62>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD> DEBUG <20>Ҧ<EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20>t<EFBFBD>m<EFBFBD><6D><EFBFBD>T<EFBFBD><54> CORS_ORIGINS
|
||||
<EFBFBD><EFBFBD> <20>ҥ<EFBFBD> HTTPS (Let's Encrypt)
|
||||
<EFBFBD><EFBFBD> <20>w<EFBFBD><77><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>Ʈw
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD>@<40>ϥΪ̻{<7B>Ҩt<D2A8><74>
|
||||
7.2.3 <20><>ij<EFBFBD><C4B3><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>v<EFBFBD><EFBFBD>
|
||||
<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>u
|
||||
<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>˵<EFBFBD><EFBFBD>ۤv<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>D<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>ݡB<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
HR
|
||||
<EFBFBD>˵<EFBFBD><EFBFBD>Ҧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơB<EFBFBD>ץX<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>t<EFBFBD>κz<EFBFBD><EFBFBD>
|
||||
<EFBFBD>Ҧ<EFBFBD><EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>t<EFBFBD>γ]<5D>w
|
||||
7.3 <20>i<EFBFBD>ΩʻݨD
|
||||
<EFBFBD>ؼ<EFBFBD>: <20>t<EFBFBD>Υi<CEA5>Ω<EFBFBD> ? 99%
|
||||
<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* <20><><EFBFBD>Ʈw<C6AE>s<EFBFBD>u<EFBFBD><75><EFBFBD>վ<EFBFBD><D5BE><EFBFBD>
|
||||
* <20>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E>B<EFBFBD>z
|
||||
* <20>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD>ܰT<DCB0><54>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƼȦs (<28><><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD>)
|
||||
<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* <20>C<EFBFBD><43><EFBFBD>۰ʸ<DBB0><CAB8>Ʈw<C6AE>ƥ<EFBFBD>
|
||||
* <20>O<EFBFBD>d30<33>ѳƥ<D1B3><C6A5><EFBFBD><EFBFBD>v
|
||||
* <20><><EFBFBD>a<EFBFBD>ƥ<EFBFBD> (<28><>ij)
|
||||
7.4 <20>i<EFBFBD><69><EFBFBD>@<40>ʻݨD
|
||||
<EFBFBD>{<7B><><EFBFBD>X<EFBFBD>~<7E><>:
|
||||
* <20>ҲդƳ]<5D>p
|
||||
* <20>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>`PEP 8<>W<EFBFBD>d
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Git)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
* API<50><49><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>ƮwSchema<6D><61><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>p<EFBFBD><70><EFBFBD>U
|
||||
* <20>ϥΪ̤<CEAA><CCA4>U
|
||||
7.5 <20>ۮe<DBAE>ʻݨD
|
||||
<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䴩:
|
||||
* Chrome 90+
|
||||
* Firefox 88+
|
||||
* Safari 14+
|
||||
* Edge 90+
|
||||
* <20><><EFBFBD>䴩 IE
|
||||
<EFBFBD>˸m<EFBFBD>䴩:
|
||||
* <20>ୱ<EFBFBD>q<EFBFBD><71> (<28>D<EFBFBD>n)
|
||||
* <20><><EFBFBD>O<EFBFBD>q<EFBFBD><71> (<28>T<EFBFBD><54><EFBFBD><EFBFBD>)
|
||||
* <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>䴩)
|
||||
<EFBFBD>ù<EFBFBD><EFBFBD>ѪR<EFBFBD><EFBFBD>:
|
||||
* <20>̧C: 1280x720
|
||||
Reference in New Issue
Block a user