package main import ( "context" "flag" "fmt" "os" "chis_osi/config" ) type appMode string const ( modeServer appMode = "server" modeDeliver appMode = "deliver" ) func parseMode(raw string) (appMode, error) { switch appMode(raw) { case modeServer: return modeServer, nil case modeDeliver: return modeDeliver, nil default: return "", fmt.Errorf("invalid mode %q, want server or deliver", raw) } } func main() { modeFlag := flag.String("mode", string(modeServer), "运行模式:server 或 deliver") configPath := flag.String("config", "config.yaml", "配置文件路径") verifyJKDA := flag.Bool("verify-jkda", false, "阶段0联调验收:从 OSI_VERIFY_ID_CARD 读取身份证并查询 JKDA00002") flag.Parse() mode, err := parseMode(*modeFlag) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(2) } cfg, err := config.Load(*configPath) if err != nil { fmt.Fprintf(os.Stderr, "load config: %v\n", err) os.Exit(2) } if *verifyJKDA { idCard, err := resolveVerifyIDCard(*verifyJKDA, os.Getenv) if err != nil { fmt.Fprintf(os.Stderr, "verify JKDA00002: %v\n", err) os.Exit(2) } result, err := runJKDAFindCheck(context.Background(), cfg, idCard) if err != nil { fmt.Fprintf(os.Stderr, "verify JKDA00002 failed: code=%s message=%s err=%v\n", result.Code, result.Message, err) os.Exit(1) } fmt.Printf("JKDA00002 code=%s message=%s data_count=%d\n", result.Code, result.Message, result.DataCount) return } fmt.Printf("chis_osi mode=%s\n", mode) } func resolveVerifyIDCard(enabled bool, getenv func(string) string) (string, error) { if !enabled { return "", nil } idCard := getenv("OSI_VERIFY_ID_CARD") if idCard == "" { return "", fmt.Errorf("OSI_VERIFY_ID_CARD is required when -verify-jkda is set") } return idCard, nil }