def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: sender_id = tracker.current_state()['sender_id'] if sender_id is None: sender_id = "rasa-shell" res = WatchStock.select().where(WatchStock.sender_id == sender_id) if len(res) == 0: dispatcher.utter_message(template="utter_inform_empty_list", ) return [] for item in res: result = RequestPrice.CurrentPrice(item.symbol) date = result[0][constants.DATE] time = result[0][constants.TIME] dispatcher.utter_message( template='utter_answer_price', time=time_format.TimeHelper.toDisplayText(date, time), symbol=item.symbol, basic_price=result[0][constants.PRICE_TYPE_BASIC], floor_price=result[0][constants.PRICE_TYPE_FLOOR], ceiling_price=result[0][constants.PRICE_TYPE_CEILING], high_price=result[0][constants.PRICE_TYPE_HIGH], low_price=result[0][constants.PRICE_TYPE_LOW], change=result[0][constants.PRICE_TYPE_AD_CHANGE], change_pct=result[0][constants.PRICE_TYPE_AD_CHANGE_PCT], change_symbol=display_text.DisplayHelper.numberToArrow( result[0][constants.PRICE_TYPE_AD_CHANGE])) dispatcher.utter_message(template="utter_more_info") hook.after_processed(tracker, "action_show_watching_list") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: try: stock_code = tracker.get_slot("stock_code") if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] res = Company.search_by_symbol(symbol=stock_code) if not res: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] company = res dispatcher.utter_message( template='utter_answer_company_overview', symbol=company.symbol, company_name=company.name, overview=company.overview, classification=company.classification.name, employees=company.employees, listing_volume='{:,}'.format(company.listing_volume), date_of_issue=company.date_of_issue.strftime("%d/%m/%Y")) hook.after_processed(tracker, "action_get_info") return [] except: hook.after_processed(tracker, "action_get_info") dispatcher.utter_message( "Có lỗi xảy ra 😔 Hãy thỠlại sau!") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: stock_code = tracker.get_slot("stock_code") if stock_code is None: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] sender_id = tracker.current_state()['sender_id'] if sender_id is None: sender_id = "rasa-shell" res = WatchStock.select().where(WatchStock.sender_id == sender_id and WatchStock.symbol == stock_code) if len(res) == 0: dispatcher.utter_message( template="utter_remove_from_watch_list_fail", stock_code="stock_code") else: q = WatchStock.get(symbol=stock_code, sender_id=sender_id) q.delete_instance() dispatcher.utter_message( template="utter_remove_from_watch_list_success", stock_code=stock_code) dispatcher.utter_message(template="utter_ask_for_show_list", ) hook.after_processed(tracker, "action_remove_from_watching_list") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: stock_code = tracker.get_slot("stock_code") date_range = tracker.get_slot("date_range") if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_code' ) return [] image_url = service.Service.HandleChangeCheatSeatAction(stock_code, date_range) date_range_text = utils.date_range_to_text(date_range=date_range) dispatcher.utter_message( template='utter_answer_price_change', chart_image=image_url, date_range_text=date_range_text ) dispatcher.utter_message( template='utter_support_price_date_range' ) hook.after_processed(tracker, "action_request_price_change") return [SlotSet("stock_code", stock_code)]
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: stock_code = tracker.get_slot("stock_code") date_range = tracker.get_slot("date_range") if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] if date_range == "year": time = "năm" else: time = "quý" res = FinancialReport.get_last_report(symbol=stock_code, time_range=date_range) company = Company.search_by_symbol(symbol=stock_code) dispatcher.utter_message( template='utter_answer_business_result', company_name=company.name, time=res.time, sales='{:.2f}'.format(res.sales / 1000000000), gross_profit='{:.2f}'.format(res.gross_profit / 1000000000), operating_profit='{:.2f}'.format(res.operating_profit / 1000000000), net_profit='{:.2f}'.format(res.net_profit / 1000000000), ) dispatcher.utter_message(template="utter_refer_business_report", symbol=stock_code, date_range=time) hook.after_processed(tracker, "action_get_business_result") return [events.SlotSet("stock_code", stock_code)]
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: if tracker.get_slot("branch") is None: return [events.FollowupAction("action_get_branch_list")] branch_id = int(tracker.get_slot("branch")) branch = Classification.get_by_id(branch_id) number_of_companies = Company.count_by_branch(branch_id) top_profit_companies = Company.highest_profit_by_branch(branch_id) print(top_profit_companies) if branch.profit_growth > 10: comment = "khả quan" elif branch.profit_growth > 0: comment = "trung láºp" else: comment = "kém khả quan" company_list = "" for company in top_profit_companies: company_list += "👉 {name} - mã *{symbol}*\n".format( name=company.name, symbol=company.symbol) dispatcher.utter_message(template="utter_answer_branch_finance", branch_name=branch.name, number_of_companies=number_of_companies, profit_growth=branch.profit_growth, pe_avg=branch.pe_avg, comment=comment) dispatcher.utter_message(template="utter_answer_top_profit", company_list=company_list, branch_name=branch.name) hook.after_processed(tracker, self.name()) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: branches = Classification.select() text = "" for branch in branches: text += "👉 {branch_name}\n".format(branch_name=branch.name) dispatcher.utter_message(template="utter_answer_branch_list", branch_list=text) hook.after_processed(tracker, self.name()) return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: try: result_list = json.loads(tracker.get_slot("result_list")) result_text = [] for company in result_list: result_text.append("👉 *{name}* - mã *{symbol}*".format( name=company["name"], symbol=company["symbol"])) dispatcher.utter_message(template="utter_list_results", result_text="\n".join(result_text)) dispatcher.utter_message(template="utter_ask_exact_code", ) hook.after_processed(tracker, "action_show_search_result") return [events.SlotSet("stock_code", None)] except: hook.after_processed(tracker, "action_get_info") dispatcher.utter_message( "Có lỗi xảy ra 😔 Hãy thỠlại sau!") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: stock_code = tracker.get_slot("stock_code") date_range = tracker.get_slot("date_range") print(stock_code) if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] image_url = Service.handle_business_report_action( stock_code, date_range) company = Company.search_by_symbol(symbol=stock_code) dispatcher.utter_message(template='utter_answer_business_set_report', company_name=company.name, image_url=image_url) hook.after_processed(tracker, "action_evaluate_business") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: name = tracker.get_slot("company_name") result = Company.search_by_name(name) if len(result) == 0: dispatcher.utter_message( template='utter_ask_particular_stock_name' ) return [] company = result[0] result = RequestPrice.CurrentPrice(company.symbol) date = result[0][constants.DATE] time = result[0][constants.TIME] dispatcher.utter_message( template='utter_answer_price_with_name', time=time_format.TimeHelper.toDisplayText(date, time), symbol=company.symbol, company_name=company.name, basic_price=result[0][constants.PRICE_TYPE_BASIC], floor_price=result[0][constants.PRICE_TYPE_FLOOR], ceiling_price=result[0][constants.PRICE_TYPE_CEILING], high_price=result[0][constants.PRICE_TYPE_HIGH], low_price=result[0][constants.PRICE_TYPE_LOW], change=result[0][constants.PRICE_TYPE_AD_CHANGE], change_pct=result[0][constants.PRICE_TYPE_AD_CHANGE_PCT], change_symbol=display_text.DisplayHelper.numberToArrow(result[0][constants.PRICE_TYPE_AD_CHANGE]) ) dispatcher.utter_message( template='utter_support_after_answer_price', stock_code=company.symbol, ) hook.after_processed(tracker, "action_request_price_by_company") return [SlotSet("stock_code", company.symbol)]
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: stock_code = tracker.get_slot("stock_code") if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_name' ) return [] sender_id = tracker.current_state()['sender_id'] result = RequestPrice.CurrentPrice(stock_code) date = result[0][constants.DATE] time = result[0][constants.TIME] dispatcher.utter_message( template='utter_answer_price', time=time_format.TimeHelper.toDisplayText(date, time), symbol=stock_code, basic_price=result[0][constants.PRICE_TYPE_BASIC], floor_price=result[0][constants.PRICE_TYPE_FLOOR], ceiling_price=result[0][constants.PRICE_TYPE_CEILING], high_price=result[0][constants.PRICE_TYPE_HIGH], low_price=result[0][constants.PRICE_TYPE_LOW], change=result[0][constants.PRICE_TYPE_AD_CHANGE], change_pct=result[0][constants.PRICE_TYPE_AD_CHANGE_PCT], change_symbol=display_text.DisplayHelper.numberToArrow(result[0][constants.PRICE_TYPE_AD_CHANGE]) ) dispatcher.utter_message( template='utter_support_after_answer_price', stock_code=stock_code ) hook.after_processed(tracker, "action_request_price") return []
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: try: stock_code = tracker.get_slot("stock_code") if not stock_code: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] res = FinancialIndicator.search_by_symbol(symbol=stock_code) company = Company.search_by_symbol(symbol=stock_code) if not res: dispatcher.utter_message( template='utter_ask_particular_stock_name') return [] dispatcher.utter_message( template='utter_answer_company_financial', company_name=company.name, pe='{:.2f}'.format(res.PE), ps='{:.2f}'.format(res.PS), eps='{:.2f}'.format(res.EPS), pb='{:.2f}'.format(res.PB), roa='{:.2f}%'.format(res.ROA), roe='{:.2f}%'.format(res.ROE), roic='{:.2f}%'.format(res.ROIC), roce='{:.2f}%'.format(res.ROCE), ) hook.after_processed(tracker, "action_get_financial_indicator") return [] except: hook.after_processed(tracker, "action_get_financial_indicator") dispatcher.utter_message( "Có lỗi xảy ra 😔 Hãy thỠlại sau!") return []