113 lines
3.0 KiB
Markdown
113 lines
3.0 KiB
Markdown
|
|
CommonSpecification.md (v1.0)
|
|||
|
|
1. <20>v<EFBFBD><76><EFBFBD>W<EFBFBD>F<EFBFBD>N<EFBFBD>g<EFBFBD>T<EFBFBD>v
|
|||
|
|
<EFBFBD>A<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>ۂ<EFBFBD><DB82><EFBFBD><EFBFBD>[<5B>ށiPon-Room<6F>j
|
|||
|
|
|
|||
|
|
<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>v<EFBFBD>g: <20><><EFBFBD>{<7B><><EFBFBD>́u<CC81>L<EFBFBD>^<5E>E<EFBFBD><45><EFBFBD>́E<CD81>z<EFBFBD>v<C281><76><EFBFBD>x<EFBFBD><78><EFBFBD><EFBFBD>AI<41>A<EFBFBD>v<EFBFBD><76><EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD>^<5E>[<5B>Q<EFBFBD>b<EFBFBD>g: - B2C: <20><><EFBFBD>ʃ<EFBFBD><CA83>[<5B>U<EFBFBD>[<5B>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>̓<EFBFBD><CC93>{<7B><><EFBFBD>̌<EFBFBD><CC8C><EFBFBD><EFBFBD>L<EFBFBD>^<5E>E<EFBFBD>f<EFBFBD>f<EFBFBD>E<EFBFBD><45><EFBFBD>L<EFBFBD>j
|
|||
|
|
|
|||
|
|
B2B: <20><><EFBFBD>H<EFBFBD>X<EFBFBD>i<EFBFBD><69><EFBFBD>X<EFBFBD>̓<EFBFBD><CC93>{<7B><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>[<5B><>PDF/QR<51>t<EFBFBD><74><EFBFBD>ō쐬<C58D>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>j
|
|||
|
|
|
|||
|
|
2. <20>Z<EFBFBD>p<EFBFBD>X<EFBFBD>^<5E>b<EFBFBD>N
|
|||
|
|
Frontend: Flutter (iOS/Android/Web)
|
|||
|
|
|
|||
|
|
Backend/DB: Cloud Firestore, Firebase Auth
|
|||
|
|
|
|||
|
|
AI/ML: - Local OCR: Google ML Kit (<28>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD>o)
|
|||
|
|
|
|||
|
|
LLM Analysis: Gemini API (2.5 Flash / 3 Flash)
|
|||
|
|
|
|||
|
|
Library: - gal: <20>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>ۑ<EFBFBD><DB91>p
|
|||
|
|
|
|||
|
|
pdf, printing: PDF<44><46><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>p
|
|||
|
|
|
|||
|
|
qr_flutter: QR<51>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>p
|
|||
|
|
|
|||
|
|
3. <20><><EFBFBD>ʃf<CA83>[<5B>^<5E>\<5C><> (JSON Schema)
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD>ׂĂ<EFBFBD>AI<EFBFBD><EFBFBD><EFBFBD>͂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>уf<EFBFBD>[<5B>^<5E>ۑ<EFBFBD><DB91>͂<EFBFBD><CD82>̌`<60><><EFBFBD>ɏ]<5D><><EFBFBD><EFBFBD><EFBFBD>ƁB
|
|||
|
|
|
|||
|
|
JSON
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
"display_data": {
|
|||
|
|
"name": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|||
|
|
"catch_phrase": "AI<41><49><EFBFBD><EFBFBD><EFBFBD>̃L<CC83><4C><EFBFBD>b<EFBFBD>`<60>R<EFBFBD>s<EFBFBD>[",
|
|||
|
|
"image_path": "local/path/to/image.jpg",
|
|||
|
|
"rating": 4.5
|
|||
|
|
},
|
|||
|
|
"hidden_specs": {
|
|||
|
|
"brewery": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|||
|
|
"prefecture": "<22>s<EFBFBD><73><EFBFBD>{<7B><>",
|
|||
|
|
"type": "<22><><EFBFBD>薼<EFBFBD><E896BC>(<28><><EFBFBD>đ<EFBFBD><C491><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)",
|
|||
|
|
"alcohol_content": 16.0,
|
|||
|
|
"polishing_ratio": 23,
|
|||
|
|
"rice_variety": "<22>g<EFBFBD>p<EFBFBD><70>",
|
|||
|
|
"sake_meter_value": 0.0,
|
|||
|
|
"qr_code_url": "https://pon-room.app/sake/12345"
|
|||
|
|
},
|
|||
|
|
"badges": {
|
|||
|
|
"is_recommended": false,
|
|||
|
|
"is_seasonal": false,
|
|||
|
|
"season_tag": "<22>t<EFBFBD><74><EFBFBD><EFBFBD>"
|
|||
|
|
},
|
|||
|
|
"gamification": {
|
|||
|
|
"pon_points": 10,
|
|||
|
|
"sake_mbti_type": "<22>t<EFBFBD><74><EFBFBD>[<5B>e<EFBFBD>B<EFBFBD>[<5B>E<EFBFBD><45><EFBFBD>_<EFBFBD><5F><EFBFBD>^"
|
|||
|
|
},
|
|||
|
|
"user_data": {
|
|||
|
|
"is_favorite": false,
|
|||
|
|
"memo": "<22>e<EFBFBD>C<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD><42><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>",
|
|||
|
|
"created_at": "ISO8601<30>`<60><>"
|
|||
|
|
},
|
|||
|
|
"metadata": {
|
|||
|
|
"app_type": "sake",
|
|||
|
|
"version": "1.0"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
4. <20>@<40>\<5C>ʃK<CA83>C<EFBFBD>h<EFBFBD><68><EFBFBD>C<EFBFBD><43>
|
|||
|
|
4.1 <20>B<EFBFBD>e<EFBFBD>E<EFBFBD><45><EFBFBD>̓t<CD83><74><EFBFBD>[ (Hybrid Analysis)
|
|||
|
|
<EFBFBD>B<EFBFBD>e: <20>ʐ^<5E>B<EFBFBD>e<EFBFBD><65><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>Ɂu<C981>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>i<EFBFBD>[<5B><><EFBFBD>̃M<CC83><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>j<EFBFBD>v<EFBFBD>֕ۑ<D695><DB91><EFBFBD><EFBFBD><EFBFBD><EFBFBD>igal<61>p<EFBFBD>b<EFBFBD>P<EFBFBD>[<5B>W<EFBFBD>g<EFBFBD>p<EFBFBD>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
OCR: Google ML Kit<69>ʼn摜<C589><E6919C><EFBFBD>琶<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>𒊏o<F0928A8F>B
|
|||
|
|
|
|||
|
|
AI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD>o<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD>݂̂<CC82>Gemini<6E>֑<EFBFBD><D691>M<EFBFBD><4D><EFBFBD>A<EFBFBD><41><EFBFBD>LJSON<4F>`<60><><EFBFBD>ō\<5C><><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD>擾<EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>摜<EFBFBD><EFBFBD>AI<41>ɑ<EFBFBD><C991><EFBFBD><EFBFBD>̂ł͂Ȃ<CD82><C882>A<EFBFBD>e<EFBFBD>L<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD>邱<EFBFBD>ƂŃg<C583>[<5B>N<EFBFBD><4E><EFBFBD>ߖ<EFBFBD><DF96>ƃG<C683><47><EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>B
|
|||
|
|
|
|||
|
|
4.2 UI<55>\<5C><> (5<>^<5E>u<EFBFBD>E<EFBFBD><EFBFBD><D882>ւ<EFBFBD><D682><EFBFBD>)
|
|||
|
|
<EFBFBD>^<5E>u1 (<28><><EFBFBD>X<EFBFBD>g): <20>J<EFBFBD>[<5B>h<EFBFBD>`<60><><EFBFBD>Bdisplay_data<74>݂̂<CC82><DD82>\<5C><><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ɗ̓V<CD83><56><EFBFBD>v<EFBFBD><76><EFBFBD>ɕۂB
|
|||
|
|
|
|||
|
|
<EFBFBD>^<5E>u2 (<28>X<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD>/<2F>쐬): - Consumer<65><72><EFBFBD>[<5B>h: QR<51>X<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD>X<EFBFBD><58><EFBFBD>j<EFBFBD><6A><EFBFBD>[<5B>̓ǂݎ<C782><DD8E><EFBFBD><EFBFBD>E<EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>g<EFBFBD>l<EFBFBD><6C><EFBFBD>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
Business<EFBFBD><EFBFBD><EFBFBD>[<5B>h: PDF<44><46><EFBFBD>j<EFBFBD><6A><EFBFBD>[<5B>쐬<EFBFBD>iQR<51>R<EFBFBD>[<5B>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߍ<EFBFBD><DF8D>݁j<DD81>B
|
|||
|
|
|
|||
|
|
<EFBFBD>^<5E>u3 (AI/<2F>f<EFBFBD>f): AI<41>\<5C><><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>A<EFBFBD>𑠃}<7D>b<EFBFBD>v<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><67><EFBFBD>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD>^<5E>u4 (<28>}<7D>b<EFBFBD>v): <20>𑠏<EFBFBD><F091A08F><EFBFBD><EFBFBD>}<7D>b<EFBFBD>v<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD>^<5E>u5 (<28>}<7D>C<EFBFBD>y<EFBFBD>[<5B>W): - <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>ケ<EFBFBD><E382B1>)<29>J<EFBFBD>[<5B>h: MBTI<54><49><EFBFBD>̎<EFBFBD><CC8E>Ȑf<C890>f<EFBFBD><66><EFBFBD>ʁA<CA81>o<EFBFBD>b<EFBFBD>W<EFBFBD>A<EFBFBD>l<EFBFBD><6C><EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>g<EFBFBD><67><EFBFBD>\<5C><><EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD>ݒ<EFBFBD>: <20>E<EFBFBD><45><EFBFBD>́u<CC81><75><EFBFBD>ԃA<D483>C<EFBFBD>R<EFBFBD><52><EFBFBD>v<EFBFBD><76><EFBFBD>Ƀ<EFBFBD><C983>[<5B>h<EFBFBD><EFBFBD><D882>ւ<EFBFBD><D682>A<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>C<EFBFBD>h<EFBFBD>A<EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD>ݒ<EFBFBD><DD92><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>B
|
|||
|
|
|
|||
|
|
4.3 <20>I<EFBFBD><49><EFBFBD>{<7B>[<5B>f<EFBFBD>B<EFBFBD><42><EFBFBD>O (Onboarding)
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>̃X<EFBFBD>e<EFBFBD>b<EFBFBD>v<EFBFBD>K<EFBFBD>C<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD>B
|
|||
|
|
|
|||
|
|
<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>ʉE<EFBFBD><EFBFBD><EFBFBD>́u<EFBFBD>H<EFBFBD>v<EFBFBD>A<EFBFBD>C<EFBFBD>R<EFBFBD><EFBFBD><EFBFBD>ŃK<EFBFBD>C<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>ĕ\<5C><><EFBFBD>B
|
|||
|
|
|
|||
|
|
Business<EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD><EFBFBD><D882>ւ<EFBFBD><D682><EFBFBD><EFBFBD>͐<EFBFBD><CD90>p<EFBFBD><70>3<EFBFBD>X<EFBFBD>e<EFBFBD>b<EFBFBD>v<EFBFBD>K<EFBFBD>C<EFBFBD>h<EFBFBD><68><EFBFBD>lj<EFBFBD><C789>\<5C><><EFBFBD>B
|
|||
|
|
|
|||
|
|
4.4 B2B/B2C <20>z<EFBFBD><EFBFBD><C283>W<EFBFBD>b<EFBFBD>N
|
|||
|
|
B2B: PDF<44>o<EFBFBD>͎<EFBFBD><CD8E>Ɋe<C98A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD> qr_code_url <20><>QR<51>R<EFBFBD>[<5B>h<EFBFBD>Ƃ<EFBFBD><C682>Ė<EFBFBD><C496>ߍ<EFBFBD><DF8D>ށB
|
|||
|
|
|
|||
|
|
B2C: <20><><EFBFBD><EFBFBD>QR<51><52><EFBFBD>X<EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA<C681>ڍ<DA8D><D78F>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>|<7C><><EFBFBD>|<7C>C<EFBFBD><43><EFBFBD>g<EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>d<EFBFBD>g<EFBFBD>݂<EFBFBD><DD82>z<EFBFBD><7A><EFBFBD>B
|
|||
|
|
|
|||
|
|
5. <20>J<EFBFBD><4A><EFBFBD>D<EFBFBD>揇<EFBFBD><E68F87> (Roadmap)
|
|||
|
|
Phase 1: CommonSpecification.md <20>Ɋ<EFBFBD><C98A>Â<EFBFBD><C382>f<EFBFBD>[<5B>^<5E><><EFBFBD>f<EFBFBD><66><EFBFBD>̍Ē<CC8D><C492>`<60>B
|
|||
|
|
|
|||
|
|
Phase 2: <20>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B><><EFBFBD>ۑ<EFBFBD><DB91>@<40>\<5C>̎<EFBFBD><CC8E><EFBFBD><EFBFBD>i<EFBFBD>f<EFBFBD>[<5B>^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
Phase 3: PDF + printing <20><><EFBFBD><EFBFBD><EFBFBD>iAntigravity<74>]<5D><><EFBFBD>p<EFBFBD><70>B2B<32>@<40>\<5C>j<EFBFBD>B
|
|||
|
|
|
|||
|
|
Phase 4: OCR + Gemini API<50>A<EFBFBD>g<EFBFBD>̍œK<C593><4B><EFBFBD>B
|
|||
|
|
|
|||
|
|
Phase 5: <20>}<7D>C<EFBFBD>y<EFBFBD>[<5B>W<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>[<5B>h<EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>уQ<D183>[<5B>~<7E>t<EFBFBD>B<EFBFBD>P<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|