diff --git a/quantec/README.md b/quantec/README.md
deleted file mode 100644
index fc5cb03..0000000
--- a/quantec/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-### 2024-08-23
-
-#### 약관에 대한 생각
-
-##### [AM]
-
-1. PBP-CS는 기본적으로 포트폴리오 기준
-2. 현재 오픈되어 있는 페이지
1) HOME
2) Market(마켓)
3) My Asset(내자산)
4) ETC(더보기)
-3. Market 내부에 [전략 마켓], [포트폴리오 마켓]이 있지만 현재는 [전략 마켓]만 오픈되어 있음 ([포트폴리오 마켓]은 display:none 처리 되어 있음)
-4. 콴텍의 APP은 전략이 기준임
-5. 콴텍 APP과 콴텍 PBP-CS의 데이터 구조 및 프로세스는 상품의 기준이 포트폴리오인지 전략인지에 따라 달라진다. 포트폴리오를 기준으로 하면 포트폴리오 관리에 초점을 맞추고, 전략을 기준으로 하면 투자 전략에 따라 데이터 구조와 프로세스가 구성된다.
-6. 요번 약관 변경에 서도 이 갭에 대한 차이가 나타났다.
-
-
-
-#### [오후 회의 말할 내용]
-
-> ----
->
-> ### to 기획
->
-> 1. 현재 PBP-CS는 각 금융사 MTS에 thirdparty로 들어가는 서비스가 맞는지? 아니면 독립적으로도 사용하는 서비스가 되어야 하는지?
-> 2. MTS의 thirdparty로 접근되는 서비스라면 내가 알고 있는 선에서는 약관 동의 및 절차를 줄이기 위해서 입점한것으로 알고 있다. 입점 이유에 반대되는 프로세스가 되는 것이 아닌지?
-> 3. 독립적으로 사용하는 서비스가 되어야 한다면 APP과 유사하게 가는게 맞다.
-> 4. "둘다" 라는 상황이라면 위 2개를 적용하여 분기 처리 하는게 맞다.
-> 5. 앱의 전략 기준과 다르게 포트폴리오 기준이기 때문에 약관 리스트에서 약관 상세를 들어가면 또 collapse 형식으로 펼침 메뉴가 있다는점. (물론 이것은 상세에 들어갈때 펼침 메뉴가 1개라면 강제로 열어놓게 할 수 있음.)
-> 6. 로그인 이후 화면에 들어갈때 변경된 약관에 대해서 동의를 재요청 하는 과정이 전략을 기준으로 가야 하는지 아니면 포트폴리오로 가야하는지 이야기 해볼 필요가 있다.
->
-> ---
-
-> ---
->
-> ### to 컴플
->
-> 1. 약관 내용이 콴텍 앱과 다른 점이 있을것임.
-> 2. 이 내용은 문서로 이춘선 부장님에게 전달하였고 전달 받았을 것으로 생각됨.
-> 3. 약관 내용중 하나증권이 요청하여 추가된 부분이 있음.
-> 4. 위 부분과 콴텍이 제공하는 약관과 차이가 있음 이것을 확인해야 함.
-> 5. 그리고 현재 PBP-CS에서 지금 보내준 약관을 제공하는게 맞는지. 기존 하나증권이 요청한 부분과 충돌이 나는 부분이 없는지?
->
-> ---
diff --git a/quantec/quantecAssetAnalysis/README.md b/quantec/quantecAssetAnalysis/README.md
deleted file mode 100644
index 014724e..0000000
--- a/quantec/quantecAssetAnalysis/README.md
+++ /dev/null
@@ -1,116 +0,0 @@
-**투자자산진단**
-
-진입시 케이스가 2개로 나누어짐
-
-## 1. 고객ID로 보유종목 조회하는 경우
- >
- > 위의 경우는 하나증권의 하나플러스에서 4408 업무코드로 고객의 데이터를 가지고 진입했을때 사용한다. 이의 API는
[GET] `/counsel/asset/hold`를 사용하고 있다.
-
-```javascript
-
-//해당 api의 파라미터
- export interface IAssetListInputParam {
- customerId?: string;
-}
-
-//해당 api의 결과
-export interface IGetAssetList {
- customerName: string;
- stockList: IStockList[];
-}
-```
-
-## 2. ODS 접근 방식으로 보유종목 조회
- >
- > 위의 방법은 하나증권 태블릿 업무 단말인 ODS로 진입했을때 사용하는 경우이다.
- 이 방법은 내부에서 /demo 페이지에서 종목코드, 비중을 입력하고 진입하는 경우와 같다.
- API는
[GET] `/counsel/asset/hold/url`를 사용하고 있다.
-
-```markdown
- https://1qdevpb.quantec.co.kr/odsrelay?data={"accesstoken":"123qweeyyyyddsd","corp_uid":"987654321","sccofnstcd":"270","access":"hanaplus","branchno":"0094","gbn":"ra","accountinfo":{"foto":["AAPL","TXN","A396300","A353200","A009410","A040160","A298020"],"rate":["20","15","10","20","10","15","10"]}}
-```
-
-url 파라미터에 담아 화면에 진입할때 foto를 해당 api itemCd만을 사용함
-
-```javascript
-//해당 api의 파라미터
- export interface IAssetListOdsParam {
- itemCd: string;
-}
-
-
-// 해당 api의 결과
-export interface IGetAssetOdsList {
- customerName: string;
- stockList: IStockOdsList[];
-}
-```
-
-```json
-
-{
- "itemCd": "AAPL,TXN,A396300,A353200,A009410,A040160,A298020"
-}
-
-{
- "customerName": null,
- "stockList": [
- {
- "shortStockCode": "AAPL",
- "stockName": "애플",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "US0378331005",
- "inputStockCode": "AAPL"
- },
- {
- "shortStockCode": "TXN",
- "stockName": "텍사스인스트루먼트",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "US8825081040",
- "inputStockCode": "TXN"
- },
- {
- "shortStockCode": "396300",
- "stockName": "세아메카닉스",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "KR7396300006",
- "inputStockCode": "A396300"
- },
- {
- "shortStockCode": "353200",
- "stockName": "대덕전자",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "KR7353200009",
- "inputStockCode": "A353200"
- },
- {
- "shortStockCode": "009410",
- "stockName": "태영건설",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "KR7009410002",
- "inputStockCode": "A009410"
- },
- {
- "shortStockCode": "040160",
- "stockName": "누리플렉스",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "KR7040160004",
- "inputStockCode": "A040160"
- },
- {
- "shortStockCode": "298020",
- "stockName": "효성티앤씨",
- "evaluationAmount": null,
- "holdingWeight": null,
- "isinCode": "KR7298020009",
- "inputStockCode": "A298020"
- }
- ]
-}
-```
diff --git a/quantec/quantecContract/README.md b/quantec/quantecContract/README.md
deleted file mode 100644
index 92244d9..0000000
--- a/quantec/quantecContract/README.md
+++ /dev/null
@@ -1,663 +0,0 @@
-**PBP-CS 약관 처리**
-
-24.05 변경약관 정리
-
-!!! info
- 계좌개설 "로보어드바이저 투자일임계약(비대면) 약관" 변경되고
- 동의 내용은 투자일임계약 약관 동의 + 투자일임계약서 + 성과수수료 동의서
- 약관파일명 : (콴텍투자일임주식회사)+비대면+투자일임계약+약관+개정(시행_20240808)_수정요청사항반영최종(배포용)_240624
- 전자서명 필요하고 필수임.
-
-!!! info
- 전략투자에 3개 변경 및 추가 사항이 있음
-
- **1. 로보어드바이저 투자일임계약(비대면) 약관**
- > 1. 동의 내용은 투자일임계약 약관 동의 + 투자일임계약서 + 성과수수료 동의서
- > 2. 약관파일명 : (콴텍투자일임주식회사)+비대면+투자일임계약+약관+개정(시행_20240808)_수정요청사항반영최종(배포용)_240624
-
- > 3. 전자서명 필요하고 필수임 이건 변경 사항임
-
-
-
-
- **2. 성과수수료 합의서**
- > 1. 동의 내용은 성과수수료 합의서
-
- > 2. 파일명 : 성과수수료 합의서_240624
-
- > 3. 전자서명 필요하고 필수이며 이건 추가 사항임
-
-
-
- **3. 계좌 입·출고 제한 동의서**
- > 1. 동의 내용은 2개 있음.
-
계좌 입출고 제한 동의, 복수의 로보어드바이저 투자 비중 유지 사전 동의
-
- > 2. 계좌 입고 및 출고 제한 동의서, 복수의 로보어드바이저 투자 비중 유지 사전 동의서_240624
-
- > 3. 동의여부 필요하고 둘다 필수임 추가 사항임
-
-!!!
- **scenario**
- cs에 로그인해서 들어갔을때 약관에 대해서 조회를 하고
- 약관에 대한 추가동의를 받는다.
- $$ 왕호's Say : 동의 미동의를 사용자가 바꿀 수 있는가? 지금은 안되니까 안보여준다. $$
-
- > 1. 로그인해서 들어갔을때의 시점?
-
-### process1
-
-1. master로 부터 terms-and-conditions 브랜치 생성
-2. /login?sccoFntd=270로 접속하여 회원가입
-3. api오류 `/terms/member` --> 일치하는 약관내역이 없습니다.
-
-> 엥? 왜 일치하는 약관이 없지???? 뭐지? `/terms/member`는 따로 받는 파라미터가 없다!
-
-그런데 왜?
-
-간단하게 sccofnstcd 파라미터코드를 잘못알았던 것이었다.
-
-
-CS 로그인 정보
-
-```json
-{
- "origin": "http://localhost:3200",
- "op": "reg",
- "keyid": "3a300e5e28964d26bb669327329ec6c1",
- "uid": "U2FsdGVkX184/CBWsVk4tA9Z3cVgGt/LKJEKTGjN7TY=",
- "fp": "a445b86d7eda92af54e050bcc1b9b06a",
- "alg": "rsa",
- "pub": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsxSUBdoxZrWEodFSRLZp0hlVYKKkKhmuX/6X5RvLvej1SUetflKP6faNb+h2fHv7q7nX/t04yobRXbkz9jeGEo256VGmG8c1qyumzeXJMsPm+Xia2pur/a1BWP+xsvaOwluKb+PNF1S/pAjyX2lKFh4M5E8l1Onkdj9UglgUjiR1AU/7iUQI2Fh5y//lUO3odsxbU4/GcTR6TEIhLUeUasOUbDQX8Wja4RFMStJb2H7DpOc1hGLjT0BmqiG019WMflmNhax/VYmsSY/UuZhJQ5AYkNLi9t8Rh6MqVtIKj5zyVvcFNS8F8Suj0s4hbSKW5nh6zIv86m9EIFFMERMMRwIDAQAB"
-}
-```
-
-```json
-keyValue: {"keyid":"3a300e5e28964d26bb669327329ec6c1","alg":"rsa","prikey":{"ciphertext":"XRTu8OASrC1tV1ODSOEB6t8xF9ppvc3c2jeAXl9Z95sosPRBQ2kwAhUj7g2c9ODRDlrZ/lz0xrziwtNHBC5NNaRlAnjgXNgZRauqD6FrzDND94zDnQoiCQJAnhaoSLEs4vu3jcz/Y2XikiBZ+eC21hfn0m+sED1w6+PaSSV49EvKvT1K1fE3MjOZWDHch5qqSj80U0cqQROXULjkr8sVmKVw3+QwTSTbH6sD0MDPiHmzp2vtqGxiLTO8g5LJU3GENJ+yI3FHJHo6Cjy2nVzG6yLZu0VOBEIHq8dsXZFygCwTS1QF0hhdlqhPrWcGXkzFHX6AM4ymk9EZOUgViAm6zWV0Q1Mh2OtKUy5z/pp8md3xiWWOI/U1ZuVASJ9A3nw9BrdZjIizF9R7AhOMrSU5GHdJKRynBssD7gathNZxJqvYz7rbF3aJxfwoOkoSnj0y41ndd7qLZ48SJoF2F68qf7Ub9bQe9yAgQy/OBGluOJockdaurXKPC4pgLWIa57i4/yRbe/4BOEofHjmNbJhacIYHe3P942si2dO3RogAvMe466M+3wl70QIi+IG+1ZKUG7JegkgDIY6PNFE2S+uQ9kl16gZz7XP+fY1hLDgO7Tw7LafB9HvJaimHLB15+w60FOZ4hGvftkzg3Qyc3ptRL/7RYVjv19oSzfMsnG7Co9V/NdFg4QvFpNbzt5S4POTTSAHdqeXSf61XN7ZTekKCDjmwg4B9KLEEPpzuGo4yOfLFFCWfHr+vwV0kml4dYvXhsfNWQUzmBxa9VSFH6gHt+2oUC+GBMDfUrYp3EIW9uZ6fT/Z+hf7NXVc3LX2AAxK+LQ0i7MrWV9rXpu+dtcnCSwIcDv/SGjBp6E3HMUPp+hCP410NXYt6Uy28oFIiEkTJpNhQJL5zZ1bycDzJjbfoKBhEI0fbQF0naZqxSwtsHyApW2o/ghWuj9Z8WgNy/L03qYY4CEd7TgL1ZP4kZ3eZS9jHbgHgKJlt5121Cmc/J/6NhBivWAaYTXCK5zCUAJh6/RHLO4FbDKq6wOmcm7Si62lH+TTbsCv065ytFCAg6CtvoUKILq5gAqUaMAxJjc4VtI07A109BoHndlLqBz5SZr1d0UMXSvT0bvUU+/PBBSheFsfaHXRcYC3i9+36/rpejBF8YxW61ra2eNz8UnjzWUXG2qWY0aHoIgxh2AFvO6wLBjgNnUm9ZvDb6Sytru87h+UPA4p7q7L2dpA3NFETIqMIqyE3RtDhGed1w8JQ2ViLTsY9fpSLMW9DVKmwjryXVlqeZeDLLU0wj9ewrmdR3BRMZ4k7ZBqGCCnzvy5HpHVNamep0y18K4gAGaBrocqxcW5WCcdYMQP5acpriP1H38ejBerP6JZYctQmYp64ValjFnNDh0VITPg25LkqNUw+Cfwa5xaib+etBROL7DvID8yTHb52fYY7q3lwTUEThxWAPqSkaescVCnOkJThyjNcqLVlHIBQz+e2NSl/9lH1KEwZ2lLLK7HwboN2Tn8IPrbaawnSUp/2yaR8/l23+qr9YcU/7AjaOEYIl6Mx/dzee3kBvGoQVrPMtslkmOPfWiSjgSlu7OIvW/fah+5qUh0zpGkPzFlHqm/faKFaGzNio8TBms4I2NmqiG9Vp4EXog6MLg1HDF+QKHWLXYfcqSIx+VS7pzAxzdIly3nfUDoblkLawaP8CZF+hNJwC2WNFLhJZxqokW7RlXYsaO5Ok6swRWCzkW02EeorSYPQ3EdDeMRFcVzKYiktNLX1DFOP6k4JvcR0kp/daIqXIGVKzAwDnTlIYrq7rtSw88gvrhrz62lp6NR7W0GRMz+TNRg8nkfWHa9khxGMBPQPIrfJLMv/ryuExDCnumarOSaFcvLcJRkorU4TvmJakv+1czNia7LiXgC0BtE7YBEQqXILMCt3bWu2g7Dxf2oAVs09HV5cE65j4qCbZqaMMfGnRph3ucIQmQtS6vtHYYjvyPWeDeuCIJpef02pxCHzfUeH4y1+GIufRIi+nMzvqxVuQkcOLB8s15belVvKpS3RcgzX5Ygi59Ntq1hmmSLh37gQdZfKc1yyhPlnkGxOyPMr9SI6BhJTbd2Zqhc2+GPbefrt+jmZ0PR1btzJK1ByvY9bj7cS4Pt8K/B+Mp0hPC5efSJzupb843ctdUbpMKAc87eH0DEP10ypTSUEjs4kzBV0TNP8EIVsQsZMBrUAspvcEhBAJZRa7idFZaSCPikxLD4outcOOnILCxCM8aXQr2ouVgtqZn15wyw3Il2ye/xMALdjeZ+spJvk8jF/UAvPd7iA+UqmcUhhm3VfuhFAqirAzD9PyA==","salt":"twYKNXa3+zCfVq69y7pKRA=="},"fp":"a445b86d7eda92af54e050bcc1b9b06a","multi":"y","type":"pin"}
-11:27:17.059
-```
-
-### process2
-
-1. 로그인 하고 메인으로 갔을때 API오류... `/account/stats` 외부 통신과의 오류 발생임, '종합계좌대체번호필수 입력' 이건 운영 아니면 오류 나는건 당연함...
-
-> 개발계와 local에서 오류 안나게 처리 해야할듯.
-
-### process3
-
-1. 마켓 > 전략 마켓 > 전략 클릭 > 전략 상세 > 가입하기
-2. `/account/info` 이것도 하나증권 오류... 대체번호...
-3. 개발을 위해서 이 부분을 pass 시키는 과정 필요하겠음.
-4. StrategyDetail.tsx --> InvestProcess.tsx --> PreInvestTask.tsx --> SelectBankAccount.tsx
-
-PreInvestTask.tsx 이곳에서 index값을 기준으로 SelectBankAccount.tsx or DivideInvestAmount.tsx 이동함
-
-index = 1 ---> SelectBankAccount.tsx
-index = 2 ---> DivideInvestAmount.tsx
-
-SelectBankAccount.tsx 에서 계좌가 없으면
-
-
-
-위와 같은 화면 나옴...
-
-5. src/sample/sample.ts 생성하여 아래와 같은 샘플 정보 만듬
-
-```javascript
-export const sampleAccountInfo: IAccountInfo[] = [
- {
- userId: 'user123', // required
- typeDiv: '01', // required account/info API에서 필수값
- customerId: 'cust12345',
- sccoFnstCd: '1001', // required account/info API에서 필수값
- ci: 'ci_value_123456',
- role: 'admin',
- sccoFnstName: 'Sample Bank', // required
- accountNo: '1234567890', // required
- balance: 100000.5, // required
- accountTypeCode: '02', // required
- partner: 1,
- rate: 2.5,
- date: '2024-08-20',
- investableAmount: 5000000000,
- type: 1,
- nickName: 'My Investment Account',
- requestStatus: 'Pending',
- jntlAmt: '100000',
- jnAmt: '50000',
- newjndy: '2024-08-01',
- cprtyacNo: 'CP123456789',
- cprtyacNm: 'Counterparty Name',
- cprtyognNm: 'Counterparty Organization',
- cnclrsnclsfcdNm: 'Cancellation Reason',
- tyrpymtAmt: '20000',
- rmdrAmt: '30000',
- lmtAmt: '1000000',
- rmdrlmtAmt: '700000',
- tllmtAmt: '500000',
- requestDate: '2024-08-19',
- joinDvsn: '02',
- pbUid: 'PB12345',
- withAgree: 'Y' // 출금이체동의여부 (Y 동의, N 미동의)
- }
-];
-
-
-```
-
-위의 코드를 SelectBankAccount.tsx에서
-
-**원본**
-
-```javascript
- const getAccountList = () => {
- setIsLoading(true);
- // 마켓에서 넘어온 경우 account 미존재
- // 파라미터로 넘어온 계좌정보 account가 없으면, API 조회하여 accountInfoList 세팅
- getAccountInfo({
- customerId: recoilUserInfo?.userId,
- sccoFnstCd: companyCode || '',
- typeDiv: '1'
- }).then((info) => {
- setIsLoading(false);
- if (info.length === undefined) return;
- setAccountInfoList(info as unknown as IAccountInfo[]);
- });
- };
-```
-
-
-
-**변경**
-
-```javascript
-const getAccountList = () => {
- setIsLoading(true);
- // 마켓에서 넘어온 경우 account 미존재
- // 파라미터로 넘어온 계좌정보 account가 없으면, API 조회하여 accountInfoList 세팅
- // 24-08-20 로컬 개발&테스트용 샘플데이터
- if (process.env.NODE_ENV === 'development') {
- setIsLoading(false);
- setAccountInfoList(sampleAccountInfo as unknown as IAccountInfo[]);
- } else {
- getAccountInfo({
- customerId: recoilUserInfo?.userId,
- sccoFnstCd: companyCode || '',
- typeDiv: '1'
- }).then((info) => {
- setIsLoading(false);
- if (info.length === undefined) return;
- setAccountInfoList(info as unknown as IAccountInfo[]);
- });
- }
- };
-```
-
-위와 같이 변경함.
-그러면 이후 프로세스를 통과 시킬 수 있음.
-
-
-
-
-
-
-
-### 위와 같은 정상 프로세스로 나옴
-
-
-
-
-
-최종적으로 투자 설명서 및 계약서 확인이 가능한 부분까지 나옴
-
-
-처음 로그인 시 [내 자산]으로 넘어가는데 위 부분을 처리하기 위해 또! 샘플데이터를 만듬. 위치는 sample.ts
-
-```javascript
-export const IBankAccountSample: IBankAccount = {
- profitAndLoss: 1500.75,
- profitAndLossRate: 7.5,
- investableAmount: 10000.0,
- recomPortfolioJoinYn: 'Y',
- accountList: [
- {
- accountNo: '1234567890',
- accountName: 'My Savings Account',
- sccoFnstCd: 'SC001',
- securitiesName: 'ABC Securities',
- accountType: 'Savings',
- accountTypeNm: 'Savings Account',
- accountInvestableAmount: 5000.5,
- accountJoinDate: '2022-01-15',
- pbId: 'PB1234',
- withAgree: 'Y',
- accountJourneyStatus: 'Active'
- },
- {
- accountNo: '0987654321',
- accountName: 'Investment Account',
- sccoFnstCd: 'SC002',
- securitiesName: 'XYZ Securities',
- accountType: 'Investment',
- accountTypeNm: 'Investment Account',
- accountInvestableAmount: 3000.0,
- accountJoinDate: '2023-03-10',
- accountJourneyStatus: 'Pending'
- },
- {
- accountNo: '1122334455',
- accountName: 'Retirement Account',
- sccoFnstCd: 'SC003',
- securitiesName: 'QRS Securities',
- accountType: 'Retirement',
- accountTypeNm: 'Retirement Account',
- accountInvestableAmount: 2000.0,
- accountJoinDate: '2021-07-20',
- withAgree: 'N',
- accountJourneyStatus: 'Closed'
- }
- ]
-};
-```
-
-위의 샘플데이터를 useBankAccount.ts에 넣음
-코드는 아래와 같음
-
-변경전
-
-```javascript
-
-const getList = useCallback(() => {
- if (userInfo) {
- getAccountList({
- customerId: userInfo.userId, // ! 이거 나중에 recoil로 빼서 와주세요.
- sccoFnstCd: getCompanyInfo().companyCode || '' // ! 얘도 마찬가지로 아마 api호출할 때 env꺼 쓸 겁니다.
- }).then((result) => {
- if (result.accountList === undefined) {
- setIsLoading(false);
- return;
- }
- setInvestmentStatus(result);
- });
- }
- }, [userInfo]);
-
-```
-
-
-
-변경후
-
-```javascript
-const getList = useCallback(() => {
- if (userInfo) {
- // 24-08-20 로컬 개발&테스트용 샘플데이터
- if (process.env.NODE_ENV === 'development') {
- setInvestmentStatus(IBankAccountSample);
- } else {
- getAccountList({
- customerId: userInfo.userId, // ! 이거 나중에 recoil로 빼서 와주세요.
- sccoFnstCd: getCompanyInfo().companyCode || '' // ! 얘도 마찬가지로 아마 api호출할 때 env꺼 쓸 겁니다.
- }).then((result) => {
- if (result.accountList === undefined) {
- setIsLoading(false);
- return;
- }
- setInvestmentStatus(result);
- });
- }
- }
- }, [userInfo]);
-
-```
-
-로그인하고 내자산에서 가입한 포트폴리오등을 출력하기 위해서 샘플데이터 또 만듬!
-위치는 역시 sample.ts
-
-```javascript
-export const IBankAccountSample: IBankAccount = {
- profitAndLoss: 1500.75,
- profitAndLossRate: 7.5,
- investableAmount: 10000.0,
- recomPortfolioJoinYn: 'Y',
- accountList: [
- {
- accountNo: '1234567890',
- accountName: 'My Savings Account',
- sccoFnstCd: 'SC001',
- securitiesName: 'ABC Securities',
- accountType: 'Savings',
- accountTypeNm: 'Savings Account',
- accountInvestableAmount: 5000.5,
- accountJoinDate: '2022-01-15',
- pbId: 'PB1234',
- withAgree: 'Y',
- accountJourneyStatus: 'Active'
- },
- {
- accountNo: '0987654321',
- accountName: 'Investment Account',
- sccoFnstCd: 'SC002',
- securitiesName: 'XYZ Securities',
- accountType: 'Investment',
- accountTypeNm: 'Investment Account',
- accountInvestableAmount: 3000.0,
- accountJoinDate: '2023-03-10',
- accountJourneyStatus: 'Pending'
- },
- {
- accountNo: '1122334455',
- accountName: 'Retirement Account',
- sccoFnstCd: 'SC003',
- securitiesName: 'QRS Securities',
- accountType: 'Retirement',
- accountTypeNm: 'Retirement Account',
- accountInvestableAmount: 2000.0,
- accountJoinDate: '2021-07-20',
- withAgree: 'N',
- accountJourneyStatus: 'Closed'
- }
- ]
-};
-
-export const assetsByAccountSample: IAssetsAccount = {
- investableAmount: 15000.0,
- accountLinkedYn: 'Y',
- investingYn: 'Y',
- terminatedYn: 'N',
- investAmount: 10000.0,
- profitAndLoassAmount: 500.75,
- valuationAmount: 15500.75,
- befDtCompPl: 400.5,
- befDtCompRate: 2.75,
- dayProfitRateChart: [
- {x: '2024-08-01', y: 1.25},
- {x: '2024-08-02', y: 1.5},
- {x: '2024-08-03', y: 1.75},
- {x: '2024-08-04', y: 1.6},
- {x: '2024-08-05', y: 2.0}
- ],
- portfolioList: [
- {
- portfolioId: 'PF001',
- portfolioName: 'Growth Strategy',
- title: 'High Growth Portfolio',
- strategyCount: 3,
- valuationAmount: 8000.0,
- profitRate: 5.5,
- investType: 'Equity',
- status: 'Active',
- weight: 60
- },
- {
- portfolioId: 'PF002',
- portfolioName: 'Balanced Strategy',
- title: 'Balanced Risk Portfolio',
- strategyCount: 2,
- valuationAmount: 5500.75,
- profitRate: 3.25,
- investType: 'Mixed',
- status: 'Active',
- weight: 30
- },
- {
- portfolioId: 'PF003',
- portfolioName: 'Conservative Strategy',
- title: 'Low Risk Portfolio',
- strategyCount: 1,
- valuationAmount: 2000.0,
- profitRate: 1.75,
- investType: 'Bonds',
- status: 'Pending',
- weight: 10
- }
- ]
-};
-
-
-```
-
-
-
-변경전
-
-```javascript
-
- // 선택된 계좌 투자 정보 조회 api 함수
- const getAccount = useCallback(() => {
- if (selectedAcccount) {
- const tempAccount: IAssetsAccountPrams = {
- accountNo: selectedAcccount.accountNo
- };
-
- getAccountByAssets(tempAccount).then((account) => {
- setIsLoading(false);
- if (account.investableAmount === undefined) return;
- setAccount(account);
- });
- }
- }, [selectedAcccount, setIsLoading]);
-
-```
-
-
-
-변경후
-
-```javascript
- // 선택된 계좌 투자 정보 조회 api 함수
- // 24-08-20 로컬 개발&테스트용 샘플데이터
- const getAccount = useCallback(() => {
- if (selectedAcccount) {
- const tempAccount: IAssetsAccountPrams = {
- accountNo: selectedAcccount.accountNo
- };
- if (process.env.NODE_ENV === 'development') {
- setAccount(assetsByAccountSample);
- } else {
- getAccountByAssets(tempAccount).then((account) => {
- setIsLoading(false);
- if (account.investableAmount === undefined) return;
- setAccount(account);
- });
- }
- }
- }, [selectedAcccount, setIsLoading]);
-
-```
-
-6. ## 여기부터 필요한 내용
-
-투자 설명서 및 계약서 페이지는 ContractDocTask.tsx --> ContractDocList.tsx 이며
-ContractDocTask.tsx에서 `getDescriptionTerm (/terms/product/description)` // `getContractTerm (/terms/product/contract)`를 호출 함
-
-
-
-`getDescriptionTerm (/terms/product/description)`
-
-```javascript
-// 투자권유설명서 조회 파람
-export interface IDescriptionTermParams {
- portfolioId?: number;
- strategyId?: string;
-}
-
-// 투자권유설명서/투자일임계약서 조회 결과
-export interface IDescriptionTerm extends ITerms {
- termsList: IStrategyTerms[];
-}
-
-export interface IPersonalTerm extends ITerms {
- termsList: ITerms[];
-}
-
-export interface ITerms extends ITermsProps {
- securityCompanyCode: string; // 증권 사 코드
- termsDivisionCode: string;
- sequence: number; // 증권사, 약관 시퀀스
- sortOrder: number; // 정렬 순서
- title: string; // 제목
- applyDate: string; // 적용일자
- termsUrl?: string; // 약관url
- termsContent: string; // 약관내용
-}
-
-export interface IStrategyTerms {
- strategyId: string;
- strategyName: string;
- description: string;
- termsContent: string;
-}
-```
-
-
-
-`getContractTerm (/terms/product/contract)`
-
-```javascript
-// 투자일임계약서 조회 파람
-export interface IContractTermParams extends IDescriptionTermParams {
- account: string;
- buyDate: string;
- type: string;
-}
-
-// 투자권유설명서/투자일임계약서 조회 결과
-export interface IDescriptionTerm extends ITerms {
- termsList: IStrategyTerms[];
-}
-
-export interface IPersonalTerm extends ITerms {
- termsList: ITerms[];
-}
-
-export interface ITerms extends ITermsProps {
- securityCompanyCode: string; // 증권 사 코드
- termsDivisionCode: string;
- sequence: number; // 증권사, 약관 시퀀스
- sortOrder: number; // 정렬 순서
- title: string; // 제목
- applyDate: string; // 적용일자
- termsUrl?: string; // 약관url
- termsContent: string; // 약관내용
-}
-
-export interface IStrategyTerms {
- strategyId: string;
- strategyName: string;
- description: string;
- termsContent: string;
-}
-
-```
-
-[
](투자설명서%20및%20계약서%20목록.jpg)
-
-### 별내 각종 계약, 약관, 페이지 URL
-
-
-
-
-
-
-
-
-
-
-
-로보어드바이저 투자일임계약(비대면) 약관
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## 참조
-
-
-
-gapsesjs로 만들어진 html을 사용하여 변경할것이다.
-
-기존의 git 소스는 React Typescript로 되어 있음.
-이걸 NextJS Typescript로 전환시킬 것임.
-
-이에 따라서 세팅할 부분이 추가 됨
-
-1. Next.js 설치
-`npm install next react react-dom`
-
-2. 프로젝트 구조 변경
-
-Next.js는 기본적으로 pages 폴더를 사용하여 페이지 라우팅을 처리. 현재의 src 폴더 구조를 다음과 같이 변경하는 것이 좋음:
-
-src/pages: 각 페이지에 해당하는 컴포넌트를 이 폴더에 넣습니다.
-
-src/components: 공통으로 사용할 컴포넌트를 이 폴더에 넣습니다.
-
-src/public: 정적 파일(이미지, 폰트 등)을 이 폴더에 넣습니다.
-
-src/styles: 글로벌 스타일 파일을 이 폴더에 넣습니다.
-
-example
-
-```console
-/src
- /components
- /pages
- /api
- index.tsx
- /public
- /styles
- ...
-```
-
-3. next.config.js 추가
-
-```javascript
-// next.config.js
-module.exports = {
- reactStrictMode: true,
-};
-```
-
-4. 스크립트 수정
-
-```json
-// package.json
-"scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint"
-}
-```
-
-6. 기존 react-scripts 제거 `npm uninstall react-scripts`
diff --git a/quantec/quantecContract/스크린샷 2024-08-20 130351.png b/quantec/quantecContract/스크린샷 2024-08-20 130351.png
deleted file mode 100644
index d42c630..0000000
Binary files a/quantec/quantecContract/스크린샷 2024-08-20 130351.png and /dev/null differ
diff --git a/quantec/quantecContract/스크린샷 2024-08-20 135312.png b/quantec/quantecContract/스크린샷 2024-08-20 135312.png
deleted file mode 100644
index bca2db5..0000000
Binary files a/quantec/quantecContract/스크린샷 2024-08-20 135312.png and /dev/null differ
diff --git a/quantec/quantecContract/스크린샷 2024-08-20 135444.png b/quantec/quantecContract/스크린샷 2024-08-20 135444.png
deleted file mode 100644
index cc3f367..0000000
Binary files a/quantec/quantecContract/스크린샷 2024-08-20 135444.png and /dev/null differ
diff --git a/quantec/quantecContract/스크린샷 2024-08-20 135557.png b/quantec/quantecContract/스크린샷 2024-08-20 135557.png
deleted file mode 100644
index 618ce8f..0000000
Binary files a/quantec/quantecContract/스크린샷 2024-08-20 135557.png and /dev/null differ
diff --git a/quantec/quantecContract/스크린샷 2024-08-20 135720.png b/quantec/quantecContract/스크린샷 2024-08-20 135720.png
deleted file mode 100644
index 25744b8..0000000
Binary files a/quantec/quantecContract/스크린샷 2024-08-20 135720.png and /dev/null differ
diff --git a/quantec/quantecContract/투자설명서 및 계약서 목록.jpg b/quantec/quantecContract/투자설명서 및 계약서 목록.jpg
deleted file mode 100644
index 763b802..0000000
Binary files a/quantec/quantecContract/투자설명서 및 계약서 목록.jpg and /dev/null differ
diff --git a/quantec/quantecReport/README.md b/quantec/quantecReport/README.md
deleted file mode 100644
index 8961afc..0000000
--- a/quantec/quantecReport/README.md
+++ /dev/null
@@ -1,438 +0,0 @@
-**2024-08-12**
-
-수익률 광고 api (`market/strategy/promotion`)추가로 인하여 `market/strategy/detail` api가 사용되지 않게됨.
-리포트 strategy/detail 사용하는 부분strategy/promotion으로 대체.
-
-
-
-
-
-`market/strategy/detail`의 response 구조
-
-```json
-{
- "strategyPlan": {
- "strategyId": "KP0092",
- "raCode": "RA113143",
- "portType": "2",
- "strategyName": "노후 보장 치트키, 연금 추종 전략",
- "subStrategyName": "콴텍 Q-Shield 국내 EMP4호",
- "comdType": "KP",
- "code": "0092",
- "investTypeCode": "3",
- "investTypeName": "위험중립형",
- "strategyDescript": "콴텍으로 노후대비, 참 잘했다 싶어요! 일본 연금기관의 운용 방식처럼 보수적이고 탄탄한 자산배분을 통해 장기적으로 우상향하는 투자 성과를 추구하는 EMP 포트폴리오 전략이에요.",
- "hashTags": "#연금추종 #자산배분 #장기투자",
- "investTarket": null,
- "baseFeeRate": null,
- "performanceFeeRate": null,
- "feePaymentMethod": null,
- "joinTerm": null,
- "activeYn": null,
- "referenceInfo": [
- {
- "addDesc1": "가입자의 평균 연령은",
- "addDesc2": "47 세",
- "emoji": "1F469"
- },
- {
- "addDesc1": "최고령자는",
- "addDesc2": "57 세",
- "emoji": "1F474"
- },
- {
- "addDesc1": "평균 투자금액은",
- "addDesc2": "500 만원",
- "emoji": "1F4B0"
- },
- {
- "addDesc1": "최고 투자금액은",
- "addDesc2": "800 만원",
- "emoji": "1F4B0"
- }
- ],
- "strategyDefaultInfo": {
- "strategyId": "KP0092",
- "raCode": "RA113143",
- "portType": "2",
- "strategyName": "노후 보장 치트키, 연금 추종 전략",
- "subStrategyName": "콴텍 Q-Shield 국내 EMP4호",
- "groupTypeCode": "S",
- "minInvestAmount": "2,000,000원",
- "maxInvestAmount": "2,000,000원",
- "defaultFee": "0%",
- "performanceFee": "15%",
- "maximumManagement": "규모 제한 없음",
- "rebalancingTerm": "정기 및 수시 리밸런싱",
- "investTarket": "한국거래소 상장 ETF 및 기타 예수금",
- "serviceStartDate": "2022년 9월 19일~",
- "joinTerm": "계약 체결일로부터 1년|(1년 단위 자동 연장)",
- "paymentMethod": "원화 (KRW) 현금",
- "managementPlan1": "한국 상장 ETF로 유니버스 구성",
- "managementPlan2": "보수적인 관점의 자산배분 전략 활용",
- "managementPlan3": "콴텍 Q-엔진을 통한 시장 판단 및 위험관리 기능 강화",
- "managementAlgorithmName": "콴텍 Q-Shield 국내 EMP 4호",
- "managementAlgorithmRate": "100%",
- "managementAlgorithmUniverse": "주식 및 채권 ETF(한국 상장)",
- "managementAlgorithmBenchmark": "MSCI 글로벌 주식+글로벌 채권",
- "managementAlgorithmCoreFector": "노후보장 치트키&연금추종전략",
- "managementAlgorithmStyle": "자산배분 블렌드(blend)",
- "managementAlgorithmRiskManagement": "Q-X 모듈 단계별 현금 비중 조절",
- "fileUrl": ""
- }
- },
- "strategyInvestTypeInfo": [
- {
- "strategyId": "KP0092",
- "raCode": "RA113143",
- "portType": "2",
- "strategyName": "노후 보장 치트키, 연금 추종 전략",
- "investTypeCode": "2",
- "investTypeName": "위험중립형",
- "assetRate": [
- {
- "assetsCode": "S",
- "assetsName": "주식형",
- "assetsRate": 0.75,
- "assetsOrder": 1
- },
- {
- "assetsCode": "B",
- "assetsName": "채권형",
- "assetsRate": 0,
- "assetsOrder": 2
- },
- {
- "assetsCode": "G",
- "assetsName": "실물형",
- "assetsRate": 0,
- "assetsOrder": 3
- },
- {
- "assetsCode": "W",
- "assetsName": "현금(KRW)",
- "assetsRate": 0.25,
- "assetsOrder": 4
- },
- {
- "assetsCode": "E",
- "assetsName": "ETF",
- "assetsRate": 0,
- "assetsOrder": 5
- },
- {
- "assetsCode": "F",
- "assetsName": "펀드",
- "assetsRate": 0,
- "assetsOrder": 6
- }
- ]
- },
- {
- "strategyId": "KP0093",
- "raCode": "RA113142",
- "portType": "2",
- "strategyName": "노후 보장 치트키, 연금 추종 전략",
- "investTypeCode": "3",
- "investTypeName": "안정추구형",
- "assetRate": [
- {
- "assetsCode": "S",
- "assetsName": "주식형",
- "assetsRate": 0.5,
- "assetsOrder": 1
- },
- {
- "assetsCode": "B",
- "assetsName": "채권형",
- "assetsRate": 0,
- "assetsOrder": 2
- },
- {
- "assetsCode": "G",
- "assetsName": "실물형",
- "assetsRate": 0,
- "assetsOrder": 3
- },
- {
- "assetsCode": "W",
- "assetsName": "현금(KRW)",
- "assetsRate": 0.5,
- "assetsOrder": 4
- },
- {
- "assetsCode": "E",
- "assetsName": "ETF",
- "assetsRate": 0,
- "assetsOrder": 5
- },
- {
- "assetsCode": "F",
- "assetsName": "펀드",
- "assetsRate": 0,
- "assetsOrder": 6
- }
- ]
- }
- ]
-}
-```
-
-
-
-
-
-`market/strategy/promotion` 의 response 구조
-
-```json
-{
- "topInfo": {
- "strategyId": "KP0011",
- "strategyName": "파이어족 꿈꾸기",
- "globalType": "1",
- "portType": "1",
- "comdKind": "1",
- "hashTag": [
- "#한국중소형",
- "#실적주",
- "#시장나침반"
- ],
- "pubStartDate": "20190211",
- "baseDate": "20240809",
- "pubYears": "5.4",
- "referenceInfo": [
- {
- "investType": "2",
- "title": "누적 수익률",
- "content": "293.86"
- },
- {
- "investType": "",
- "title": "알고리즘|공시시작일",
- "content": "2019.02.11"
- },
- {
- "investType": "",
- "title": "평균투자금액",
- "content": "414 만원"
- },
- {
- "investType": "",
- "title": "최고투자금액",
- "content": "7,007 만원"
- }
- ]
- },
- "strategyInfo": {
- "industryInfoList": [
- {
- "industryId": "005",
- "industryName": "식품,음료,담배",
- "industryImageURL": "https://apidev.quantec.co.kr:8000/v1/img/app/grouping_a_5.png"
- },
- {
- "industryId": "007",
- "industryName": "자본재",
- "industryImageURL": "https://apidev.quantec.co.kr:8000/v1/img/app/grouping_a_7.png"
- },
- {
- "industryId": "024",
- "industryName": "소프트웨어와 서비스",
- "industryImageURL": "https://apidev.quantec.co.kr:8000/v1/img/app/grouping_a_24.png"
- }
- ],
- "testbedName": "콴텍 가치투자 주식형2호",
- "strategyDescription": "한국 강소기업 중에서 현금을 많이 보유하고 있고, 현금 흐름 개선으로 성장 잠재력이 높은 기업을 위주로 구성한 포트폴리오에요. 투자 위험 대비 높은 기대 수익을 추구하여, 단기 목돈 마련을 원하는 분에게 적합해요.",
- "recommendedInvestAmount": 3000000,
- "minInvestAmount": 1500000,
- "defaultFee": 0,
- "performanceFee": 15,
- "maximumManagement": "규모 제한 없음",
- "rebalancingTerm": "정기 및 수시 리밸런싱",
- "investTarget": "한국거래소 상장 및 등록 기업의 주권, 기타 예수금",
- "serviceStartDate": "2022년 4월 1일~",
- "joinTerm": "계약 체결일로부터 1년|(1년 단위 자동 연장)",
- "paymentMethod": "원화(KRW)현금",
- "strategyIndexInfo": {
- "pubStartDate": "20190211",
- "baseDate": "20240809",
- "pubYears": "5.4",
- "indexInfo": [
- {
- "strategyId": "KP0013",
- "investType": "4",
- "operationAmount": 3263049,
- "oneWeekProfitRate": -1.67,
- "oneMonthProfitRate": -3.16,
- "threeMonthProfitRate": -4.56,
- "sixMonthProfitRate": -4.61,
- "oneYearProfitRate": -2.76,
- "twoYearProfitRate": 4.57,
- "threeYearProfitRate": 0.81,
- "yearExchangeProfitIndex": 9.77,
- "fullProfitRate": 67.61,
- "standardDeviation": 0.09,
- "beta": 0.29,
- "sharpeRatio": 0.82,
- "alpha": 0.07,
- "infoRate": 0.35,
- "trackError": 0.16,
- "rewardRate": 3.58,
- "mdd": -13.6
- },
- {
- "strategyId": "KP0012",
- "investType": "3",
- "operationAmount": 4378076,
- "oneWeekProfitRate": -2.94,
- "oneMonthProfitRate": -5.64,
- "threeMonthProfitRate": -8.3,
- "sixMonthProfitRate": -8.47,
- "oneYearProfitRate": -6.83,
- "twoYearProfitRate": 3.58,
- "threeYearProfitRate": -1.97,
- "yearExchangeProfitIndex": 14.86,
- "fullProfitRate": 122.25,
- "standardDeviation": 0.15,
- "beta": 0.48,
- "sharpeRatio": 0.83,
- "alpha": 0.12,
- "infoRate": 0.67,
- "trackError": 0.16,
- "rewardRate": 2.98,
- "mdd": -23.73
- },
- {
- "strategyId": "KP0011",
- "investType": "2",
- "operationAmount": 2588359,
- "oneWeekProfitRate": -6.14,
- "oneMonthProfitRate": -11.54,
- "threeMonthProfitRate": -16.8,
- "sixMonthProfitRate": -17.62,
- "oneYearProfitRate": -16.56,
- "twoYearProfitRate": -1.86,
- "threeYearProfitRate": -12.89,
- "yearExchangeProfitIndex": 25.18,
- "fullProfitRate": 293.86,
- "standardDeviation": 0.31,
- "beta": 0.98,
- "sharpeRatio": 0.75,
- "alpha": 0.21,
- "infoRate": 0.87,
- "trackError": 0.24,
- "rewardRate": 1.86,
- "mdd": -46.8
- }
- ]
- },
- "addDepositPartlyWithdraw": [
- "납입기간 중 추가입금 가능 (상품별 최소 추가입금 단위 부여)",
- "일임 운용의 효율을 제고하기 위해 일부 출금|(부분 출금)은 불가하나 중도해지 후 출금 가능",
- "운용의 효율을 제고하기 위해 일부(부분) 출금은 불가하나 전액 중도해지 후 일부 출금 가능합니다"
- ],
- "exchangRateHedge": [
- "국내 원화자산의 환율 변동 위험 없음"
- ],
- "lawScreeningNo": ""
- },
- "managementInfo": {
- "strategyAssetInfo": [
- {
- "strategyId": "KP0011",
- "investType": "2",
- "assetInfo": [
- {
- "skind": "S",
- "weight": 1
- }
- ]
- },
- {
- "strategyId": "KP0012",
- "investType": "3",
- "assetInfo": [
- {
- "skind": "S",
- "weight": 0.5
- },
- {
- "skind": "W",
- "weight": 0.5
- }
- ]
- },
- {
- "strategyId": "KP0013",
- "investType": "4",
- "assetInfo": [
- {
- "skind": "S",
- "weight": 0.3
- },
- {
- "skind": "W",
- "weight": 0.7
- }
- ]
- }
- ],
- "managementPlan": [
- "한국 중소형주 위주로 유니버스 구성",
- "기업의 유동성 중심의 종목 픽업과 자산배분 알고리즘 활용",
- "콴텍 Q-엔진을 통한 시장 판단 및 위험관리 기능 강화"
- ],
- "managementAlgorithmName": [
- {
- "title": "콴텍 가치투자 주식형 2호",
- "content": "100%"
- }
- ],
- "managementAlgorithm": [
- {
- "title": "유니버스",
- "content": "한국 중소형주(mid-small cap)"
- },
- {
- "title": "벤치마크",
- "content": "코스피 종합지수(KOSPI)"
- },
- {
- "title": "코어팩터",
- "content": "FCF&Quality 팩터"
- },
- {
- "title": "스타일",
- "content": "중소형 가치주(value)"
- },
- {
- "title": "위험관리",
- "content": "Q-X 모듈 단계별 현금 비중 조절"
- }
- ]
- }
-}
-```
-
-
-
-
-
-
-
-## 피드백 상황 2024-08-21
-
-- 홍광진이사
-
-1. 최근 1개월과 6개월은 하단의 기간이 이상하고, 1개월, 6개월, 1년 수익률 그래프가 모두 동일합니다.
-
-
-
-2. 미흡 및 주요 지표 설명은 아래 화면처럼 주의/미흡인 종목들 아래에 확장된 형태로 붙어서 나오는거고 종목도 우수~주의 순서로 정렬되어야 하지 않나요?
-
-
-
-3. 차트 위의 텍스트 위치 조정도 필요합니다.
-
-
-
diff --git a/quantec/quantecReport/image-1.png b/quantec/quantecReport/image-1.png
deleted file mode 100644
index 27bbc82..0000000
Binary files a/quantec/quantecReport/image-1.png and /dev/null differ
diff --git a/quantec/quantecReport/image-2.png b/quantec/quantecReport/image-2.png
deleted file mode 100644
index 60768c6..0000000
Binary files a/quantec/quantecReport/image-2.png and /dev/null differ
diff --git a/quantec/quantecReport/image-3.png b/quantec/quantecReport/image-3.png
deleted file mode 100644
index fe4a582..0000000
Binary files a/quantec/quantecReport/image-3.png and /dev/null differ
diff --git a/quantec/quantecReport/image.png b/quantec/quantecReport/image.png
deleted file mode 100644
index ec73a6a..0000000
Binary files a/quantec/quantecReport/image.png and /dev/null differ