tormenta20 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +27 -0
- data/README.md +203 -12
- data/Rakefile +9 -0
- data/db/schema.sql +382 -0
- data/db/seeds.rb +377 -0
- data/db/tormenta20.sqlite3 +0 -0
- data/docs/armaduras.md +72 -0
- data/docs/armas.md +95 -0
- data/docs/classes.md +105 -0
- data/docs/divindades.md +77 -0
- data/docs/escudos.md +49 -0
- data/docs/itens.md +59 -0
- data/docs/magias.md +157 -0
- data/docs/materiais_especiais.md +50 -0
- data/docs/melhorias.md +55 -0
- data/docs/origens.md +61 -0
- data/docs/poderes.md +98 -0
- data/docs/regras.md +51 -0
- data/examples/database_usage.rb +155 -0
- data/src/json/classes/arcanista.json +86 -0
- data/src/json/classes/barbaro.json +85 -0
- data/src/json/classes/bardo.json +91 -0
- data/src/json/classes/bucaneiro.json +96 -0
- data/src/json/classes/cacador.json +96 -0
- data/src/json/classes/cavaleiro.json +87 -0
- data/src/json/classes/clerigo.json +82 -0
- data/src/json/classes/druida.json +88 -0
- data/src/json/classes/guerreiro.json +90 -0
- data/src/json/classes/inventor.json +100 -0
- data/src/json/classes/ladino.json +96 -0
- data/src/json/classes/lutador.json +90 -0
- data/src/json/classes/nobre.json +100 -0
- data/src/json/classes/paladino.json +93 -0
- data/src/json/deuses/aharadak.json +26 -0
- data/src/json/deuses/allihanna.json +26 -0
- data/src/json/deuses/arsenal.json +28 -0
- data/src/json/deuses/azgher.json +28 -0
- data/src/json/deuses/hyninn.json +28 -0
- data/src/json/deuses/kallyadranoch.json +28 -0
- data/src/json/deuses/khalmyr.json +27 -0
- data/src/json/deuses/lena.json +28 -0
- data/src/json/deuses/lin_wu.json +28 -0
- data/src/json/deuses/marah.json +28 -0
- data/src/json/deuses/megalokk.json +28 -0
- data/src/json/deuses/nimb.json +27 -0
- data/src/json/deuses/oceano.json +26 -0
- data/src/json/deuses/sszzaas.json +28 -0
- data/src/json/deuses/tanna_toh.json +28 -0
- data/src/json/deuses/tenebra.json +26 -0
- data/src/json/deuses/thwor.json +27 -0
- data/src/json/deuses/thyatis.json +26 -0
- data/src/json/deuses/valkaria.json +30 -0
- data/src/json/deuses/wynna.json +25 -0
- data/src/json/equipamentos/armaduras/leves/armadura_acolchoada.json +15 -0
- data/src/json/equipamentos/armaduras/leves/armadura_de_couro.json +13 -0
- data/src/json/equipamentos/armaduras/leves/couraca.json +13 -0
- data/src/json/equipamentos/armaduras/leves/couro_batido.json +13 -0
- data/src/json/equipamentos/armaduras/leves/gibao_de_peles.json +13 -0
- data/src/json/equipamentos/armaduras/pesadas/armadura_completa.json +19 -0
- data/src/json/equipamentos/armaduras/pesadas/brunea.json +17 -0
- data/src/json/equipamentos/armaduras/pesadas/cota_de_malha.json +17 -0
- data/src/json/equipamentos/armaduras/pesadas/loriga_segmentada.json +17 -0
- data/src/json/equipamentos/armaduras/pesadas/meia_armadura.json +17 -0
- data/src/json/equipamentos/armas/exoticas/chicote.json +23 -0
- data/src/json/equipamentos/armas/exoticas/corrente_de_espinhos.json +23 -0
- data/src/json/equipamentos/armas/exoticas/espada_bastarda.json +19 -0
- data/src/json/equipamentos/armas/exoticas/katana.json +19 -0
- data/src/json/equipamentos/armas/exoticas/machado_anao.json +19 -0
- data/src/json/equipamentos/armas/exoticas/machado_taurico.json +17 -0
- data/src/json/equipamentos/armas/exoticas/rede.json +41 -0
- data/src/json/equipamentos/armas/fogo/mosquete.json +21 -0
- data/src/json/equipamentos/armas/fogo/pistola.json +21 -0
- data/src/json/equipamentos/armas/marciais/alabarda.json +17 -0
- data/src/json/equipamentos/armas/marciais/alfange.json +17 -0
- data/src/json/equipamentos/armas/marciais/arco_longo.json +22 -0
- data/src/json/equipamentos/armas/marciais/besta_pesada.json +21 -0
- data/src/json/equipamentos/armas/marciais/cimitarra.json +17 -0
- data/src/json/equipamentos/armas/marciais/espada_longa.json +17 -0
- data/src/json/equipamentos/armas/marciais/florete.json +17 -0
- data/src/json/equipamentos/armas/marciais/gadanho.json +17 -0
- data/src/json/equipamentos/armas/marciais/lanca_montada.json +20 -0
- data/src/json/equipamentos/armas/marciais/machadinha.json +19 -0
- data/src/json/equipamentos/armas/marciais/machado_de_batalha.json +17 -0
- data/src/json/equipamentos/armas/marciais/machado_de_guerra.json +17 -0
- data/src/json/equipamentos/armas/marciais/mangual.json +21 -0
- data/src/json/equipamentos/armas/marciais/marreta.json +17 -0
- data/src/json/equipamentos/armas/marciais/martelo_de_guerra.json +17 -0
- data/src/json/equipamentos/armas/marciais/montante.json +17 -0
- data/src/json/equipamentos/armas/marciais/picareta.json +17 -0
- data/src/json/equipamentos/armas/marciais/tridente.json +22 -0
- data/src/json/equipamentos/armas/simples/adaga.json +21 -0
- data/src/json/equipamentos/armas/simples/arco_curto.json +21 -0
- data/src/json/equipamentos/armas/simples/azagaia.json +20 -0
- data/src/json/equipamentos/armas/simples/besta_leve.json +21 -0
- data/src/json/equipamentos/armas/simples/bordao.json +17 -0
- data/src/json/equipamentos/armas/simples/clava.json +17 -0
- data/src/json/equipamentos/armas/simples/espada_curta.json +17 -0
- data/src/json/equipamentos/armas/simples/foice.json +17 -0
- data/src/json/equipamentos/armas/simples/funda.json +23 -0
- data/src/json/equipamentos/armas/simples/lanca.json +19 -0
- data/src/json/equipamentos/armas/simples/maca.json +17 -0
- data/src/json/equipamentos/armas/simples/pique.json +17 -0
- data/src/json/equipamentos/armas/simples/tacape.json +17 -0
- data/src/json/equipamentos/escudos/escudo_leve.json +22 -0
- data/src/json/equipamentos/escudos/escudo_pesado.json +22 -0
- data/src/json/equipamentos/itens/alimentacao/batata_valkariana.json +14 -0
- data/src/json/equipamentos/itens/alimentacao/gorad_quente.json +12 -0
- data/src/json/equipamentos/itens/alimentacao/macarrao_de_yuvalin.json +12 -0
- data/src/json/equipamentos/itens/alimentacao/prato_do_aventureiro.json +13 -0
- data/src/json/equipamentos/itens/alimentacao/racao_de_viagem.json +14 -0
- data/src/json/equipamentos/itens/alimentacao/refeicao_comum.json +9 -0
- data/src/json/equipamentos/itens/alimentacao/sopa_de_peixe.json +13 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/baga_de_fogo.json +17 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/dente_de_dragao.json +17 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/essencia_abissal.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/liquen_lilas.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/musgo_purpura.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/ossos_de_monstro.json +17 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/po_de_cristal.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/po_de_giz.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/ramo_verdejante.json +16 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/saco_de_sal.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/seixo_de_ambar.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/catalisadores/terra_de_cemiterio.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/acido.json +19 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/balsamo_restaurador.json +16 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/bomba.json +30 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/cosmetico.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/elixir_do_amor.json +23 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/essencia_de_mana.json +16 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/fogo_alquimico.json +27 -0
- data/src/json/equipamentos/itens/alquimicos/preparados/po_do_desaparecimento.json +18 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/beladona.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/bruma_sonolenta.json +21 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/cicuta.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/essencia_de_sombra.json +20 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/nevoa_toxica.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/peconha_comum.json +24 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/peconha_concentrada.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/peconha_potente.json +22 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/po_de_lich.json +23 -0
- data/src/json/equipamentos/itens/alquimicos/venenos/riso_de_nimb.json +21 -0
- data/src/json/equipamentos/itens/animais/alforje.json +11 -0
- data/src/json/equipamentos/itens/animais/cao_de_caca.json +18 -0
- data/src/json/equipamentos/itens/animais/cavalo.json +20 -0
- data/src/json/equipamentos/itens/animais/cavalo_de_guerra.json +17 -0
- data/src/json/equipamentos/itens/animais/estabulo.json +10 -0
- data/src/json/equipamentos/itens/animais/ponei.json +21 -0
- data/src/json/equipamentos/itens/animais/ponei_de_guerra.json +18 -0
- data/src/json/equipamentos/itens/animais/trobo.json +14 -0
- data/src/json/equipamentos/itens/aventura/agua_benta.json +23 -0
- data/src/json/equipamentos/itens/aventura/algemas.json +35 -0
- data/src/json/equipamentos/itens/aventura/arpeu.json +18 -0
- data/src/json/equipamentos/itens/aventura/bandoleira_de_pocoes.json +15 -0
- data/src/json/equipamentos/itens/aventura/barraca.json +14 -0
- data/src/json/equipamentos/itens/aventura/corda.json +26 -0
- data/src/json/equipamentos/itens/aventura/espelho.json +10 -0
- data/src/json/equipamentos/itens/aventura/lampiao.json +19 -0
- data/src/json/equipamentos/itens/aventura/mochila.json +12 -0
- data/src/json/equipamentos/itens/aventura/mochila_de_aventureiro.json +14 -0
- data/src/json/equipamentos/itens/aventura/oleo.json +19 -0
- data/src/json/equipamentos/itens/aventura/organizador_de_pergaminhos.json +14 -0
- data/src/json/equipamentos/itens/aventura/pe_de_cabra.json +18 -0
- data/src/json/equipamentos/itens/aventura/saco_de_dormir.json +13 -0
- data/src/json/equipamentos/itens/aventura/simbolo_sagrado.json +15 -0
- data/src/json/equipamentos/itens/aventura/tocha.json +28 -0
- data/src/json/equipamentos/itens/aventura/vara_de_madeira.json +12 -0
- data/src/json/equipamentos/itens/esotericos/bolsa_de_po.json +17 -0
- data/src/json/equipamentos/itens/esotericos/cajado_arcano.json +20 -0
- data/src/json/equipamentos/itens/esotericos/cetro_elemental.json +22 -0
- data/src/json/equipamentos/itens/esotericos/costela_de_lich.json +18 -0
- data/src/json/equipamentos/itens/esotericos/dedo_de_ente.json +21 -0
- data/src/json/equipamentos/itens/esotericos/luva_de_ferro.json +17 -0
- data/src/json/equipamentos/itens/esotericos/medalhao_de_prata.json +16 -0
- data/src/json/equipamentos/itens/esotericos/orbe_cristalino.json +15 -0
- data/src/json/equipamentos/itens/esotericos/tomo_hermetico.json +17 -0
- data/src/json/equipamentos/itens/esotericos/varinha_arcana.json +15 -0
- data/src/json/equipamentos/itens/ferramentas/alaude_elfico.json +16 -0
- data/src/json/equipamentos/itens/ferramentas/colecao_de_livros.json +16 -0
- data/src/json/equipamentos/itens/ferramentas/equipamento_de_viagem.json +19 -0
- data/src/json/equipamentos/itens/ferramentas/estojo_de_disfarces.json +18 -0
- data/src/json/equipamentos/itens/ferramentas/flauta_mistica.json +17 -0
- data/src/json/equipamentos/itens/ferramentas/gazua.json +18 -0
- data/src/json/equipamentos/itens/ferramentas/instrumento_musical.json +20 -0
- data/src/json/equipamentos/itens/ferramentas/instrumentos_de_oficio.json +21 -0
- data/src/json/equipamentos/itens/ferramentas/luneta.json +15 -0
- data/src/json/equipamentos/itens/ferramentas/maleta_de_medicamentos.json +17 -0
- data/src/json/equipamentos/itens/ferramentas/sela.json +19 -0
- data/src/json/equipamentos/itens/ferramentas/tambor_das_profundezas.json +17 -0
- data/src/json/equipamentos/itens/servicos/conducao.json +19 -0
- data/src/json/equipamentos/itens/servicos/curandeiro.json +9 -0
- data/src/json/equipamentos/itens/servicos/estadia.json +42 -0
- data/src/json/equipamentos/itens/servicos/magia.json +23 -0
- data/src/json/equipamentos/itens/servicos/mensageiro.json +10 -0
- data/src/json/equipamentos/itens/veiculos/balao_goblin.json +34 -0
- data/src/json/equipamentos/itens/veiculos/canoa.json +18 -0
- data/src/json/equipamentos/itens/veiculos/carroca.json +20 -0
- data/src/json/equipamentos/itens/veiculos/carruagem.json +21 -0
- data/src/json/equipamentos/itens/veiculos/veleiro.json +11 -0
- data/src/json/equipamentos/itens/vestuario/andrajos_de_aldeao.json +16 -0
- data/src/json/equipamentos/itens/vestuario/bandana.json +14 -0
- data/src/json/equipamentos/itens/vestuario/botas_reforcadas.json +15 -0
- data/src/json/equipamentos/itens/vestuario/camisa_bufante.json +14 -0
- data/src/json/equipamentos/itens/vestuario/capa_esvoacante.json +14 -0
- data/src/json/equipamentos/itens/vestuario/capa_pesada.json +14 -0
- data/src/json/equipamentos/itens/vestuario/casaco_longo.json +15 -0
- data/src/json/equipamentos/itens/vestuario/chapeu_arcano.json +15 -0
- data/src/json/equipamentos/itens/vestuario/enfeite_de_elmo.json +15 -0
- data/src/json/equipamentos/itens/vestuario/farrapos_de_ermitao.json +16 -0
- data/src/json/equipamentos/itens/vestuario/gorro_de_ervas.json +14 -0
- data/src/json/equipamentos/itens/vestuario/luva_de_pelica.json +14 -0
- data/src/json/equipamentos/itens/vestuario/manopla.json +15 -0
- data/src/json/equipamentos/itens/vestuario/manto_camuflado.json +20 -0
- data/src/json/equipamentos/itens/vestuario/manto_eclesiastico.json +14 -0
- data/src/json/equipamentos/itens/vestuario/robe_mistico.json +14 -0
- data/src/json/equipamentos/itens/vestuario/sapatos_de_camurca.json +14 -0
- data/src/json/equipamentos/itens/vestuario/tabardo.json +14 -0
- data/src/json/equipamentos/itens/vestuario/traje_da_corte.json +19 -0
- data/src/json/equipamentos/itens/vestuario/traje_de_viajante.json +13 -0
- data/src/json/equipamentos/itens/vestuario/veste_de_seda.json +14 -0
- data/src/json/equipamentos/municoes/balas.json +13 -0
- data/src/json/equipamentos/municoes/flechas.json +13 -0
- data/src/json/equipamentos/municoes/pedras.json +14 -0
- data/src/json/equipamentos/municoes/virotes.json +14 -0
- data/src/json/itens_superiores/materiais_especiais/aco_rubi.json +44 -0
- data/src/json/itens_superiores/materiais_especiais/adamante.json +35 -0
- data/src/json/itens_superiores/materiais_especiais/gelo_eterno.json +33 -0
- data/src/json/itens_superiores/materiais_especiais/madeira_tollon.json +31 -0
- data/src/json/itens_superiores/materiais_especiais/materia_vermelha.json +51 -0
- data/src/json/itens_superiores/materiais_especiais/mitral.json +38 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/ajustada.json +11 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/delicada.json +15 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/espinhosa.json +15 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/espinhoso.json +11 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/polida.json +13 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/reforcada.json +13 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/selada.json +14 -0
- data/src/json/itens_superiores/melhorias/armaduras_escudos/sob_medida.json +13 -0
- data/src/json/itens_superiores/melhorias/armas/atroz.json +11 -0
- data/src/json/itens_superiores/melhorias/armas/certeira.json +11 -0
- data/src/json/itens_superiores/melhorias/armas/cruel.json +11 -0
- data/src/json/itens_superiores/melhorias/armas/equilibrada.json +11 -0
- data/src/json/itens_superiores/melhorias/armas/harmonizada.json +13 -0
- data/src/json/itens_superiores/melhorias/armas/injecao_alquimica.json +14 -0
- data/src/json/itens_superiores/melhorias/armas/macica.json +12 -0
- data/src/json/itens_superiores/melhorias/armas/mira_telescopica.json +16 -0
- data/src/json/itens_superiores/melhorias/armas/precisa.json +12 -0
- data/src/json/itens_superiores/melhorias/armas/pungente.json +11 -0
- data/src/json/itens_superiores/melhorias/esotericos/canalizador.json +11 -0
- data/src/json/itens_superiores/melhorias/esotericos/energetico.json +12 -0
- data/src/json/itens_superiores/melhorias/esotericos/harmonizado.json +16 -0
- data/src/json/itens_superiores/melhorias/esotericos/poderoso.json +11 -0
- data/src/json/itens_superiores/melhorias/esotericos/vigilante.json +11 -0
- data/src/json/itens_superiores/melhorias/ferramentas_vestuario/aprimorado.json +15 -0
- data/src/json/itens_superiores/melhorias/geral/banhado_a_ouro.json +17 -0
- data/src/json/itens_superiores/melhorias/geral/cravejado_de_gemas.json +12 -0
- data/src/json/itens_superiores/melhorias/geral/discreto.json +13 -0
- data/src/json/itens_superiores/melhorias/geral/macabro.json +12 -0
- data/src/json/itens_superiores/melhorias/geral/material_especial.json +13 -0
- data/src/json/origens/acolito.json +11 -0
- data/src/json/origens/amigo_dos_animais.json +11 -0
- data/src/json/origens/amnesico.json +10 -0
- data/src/json/origens/aristocrata.json +11 -0
- data/src/json/origens/artesao.json +11 -0
- data/src/json/origens/artista.json +11 -0
- data/src/json/origens/assistente_de_laboratorio.json +11 -0
- data/src/json/origens/batedor.json +11 -0
- data/src/json/origens/capanga.json +11 -0
- data/src/json/origens/charlatao.json +11 -0
- data/src/json/origens/circense.json +11 -0
- data/src/json/origens/criminoso.json +11 -0
- data/src/json/origens/curandeiro.json +11 -0
- data/src/json/origens/eremita.json +11 -0
- data/src/json/origens/escravo.json +11 -0
- data/src/json/origens/estudioso.json +11 -0
- data/src/json/origens/fazendeiro.json +11 -0
- data/src/json/origens/forasteiro.json +11 -0
- data/src/json/origens/gladiador.json +11 -0
- data/src/json/origens/guarda.json +11 -0
- data/src/json/origens/herdeiro.json +11 -0
- data/src/json/origens/heroi_campones.json +11 -0
- data/src/json/origens/marujo.json +11 -0
- data/src/json/origens/mateiro.json +11 -0
- data/src/json/origens/membro_de_guilda.json +11 -0
- data/src/json/origens/mercador.json +11 -0
- data/src/json/origens/minerador.json +11 -0
- data/src/json/origens/nomade.json +11 -0
- data/src/json/origens/pivete.json +11 -0
- data/src/json/origens/refugiado.json +11 -0
- data/src/json/origens/seguidor.json +11 -0
- data/src/json/origens/selvagem.json +11 -0
- data/src/json/origens/soldado.json +11 -0
- data/src/json/origens/taverneiro.json +11 -0
- data/src/json/origens/trabalhador.json +11 -0
- data/src/json/poderes/habilidades_unicas_de_origem/a_prova_de_tudo.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/agua_no_feijao.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/alpinista_social.json +9 -0
- data/src/json/poderes/habilidades_unicas_de_origem/amigo_especial.json +16 -0
- data/src/json/poderes/habilidades_unicas_de_origem/antigo_mestre.json +15 -0
- data/src/json/poderes/habilidades_unicas_de_origem/busca_interior.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/confissao.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/coracao_heroico.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/cultura_exotica.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/desejo_de_liberdade.json +12 -0
- data/src/json/poderes/habilidades_unicas_de_origem/detetive.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/dom_artistico.json +10 -0
- data/src/json/poderes/habilidades_unicas_de_origem/escavador.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/esforcado.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/esse_cheiro.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/estoico.json +16 -0
- data/src/json/poderes/habilidades_unicas_de_origem/frutos_do_trabalho.json +19 -0
- data/src/json/poderes/habilidades_unicas_de_origem/gororoba.json +12 -0
- data/src/json/poderes/habilidades_unicas_de_origem/heranca.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/influencia_militar.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/lembrancas_graduais.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/medico_de_campo.json +12 -0
- data/src/json/poderes/habilidades_unicas_de_origem/membro_da_igreja.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/mochileiro.json +9 -0
- data/src/json/poderes/habilidades_unicas_de_origem/negociacao.json +12 -0
- data/src/json/poderes/habilidades_unicas_de_origem/palpite_fundamentado.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/pao_e_circo.json +11 -0
- data/src/json/poderes/habilidades_unicas_de_origem/passagem_de_navio.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/punguista.json +15 -0
- data/src/json/poderes/habilidades_unicas_de_origem/quebra_galho.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/rede_de_contatos.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/sangue_azul.json +12 -0
- data/src/json/poderes/habilidades_unicas_de_origem/truque_de_magica.json +14 -0
- data/src/json/poderes/habilidades_unicas_de_origem/vendedor_de_carcacas.json +13 -0
- data/src/json/poderes/habilidades_unicas_de_origem/vida_rustica.json +13 -0
- data/src/json/poderes/poderes_concedidos/afinidade_com_a_tormenta.json +14 -0
- data/src/json/poderes/poderes_concedidos/almejar_o_impossivel.json +13 -0
- data/src/json/poderes/poderes_concedidos/anfibio.json +13 -0
- data/src/json/poderes/poderes_concedidos/apostar_com_o_trapaceiro.json +12 -0
- data/src/json/poderes/poderes_concedidos/armas_da_ambicao.json +12 -0
- data/src/json/poderes/poderes_concedidos/arsenal_das_profundezas.json +14 -0
- data/src/json/poderes/poderes_concedidos/astucia_da_serpente.json +14 -0
- data/src/json/poderes/poderes_concedidos/ataque_piedoso.json +13 -0
- data/src/json/poderes/poderes_concedidos/aura_de_medo.json +17 -0
- data/src/json/poderes/poderes_concedidos/aura_de_paz.json +18 -0
- data/src/json/poderes/poderes_concedidos/aura_restauradora.json +13 -0
- data/src/json/poderes/poderes_concedidos/bencao_do_mana.json +10 -0
- data/src/json/poderes/poderes_concedidos/caricia_sombria.json +26 -0
- data/src/json/poderes/poderes_concedidos/centelha_magica.json +13 -0
- data/src/json/poderes/poderes_concedidos/compreender_os_ermos.json +17 -0
- data/src/json/poderes/poderes_concedidos/conhecimento_enciclopedico.json +13 -0
- data/src/json/poderes/poderes_concedidos/conjurar_arma.json +19 -0
- data/src/json/poderes/poderes_concedidos/coragem_total.json +11 -0
- data/src/json/poderes/poderes_concedidos/cura_gentil.json +10 -0
- data/src/json/poderes/poderes_concedidos/curandeira_perfeita.json +15 -0
- data/src/json/poderes/poderes_concedidos/dedo_verde.json +14 -0
- data/src/json/poderes/poderes_concedidos/descanso_natural.json +10 -0
- data/src/json/poderes/poderes_concedidos/dom_da_esperanca.json +15 -0
- data/src/json/poderes/poderes_concedidos/dom_da_imortalidade.json +8 -0
- data/src/json/poderes/poderes_concedidos/dom_da_profecia.json +6 -0
- data/src/json/poderes/poderes_concedidos/dom_da_ressurreicao.json +8 -0
- data/src/json/poderes/poderes_concedidos/dom_da_verdade.json +15 -0
- data/src/json/poderes/poderes_concedidos/escamas_draconicas.json +13 -0
- data/src/json/poderes/poderes_concedidos/escudo_magico.json +12 -0
- data/src/json/poderes/poderes_concedidos/espada_justiceira.json +13 -0
- data/src/json/poderes/poderes_concedidos/espada_solar.json +16 -0
- data/src/json/poderes/poderes_concedidos/extase_da_loucura.json +12 -0
- data/src/json/poderes/poderes_concedidos/familiar_ofidico.json +13 -0
- data/src/json/poderes/poderes_concedidos/farsa_do_fingidor.json +14 -0
- data/src/json/poderes/poderes_concedidos/fe_guerreira.json +20 -0
- data/src/json/poderes/poderes_concedidos/forma_de_macaco.json +20 -0
- data/src/json/poderes/poderes_concedidos/fulgor_solar.json +18 -0
- data/src/json/poderes/poderes_concedidos/furia_divina.json +20 -0
- data/src/json/poderes/poderes_concedidos/golpista_divino.json +14 -0
- data/src/json/poderes/poderes_concedidos/habitante_do_deserto.json +14 -0
- data/src/json/poderes/poderes_concedidos/inimigo_de_tenebra.json +14 -0
- data/src/json/poderes/poderes_concedidos/kiai_divino.json +13 -0
- data/src/json/poderes/poderes_concedidos/liberdade_divina.json +12 -0
- data/src/json/poderes/poderes_concedidos/manto_da_penumbra.json +14 -0
- data/src/json/poderes/poderes_concedidos/mente_analitica.json +16 -0
- data/src/json/poderes/poderes_concedidos/mente_vazia.json +16 -0
- data/src/json/poderes/poderes_concedidos/mestre_dos_mares.json +18 -0
- data/src/json/poderes/poderes_concedidos/olhar_amedrontador.json +14 -0
- data/src/json/poderes/poderes_concedidos/palavras_de_bondade.json +14 -0
- data/src/json/poderes/poderes_concedidos/percepcao_temporal.json +17 -0
- data/src/json/poderes/poderes_concedidos/pesquisa_abencoada.json +15 -0
- data/src/json/poderes/poderes_concedidos/poder_oculto.json +21 -0
- data/src/json/poderes/poderes_concedidos/presas_primordiais.json +23 -0
- data/src/json/poderes/poderes_concedidos/presas_venenosas.json +16 -0
- data/src/json/poderes/poderes_concedidos/rejeicao_divina.json +13 -0
- data/src/json/poderes/poderes_concedidos/reparar_injustica.json +13 -0
- data/src/json/poderes/poderes_concedidos/sangue_de_ferro.json +13 -0
- data/src/json/poderes/poderes_concedidos/sangue_ofidico.json +14 -0
- data/src/json/poderes/poderes_concedidos/servos_do_dragao.json +24 -0
- data/src/json/poderes/poderes_concedidos/sopro_do_mar.json +25 -0
- data/src/json/poderes/poderes_concedidos/sorte_dos_loucos.json +13 -0
- data/src/json/poderes/poderes_concedidos/talento_artistico.json +14 -0
- data/src/json/poderes/poderes_concedidos/teurgista_mistico.json +11 -0
- data/src/json/poderes/poderes_concedidos/tradicao_de_lin_wu.json +14 -0
- data/src/json/poderes/poderes_concedidos/transmissao_da_loucura.json +17 -0
- data/src/json/poderes/poderes_concedidos/tropas_duyshidakk.json +24 -0
- data/src/json/poderes/poderes_concedidos/urro_divino.json +13 -0
- data/src/json/poderes/poderes_concedidos/visao_nas_trevas.json +10 -0
- data/src/json/poderes/poderes_concedidos/voz_da_civilizacao.json +10 -0
- data/src/json/poderes/poderes_concedidos/voz_da_natureza.json +18 -0
- data/src/json/poderes/poderes_concedidos/voz_dos_monstros.json +11 -0
- data/src/json/poderes/poderes_concedidos/zumbificar.json +18 -0
- data/src/json/poderes/poderes_da_tormenta/anatomia_insana.json +12 -0
- data/src/json/poderes/poderes_da_tormenta/antenas.json +18 -0
- data/src/json/poderes/poderes_da_tormenta/armamento_aberrante.json +14 -0
- data/src/json/poderes/poderes_da_tormenta/articulacoes_flexiveis.json +15 -0
- data/src/json/poderes/poderes_da_tormenta/asas_insetoides.json +17 -0
- data/src/json/poderes/poderes_da_tormenta/carapaca.json +12 -0
- data/src/json/poderes/poderes_da_tormenta/corpo_aberrante.json +13 -0
- data/src/json/poderes/poderes_da_tormenta/cuspir_enxame.json +20 -0
- data/src/json/poderes/poderes_da_tormenta/dentes_afiados.json +19 -0
- data/src/json/poderes/poderes_da_tormenta/desprezar_a_realidade.json +21 -0
- data/src/json/poderes/poderes_da_tormenta/empunhadura_rubra.json +13 -0
- data/src/json/poderes/poderes_da_tormenta/fome_de_mana.json +11 -0
- data/src/json/poderes/poderes_da_tormenta/larva_explosiva.json +17 -0
- data/src/json/poderes/poderes_da_tormenta/legiao_aberrante.json +19 -0
- data/src/json/poderes/poderes_da_tormenta/maos_membranosas.json +18 -0
- data/src/json/poderes/poderes_da_tormenta/membros_estendidos.json +12 -0
- data/src/json/poderes/poderes_da_tormenta/membros_extras.json +27 -0
- data/src/json/poderes/poderes_da_tormenta/mente_aberrante.json +20 -0
- data/src/json/poderes/poderes_da_tormenta/olhos_vermelhos.json +12 -0
- data/src/json/poderes/poderes_da_tormenta/pele_corrompida.json +13 -0
- data/src/json/poderes/poderes_da_tormenta/sangue_acido.json +13 -0
- data/src/json/poderes/poderes_da_tormenta/visco_rubro.json +15 -0
- data/src/json/regras/alcances.json +33 -0
- data/src/json/regras/carga.json +47 -0
- data/src/json/regras/critico.json +32 -0
- data/src/json/regras/dinheiro_inicial.json +27 -0
- data/src/json/regras/empunhaduras.json +22 -0
- data/src/json/regras/habilidades_armas.json +37 -0
- data/src/json/regras/itens_superiores.json +19 -0
- data/src/json/regras/limites_uso.json +22 -0
- data/src/json/regras/moedas.json +32 -0
- data/src/json/regras/passos_dano.json +20 -0
- data/src/json/regras/proficiencias.json +32 -0
- data/src/json/regras/propositos_armas.json +37 -0
- data/src/json/regras/tipos_dano.json +25 -0
- data/src/json/regras/venenos.json +45 -0
- data/src/ruby/tormenta20/database.rb +224 -0
- data/src/ruby/tormenta20/models/arma.rb +123 -0
- data/src/ruby/tormenta20/models/armadura.rb +96 -0
- data/src/ruby/tormenta20/models/base.rb +19 -0
- data/src/ruby/tormenta20/models/classe.rb +134 -0
- data/src/ruby/tormenta20/models/divindade.rb +98 -0
- data/src/ruby/tormenta20/models/escudo.rb +59 -0
- data/src/ruby/tormenta20/models/item.rb +61 -0
- data/src/ruby/tormenta20/models/magia.rb +226 -0
- data/src/ruby/tormenta20/models/material_especial.rb +52 -0
- data/src/ruby/tormenta20/models/melhoria.rb +52 -0
- data/src/ruby/tormenta20/models/origem.rb +71 -0
- data/src/ruby/tormenta20/models/poder.rb +120 -0
- data/src/ruby/tormenta20/models/regra.rb +47 -0
- data/src/ruby/tormenta20/seeder.rb +267 -0
- data/src/ruby/tormenta20/version.rb +1 -1
- data/src/ruby/tormenta20.rb +169 -7
- data/src/schema/magia.schema.json +277 -0
- data/src/schema/tormenta20.sql +433 -0
- data/tasks/jsonlint.rb +6 -4
- data/tools/pdf_extractor/README.md +171 -0
- data/tools/pdf_extractor/__init__.py +17 -0
- data/tools/pdf_extractor/pdf_extractor.py +441 -0
- data/tools/pdf_extractor/pipeline.py +450 -0
- data/tools/pdf_extractor/prompts.py +789 -0
- data/tools/pdf_extractor/requirements.txt +4 -0
- metadata +488 -12
- data/src/ruby/open_struct_json.rb +0 -35
- data/src/ruby/tormenta20/classes.rb +0 -0
- data/src/ruby/tormenta20/equipment.rb +0 -0
- data/src/ruby/tormenta20/magias.rb +0 -35
- data/src/ruby/tormenta20/origins.rb +0 -0
- data/src/ruby/tormenta20/races.rb +0 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
-- =============================================================================
|
|
2
|
+
-- TORMENTA 20 DATABASE SCHEMA
|
|
3
|
+
-- =============================================================================
|
|
4
|
+
-- Este schema suporta todos os tipos de dados do sistema Tormenta 20
|
|
5
|
+
-- Usa PostgreSQL com JSONB para campos flexíveis de efeitos mecânicos
|
|
6
|
+
-- =============================================================================
|
|
7
|
+
|
|
8
|
+
-- Extensão para UUIDs (opcional, caso queira usar UUIDs como PK)
|
|
9
|
+
-- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
10
|
+
|
|
11
|
+
-- =============================================================================
|
|
12
|
+
-- TABELAS PRINCIPAIS
|
|
13
|
+
-- =============================================================================
|
|
14
|
+
|
|
15
|
+
-- -----------------------------------------------------------------------------
|
|
16
|
+
-- ORIGENS (Character Origins)
|
|
17
|
+
-- -----------------------------------------------------------------------------
|
|
18
|
+
CREATE TABLE origens (
|
|
19
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
20
|
+
name VARCHAR(255) NOT NULL,
|
|
21
|
+
description TEXT,
|
|
22
|
+
items JSONB DEFAULT '[]', -- Array de strings com itens iniciais
|
|
23
|
+
benefits JSONB DEFAULT '{}', -- { skills: [], powers: [] }
|
|
24
|
+
unique_power VARCHAR(100), -- Referência ao poder único
|
|
25
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
26
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
COMMENT ON TABLE origens IS 'Origens de personagem (backgrounds)';
|
|
30
|
+
COMMENT ON COLUMN origens.items IS 'Itens iniciais da origem';
|
|
31
|
+
COMMENT ON COLUMN origens.benefits IS 'Benefícios: perícias e poderes disponíveis';
|
|
32
|
+
COMMENT ON COLUMN origens.unique_power IS 'ID do poder único da origem';
|
|
33
|
+
|
|
34
|
+
-- -----------------------------------------------------------------------------
|
|
35
|
+
-- PODERES (Powers) - Tabela unificada para todos os tipos de poderes
|
|
36
|
+
-- -----------------------------------------------------------------------------
|
|
37
|
+
CREATE TYPE power_type AS ENUM (
|
|
38
|
+
'habilidade_unica_origem', -- Habilidades únicas de origem
|
|
39
|
+
'poder_concedido', -- Poderes concedidos por divindades
|
|
40
|
+
'poder_tormenta', -- Poderes da Tormenta
|
|
41
|
+
'poder_classe', -- Poderes de classe
|
|
42
|
+
'poder_geral', -- Poderes gerais
|
|
43
|
+
'poder_combate', -- Poderes de combate
|
|
44
|
+
'poder_destino', -- Poderes de destino
|
|
45
|
+
'poder_magia' -- Poderes de magia
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
CREATE TABLE poderes (
|
|
49
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
50
|
+
name VARCHAR(255) NOT NULL,
|
|
51
|
+
type power_type NOT NULL,
|
|
52
|
+
description TEXT,
|
|
53
|
+
effects JSONB DEFAULT '{}', -- Efeitos mecânicos estruturados
|
|
54
|
+
prerequisites JSONB DEFAULT '[]', -- Pré-requisitos
|
|
55
|
+
origin_id VARCHAR(100), -- Para habilidades únicas de origem
|
|
56
|
+
deities JSONB DEFAULT '[]', -- Para poderes concedidos (array de deity IDs)
|
|
57
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
58
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
CREATE INDEX idx_poderes_type ON poderes(type);
|
|
62
|
+
CREATE INDEX idx_poderes_origin ON poderes(origin_id) WHERE origin_id IS NOT NULL;
|
|
63
|
+
CREATE INDEX idx_poderes_deities ON poderes USING GIN(deities) WHERE deities != '[]';
|
|
64
|
+
|
|
65
|
+
COMMENT ON TABLE poderes IS 'Todos os tipos de poderes do sistema';
|
|
66
|
+
COMMENT ON COLUMN poderes.effects IS 'Efeitos mecânicos em formato JSON estruturado';
|
|
67
|
+
COMMENT ON COLUMN poderes.deities IS 'Array de IDs de divindades que concedem o poder';
|
|
68
|
+
|
|
69
|
+
-- -----------------------------------------------------------------------------
|
|
70
|
+
-- DIVINDADES (Deities)
|
|
71
|
+
-- -----------------------------------------------------------------------------
|
|
72
|
+
CREATE TYPE energy_type AS ENUM ('positiva', 'negativa', 'qualquer');
|
|
73
|
+
|
|
74
|
+
CREATE TABLE divindades (
|
|
75
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
76
|
+
name VARCHAR(255) NOT NULL,
|
|
77
|
+
title VARCHAR(255), -- Ex: "Deus da Justiça"
|
|
78
|
+
description TEXT,
|
|
79
|
+
beliefs_objectives JSONB DEFAULT '[]', -- Array de strings
|
|
80
|
+
holy_symbol VARCHAR(255),
|
|
81
|
+
energy energy_type NOT NULL DEFAULT 'qualquer',
|
|
82
|
+
preferred_weapon VARCHAR(255),
|
|
83
|
+
devotees JSONB DEFAULT '{}', -- { races: [], classes: [] }
|
|
84
|
+
granted_powers JSONB DEFAULT '[]', -- Array de power IDs
|
|
85
|
+
obligations_restrictions TEXT,
|
|
86
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
87
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
COMMENT ON TABLE divindades IS 'Deuses do Panteão de Arton';
|
|
91
|
+
COMMENT ON COLUMN divindades.devotees IS 'Raças e classes que podem ser devotos';
|
|
92
|
+
COMMENT ON COLUMN divindades.granted_powers IS 'IDs dos poderes concedidos';
|
|
93
|
+
|
|
94
|
+
-- -----------------------------------------------------------------------------
|
|
95
|
+
-- CLASSES (Character Classes)
|
|
96
|
+
-- -----------------------------------------------------------------------------
|
|
97
|
+
CREATE TABLE classes (
|
|
98
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
99
|
+
name VARCHAR(255) NOT NULL,
|
|
100
|
+
hit_points JSONB NOT NULL, -- { initial: int, per_level: int }
|
|
101
|
+
mana_points JSONB NOT NULL, -- { per_level: int }
|
|
102
|
+
skills JSONB NOT NULL, -- { mandatory: [], choose_amount: int, choose_from: [] }
|
|
103
|
+
proficiencies JSONB NOT NULL, -- { weapons: [], armors: [], shields: bool }
|
|
104
|
+
abilities JSONB DEFAULT '[]', -- Array de ability IDs
|
|
105
|
+
powers JSONB DEFAULT '[]', -- Array de power IDs disponíveis
|
|
106
|
+
progression JSONB DEFAULT '[]', -- Array de { level: int, abilities: [] }
|
|
107
|
+
spellcasting JSONB, -- Configuração de magia (se aplicável)
|
|
108
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
109
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
COMMENT ON TABLE classes IS 'Classes de personagem';
|
|
113
|
+
COMMENT ON COLUMN classes.progression IS 'Progressão de habilidades por nível';
|
|
114
|
+
|
|
115
|
+
-- -----------------------------------------------------------------------------
|
|
116
|
+
-- MAGIAS (Spells)
|
|
117
|
+
-- -----------------------------------------------------------------------------
|
|
118
|
+
CREATE TYPE spell_type AS ENUM ('arcana', 'divina', 'universal');
|
|
119
|
+
CREATE TYPE spell_school AS ENUM ('abjur', 'adiv', 'conv', 'encan', 'evoc', 'ilusao', 'necro', 'trans');
|
|
120
|
+
|
|
121
|
+
CREATE TABLE magias (
|
|
122
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
123
|
+
name VARCHAR(255) NOT NULL,
|
|
124
|
+
type spell_type NOT NULL,
|
|
125
|
+
circle SMALLINT NOT NULL CHECK (circle >= 1 AND circle <= 5),
|
|
126
|
+
school spell_school NOT NULL,
|
|
127
|
+
execution VARCHAR(50) NOT NULL, -- padrão, completa, reação, livre
|
|
128
|
+
execution_details TEXT,
|
|
129
|
+
range VARCHAR(100),
|
|
130
|
+
target JSONB, -- { amount, up_to, type }
|
|
131
|
+
effect VARCHAR(50), -- area, alvo, etc.
|
|
132
|
+
effect_details JSONB, -- { shape, dimension, size, etc. }
|
|
133
|
+
duration VARCHAR(100),
|
|
134
|
+
duration_details TEXT,
|
|
135
|
+
resistance JSONB, -- { effect, skill }
|
|
136
|
+
extra_costs TEXT,
|
|
137
|
+
description TEXT NOT NULL,
|
|
138
|
+
enhancements JSONB DEFAULT '[]', -- Array de aprimoramentos
|
|
139
|
+
effects JSONB DEFAULT '[]', -- Efeitos mecânicos
|
|
140
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
141
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
CREATE INDEX idx_magias_type ON magias(type);
|
|
145
|
+
CREATE INDEX idx_magias_circle ON magias(circle);
|
|
146
|
+
CREATE INDEX idx_magias_school ON magias(school);
|
|
147
|
+
|
|
148
|
+
COMMENT ON TABLE magias IS 'Magias arcanas e divinas';
|
|
149
|
+
COMMENT ON COLUMN magias.enhancements IS 'Aprimoramentos disponíveis para a magia';
|
|
150
|
+
|
|
151
|
+
-- -----------------------------------------------------------------------------
|
|
152
|
+
-- EQUIPAMENTOS - ARMAS (Weapons)
|
|
153
|
+
-- -----------------------------------------------------------------------------
|
|
154
|
+
CREATE TYPE weapon_category AS ENUM ('simples', 'marciais', 'exoticas', 'fogo');
|
|
155
|
+
CREATE TYPE damage_type AS ENUM ('corte', 'perfuracao', 'impacto', 'fogo', 'frio', 'eletricidade', 'acido', 'trevas', 'luz', 'psiquico');
|
|
156
|
+
|
|
157
|
+
CREATE TABLE armas (
|
|
158
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
159
|
+
name VARCHAR(255) NOT NULL,
|
|
160
|
+
category weapon_category NOT NULL,
|
|
161
|
+
price INTEGER, -- Preço em T$
|
|
162
|
+
damage VARCHAR(20), -- Ex: "1d8", "2d6"
|
|
163
|
+
damage_type damage_type,
|
|
164
|
+
critical VARCHAR(20), -- Ex: "19/x2", "x3"
|
|
165
|
+
range VARCHAR(50), -- curto, medio, longo ou NULL
|
|
166
|
+
weight DECIMAL(10,2), -- Peso em kg
|
|
167
|
+
properties JSONB DEFAULT '[]', -- Propriedades especiais (array)
|
|
168
|
+
description TEXT,
|
|
169
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
170
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
CREATE INDEX idx_armas_category ON armas(category);
|
|
174
|
+
|
|
175
|
+
COMMENT ON TABLE armas IS 'Armas do sistema';
|
|
176
|
+
|
|
177
|
+
-- -----------------------------------------------------------------------------
|
|
178
|
+
-- EQUIPAMENTOS - ARMADURAS (Armors)
|
|
179
|
+
-- -----------------------------------------------------------------------------
|
|
180
|
+
CREATE TYPE armor_category AS ENUM ('leve', 'pesada');
|
|
181
|
+
|
|
182
|
+
CREATE TABLE armaduras (
|
|
183
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
184
|
+
name VARCHAR(255) NOT NULL,
|
|
185
|
+
category armor_category NOT NULL,
|
|
186
|
+
price INTEGER,
|
|
187
|
+
defense_bonus INTEGER NOT NULL, -- Bônus de defesa
|
|
188
|
+
armor_penalty INTEGER DEFAULT 0, -- Penalidade de armadura
|
|
189
|
+
weight DECIMAL(10,2),
|
|
190
|
+
properties JSONB DEFAULT '[]',
|
|
191
|
+
description TEXT,
|
|
192
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
193
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
COMMENT ON TABLE armaduras IS 'Armaduras do sistema';
|
|
197
|
+
|
|
198
|
+
-- -----------------------------------------------------------------------------
|
|
199
|
+
-- EQUIPAMENTOS - ESCUDOS (Shields)
|
|
200
|
+
-- -----------------------------------------------------------------------------
|
|
201
|
+
CREATE TABLE escudos (
|
|
202
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
203
|
+
name VARCHAR(255) NOT NULL,
|
|
204
|
+
price INTEGER,
|
|
205
|
+
defense_bonus INTEGER NOT NULL,
|
|
206
|
+
armor_penalty INTEGER DEFAULT 0,
|
|
207
|
+
weight DECIMAL(10,2),
|
|
208
|
+
properties JSONB DEFAULT '[]',
|
|
209
|
+
description TEXT,
|
|
210
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
211
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
COMMENT ON TABLE escudos IS 'Escudos do sistema';
|
|
215
|
+
|
|
216
|
+
-- -----------------------------------------------------------------------------
|
|
217
|
+
-- EQUIPAMENTOS - ITENS GERAIS (General Items)
|
|
218
|
+
-- -----------------------------------------------------------------------------
|
|
219
|
+
CREATE TABLE itens (
|
|
220
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
221
|
+
name VARCHAR(255) NOT NULL,
|
|
222
|
+
category VARCHAR(100), -- Categoria do item
|
|
223
|
+
price INTEGER,
|
|
224
|
+
weight DECIMAL(10,2),
|
|
225
|
+
description TEXT,
|
|
226
|
+
effects JSONB DEFAULT '{}',
|
|
227
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
228
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
COMMENT ON TABLE itens IS 'Itens gerais (equipamentos, ferramentas, etc.)';
|
|
232
|
+
|
|
233
|
+
-- -----------------------------------------------------------------------------
|
|
234
|
+
-- ITENS SUPERIORES - MATERIAIS ESPECIAIS (Special Materials)
|
|
235
|
+
-- -----------------------------------------------------------------------------
|
|
236
|
+
CREATE TABLE materiais_especiais (
|
|
237
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
238
|
+
name VARCHAR(255) NOT NULL,
|
|
239
|
+
description TEXT,
|
|
240
|
+
applicable_to JSONB DEFAULT '[]', -- Tipos de itens aplicáveis
|
|
241
|
+
price_modifier JSONB, -- Modificador de preço
|
|
242
|
+
effects JSONB DEFAULT '{}',
|
|
243
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
244
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
COMMENT ON TABLE materiais_especiais IS 'Materiais especiais para itens';
|
|
248
|
+
|
|
249
|
+
-- -----------------------------------------------------------------------------
|
|
250
|
+
-- ITENS SUPERIORES - MELHORIAS (Enhancements)
|
|
251
|
+
-- -----------------------------------------------------------------------------
|
|
252
|
+
CREATE TABLE melhorias (
|
|
253
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
254
|
+
name VARCHAR(255) NOT NULL,
|
|
255
|
+
description TEXT,
|
|
256
|
+
applicable_to JSONB DEFAULT '[]',
|
|
257
|
+
price INTEGER,
|
|
258
|
+
effects JSONB DEFAULT '{}',
|
|
259
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
260
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
COMMENT ON TABLE melhorias IS 'Melhorias mágicas para itens';
|
|
264
|
+
|
|
265
|
+
-- -----------------------------------------------------------------------------
|
|
266
|
+
-- REGRAS (Rules/Reference Data)
|
|
267
|
+
-- -----------------------------------------------------------------------------
|
|
268
|
+
CREATE TABLE regras (
|
|
269
|
+
id VARCHAR(100) PRIMARY KEY,
|
|
270
|
+
name VARCHAR(255) NOT NULL,
|
|
271
|
+
description TEXT,
|
|
272
|
+
data JSONB NOT NULL, -- Dados estruturados da regra
|
|
273
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
274
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
275
|
+
);
|
|
276
|
+
|
|
277
|
+
COMMENT ON TABLE regras IS 'Regras e dados de referência do sistema';
|
|
278
|
+
|
|
279
|
+
-- =============================================================================
|
|
280
|
+
-- TABELAS DE RELACIONAMENTO (Junction Tables)
|
|
281
|
+
-- =============================================================================
|
|
282
|
+
|
|
283
|
+
-- Relacionamento entre divindades e poderes concedidos
|
|
284
|
+
CREATE TABLE divindade_poderes (
|
|
285
|
+
divindade_id VARCHAR(100) REFERENCES divindades(id) ON DELETE CASCADE,
|
|
286
|
+
poder_id VARCHAR(100) REFERENCES poderes(id) ON DELETE CASCADE,
|
|
287
|
+
PRIMARY KEY (divindade_id, poder_id)
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
-- Relacionamento entre classes e poderes disponíveis
|
|
291
|
+
CREATE TABLE classe_poderes (
|
|
292
|
+
classe_id VARCHAR(100) REFERENCES classes(id) ON DELETE CASCADE,
|
|
293
|
+
poder_id VARCHAR(100) REFERENCES poderes(id) ON DELETE CASCADE,
|
|
294
|
+
PRIMARY KEY (classe_id, poder_id)
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
-- Relacionamento entre classes e magias (para classes conjuradoras)
|
|
298
|
+
CREATE TABLE classe_magias (
|
|
299
|
+
classe_id VARCHAR(100) REFERENCES classes(id) ON DELETE CASCADE,
|
|
300
|
+
magia_id VARCHAR(100) REFERENCES magias(id) ON DELETE CASCADE,
|
|
301
|
+
circle_available SMALLINT, -- Círculo em que a magia fica disponível
|
|
302
|
+
PRIMARY KEY (classe_id, magia_id)
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
-- =============================================================================
|
|
306
|
+
-- VIEWS ÚTEIS
|
|
307
|
+
-- =============================================================================
|
|
308
|
+
|
|
309
|
+
-- View de poderes concedidos com suas divindades
|
|
310
|
+
CREATE VIEW v_poderes_concedidos AS
|
|
311
|
+
SELECT
|
|
312
|
+
p.id,
|
|
313
|
+
p.name,
|
|
314
|
+
p.description,
|
|
315
|
+
p.effects,
|
|
316
|
+
p.prerequisites,
|
|
317
|
+
ARRAY_AGG(d.name ORDER BY d.name) as divindades_nomes,
|
|
318
|
+
p.deities as divindades_ids
|
|
319
|
+
FROM poderes p
|
|
320
|
+
LEFT JOIN divindades d ON d.id = ANY(
|
|
321
|
+
SELECT jsonb_array_elements_text(p.deities)
|
|
322
|
+
)
|
|
323
|
+
WHERE p.type = 'poder_concedido'
|
|
324
|
+
GROUP BY p.id, p.name, p.description, p.effects, p.prerequisites, p.deities;
|
|
325
|
+
|
|
326
|
+
-- View de origens com seus poderes únicos
|
|
327
|
+
CREATE VIEW v_origens_completas AS
|
|
328
|
+
SELECT
|
|
329
|
+
o.id,
|
|
330
|
+
o.name,
|
|
331
|
+
o.description,
|
|
332
|
+
o.items,
|
|
333
|
+
o.benefits,
|
|
334
|
+
p.name as unique_power_name,
|
|
335
|
+
p.description as unique_power_description,
|
|
336
|
+
p.effects as unique_power_effects
|
|
337
|
+
FROM origens o
|
|
338
|
+
LEFT JOIN poderes p ON p.id = o.unique_power;
|
|
339
|
+
|
|
340
|
+
-- View de divindades com seus poderes
|
|
341
|
+
CREATE VIEW v_divindades_completas AS
|
|
342
|
+
SELECT
|
|
343
|
+
d.id,
|
|
344
|
+
d.name,
|
|
345
|
+
d.title,
|
|
346
|
+
d.description,
|
|
347
|
+
d.beliefs_objectives,
|
|
348
|
+
d.holy_symbol,
|
|
349
|
+
d.energy,
|
|
350
|
+
d.preferred_weapon,
|
|
351
|
+
d.devotees,
|
|
352
|
+
d.obligations_restrictions,
|
|
353
|
+
ARRAY_AGG(
|
|
354
|
+
jsonb_build_object(
|
|
355
|
+
'id', p.id,
|
|
356
|
+
'name', p.name,
|
|
357
|
+
'description', p.description
|
|
358
|
+
) ORDER BY p.name
|
|
359
|
+
) FILTER (WHERE p.id IS NOT NULL) as poderes
|
|
360
|
+
FROM divindades d
|
|
361
|
+
LEFT JOIN poderes p ON p.id = ANY(
|
|
362
|
+
SELECT jsonb_array_elements_text(d.granted_powers)
|
|
363
|
+
)
|
|
364
|
+
GROUP BY d.id;
|
|
365
|
+
|
|
366
|
+
-- =============================================================================
|
|
367
|
+
-- FUNÇÕES AUXILIARES
|
|
368
|
+
-- =============================================================================
|
|
369
|
+
|
|
370
|
+
-- Função para atualizar timestamp de updated_at
|
|
371
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
372
|
+
RETURNS TRIGGER AS $$
|
|
373
|
+
BEGIN
|
|
374
|
+
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
375
|
+
RETURN NEW;
|
|
376
|
+
END;
|
|
377
|
+
$$ language 'plpgsql';
|
|
378
|
+
|
|
379
|
+
-- Triggers para atualização automática de updated_at
|
|
380
|
+
CREATE TRIGGER update_origens_updated_at BEFORE UPDATE ON origens
|
|
381
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
382
|
+
|
|
383
|
+
CREATE TRIGGER update_poderes_updated_at BEFORE UPDATE ON poderes
|
|
384
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
385
|
+
|
|
386
|
+
CREATE TRIGGER update_divindades_updated_at BEFORE UPDATE ON divindades
|
|
387
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
388
|
+
|
|
389
|
+
CREATE TRIGGER update_classes_updated_at BEFORE UPDATE ON classes
|
|
390
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
391
|
+
|
|
392
|
+
CREATE TRIGGER update_magias_updated_at BEFORE UPDATE ON magias
|
|
393
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
394
|
+
|
|
395
|
+
CREATE TRIGGER update_armas_updated_at BEFORE UPDATE ON armas
|
|
396
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
397
|
+
|
|
398
|
+
CREATE TRIGGER update_armaduras_updated_at BEFORE UPDATE ON armaduras
|
|
399
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
400
|
+
|
|
401
|
+
CREATE TRIGGER update_escudos_updated_at BEFORE UPDATE ON escudos
|
|
402
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
403
|
+
|
|
404
|
+
CREATE TRIGGER update_itens_updated_at BEFORE UPDATE ON itens
|
|
405
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
406
|
+
|
|
407
|
+
CREATE TRIGGER update_materiais_especiais_updated_at BEFORE UPDATE ON materiais_especiais
|
|
408
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
409
|
+
|
|
410
|
+
CREATE TRIGGER update_melhorias_updated_at BEFORE UPDATE ON melhorias
|
|
411
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
412
|
+
|
|
413
|
+
CREATE TRIGGER update_regras_updated_at BEFORE UPDATE ON regras
|
|
414
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
415
|
+
|
|
416
|
+
-- =============================================================================
|
|
417
|
+
-- ÍNDICES ADICIONAIS PARA PERFORMANCE
|
|
418
|
+
-- =============================================================================
|
|
419
|
+
|
|
420
|
+
-- Índices GIN para busca em campos JSONB
|
|
421
|
+
CREATE INDEX idx_origens_benefits ON origens USING GIN(benefits);
|
|
422
|
+
CREATE INDEX idx_poderes_effects ON poderes USING GIN(effects);
|
|
423
|
+
CREATE INDEX idx_divindades_devotees ON divindades USING GIN(devotees);
|
|
424
|
+
CREATE INDEX idx_magias_effects ON magias USING GIN(effects);
|
|
425
|
+
CREATE INDEX idx_magias_enhancements ON magias USING GIN(enhancements);
|
|
426
|
+
|
|
427
|
+
-- Índices para busca textual
|
|
428
|
+
CREATE INDEX idx_origens_name ON origens(name);
|
|
429
|
+
CREATE INDEX idx_poderes_name ON poderes(name);
|
|
430
|
+
CREATE INDEX idx_divindades_name ON divindades(name);
|
|
431
|
+
CREATE INDEX idx_classes_name ON classes(name);
|
|
432
|
+
CREATE INDEX idx_magias_name ON magias(name);
|
|
433
|
+
CREATE INDEX idx_armas_name ON armas(name);
|
data/tasks/jsonlint.rb
CHANGED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# PDF Extractor - Tormenta 20
|
|
2
|
+
|
|
3
|
+
Pipeline para extrair dados estruturados do PDF do Tormenta 20 e convertê-los em JSON usando um modelo LLM local (Ollama).
|
|
4
|
+
|
|
5
|
+
## Requisitos
|
|
6
|
+
|
|
7
|
+
### Sistema
|
|
8
|
+
- Python 3.10+
|
|
9
|
+
- GPU com 12GB+ VRAM (recomendado) ou CPU com 32GB+ RAM
|
|
10
|
+
|
|
11
|
+
### Ollama
|
|
12
|
+
```bash
|
|
13
|
+
# Instalar Ollama
|
|
14
|
+
curl -fsSL https://ollama.com/install.sh | sh
|
|
15
|
+
|
|
16
|
+
# Baixar modelo recomendado
|
|
17
|
+
ollama pull mistral
|
|
18
|
+
# ou
|
|
19
|
+
ollama pull llama3
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Dependências Python
|
|
23
|
+
```bash
|
|
24
|
+
cd tools/pdf_extractor
|
|
25
|
+
pip install -r requirements.txt
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Uso
|
|
29
|
+
|
|
30
|
+
### 1. Listar seções disponíveis no PDF
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
python pdf_extractor.py tormenta20.pdf --list-sections
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Saída esperada:
|
|
37
|
+
```
|
|
38
|
+
Seções encontradas no índice:
|
|
39
|
+
============================================================
|
|
40
|
+
racas: páginas 18-31 (Raças)
|
|
41
|
+
classes: páginas 32-84 (Classes)
|
|
42
|
+
origens: páginas 85-95 (Origens)
|
|
43
|
+
deuses: páginas 96-105 (Deuses)
|
|
44
|
+
...
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Extrair entidades (dry-run)
|
|
48
|
+
|
|
49
|
+
Veja quais entidades serão extraídas sem processá-las:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
python pipeline.py tormenta20.pdf racas racas --dry-run
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Extrair e gerar JSONs
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Extrair todas as raças
|
|
59
|
+
python pipeline.py tormenta20.pdf racas racas
|
|
60
|
+
|
|
61
|
+
# Extrair classes com modelo específico
|
|
62
|
+
python pipeline.py tormenta20.pdf classes classes --model llama3
|
|
63
|
+
|
|
64
|
+
# Especificar diretório de saída
|
|
65
|
+
python pipeline.py tormenta20.pdf magias magias --output-dir ../../src/json/magias
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Tipos de Entidade Disponíveis
|
|
69
|
+
|
|
70
|
+
| Tipo | Descrição | Páginas (aprox.) |
|
|
71
|
+
|------|-----------|------------------|
|
|
72
|
+
| `racas` | Raças jogáveis | 18-31 |
|
|
73
|
+
| `classes` | Classes de personagem | 32-84 |
|
|
74
|
+
| `origens` | Origens de personagem | 85-95 |
|
|
75
|
+
| `divindades` | Deuses do panteão | 96-105 |
|
|
76
|
+
| `pericias` | Perícias | 114-123 |
|
|
77
|
+
| `poderes` | Poderes gerais | 124-137 |
|
|
78
|
+
| `poderes_combate` | Poderes de combate | 124-128 |
|
|
79
|
+
| `poderes_destino` | Poderes de destino | 129-130 |
|
|
80
|
+
| `poderes_magia` | Poderes de magia | 131 |
|
|
81
|
+
| `poderes_concedidos` | Poderes concedidos (deuses) | 132-135 |
|
|
82
|
+
| `poderes_tormenta` | Poderes da Tormenta | 136-137 |
|
|
83
|
+
| `armas` | Armas | 142-151 |
|
|
84
|
+
| `armaduras` | Armaduras e escudos | 152-154 |
|
|
85
|
+
| `itens_gerais` | Itens gerais | 155-163 |
|
|
86
|
+
| `itens_superiores` | Itens superiores | 164-167 |
|
|
87
|
+
| `magias` | Magias | 178-211 |
|
|
88
|
+
| `criaturas` | Criaturas/monstros | 282-316 |
|
|
89
|
+
| `perigos` | Perigos e armadilhas | 317-321 |
|
|
90
|
+
| `tesouros` | Tesouros | 327-332 |
|
|
91
|
+
| `itens_magicos_armas` | Armas mágicas | 335-337 |
|
|
92
|
+
| `itens_magicos_armaduras` | Armaduras mágicas | 338-340 |
|
|
93
|
+
| `pocoes_pergaminhos` | Poções e pergaminhos | 341 |
|
|
94
|
+
| `acessorios` | Acessórios mágicos | 342-345 |
|
|
95
|
+
| `artefatos` | Artefatos | 346-349 |
|
|
96
|
+
| `condicoes` | Condições | 394 |
|
|
97
|
+
|
|
98
|
+
## Estrutura de Saída
|
|
99
|
+
|
|
100
|
+
Os JSONs são salvos em `src/json/<tipo>/` por padrão:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
src/json/
|
|
104
|
+
├── racas/
|
|
105
|
+
│ ├── humano.json
|
|
106
|
+
│ ├── anao.json
|
|
107
|
+
│ └── ...
|
|
108
|
+
├── classes/
|
|
109
|
+
│ ├── arcanista.json
|
|
110
|
+
│ └── ...
|
|
111
|
+
└── ...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Modelos Recomendados
|
|
115
|
+
|
|
116
|
+
| Modelo | VRAM | Qualidade | Velocidade |
|
|
117
|
+
|--------|------|-----------|------------|
|
|
118
|
+
| `mistral` | ~10GB | Excelente | Rápido |
|
|
119
|
+
| `llama3` | ~10GB | Excelente | Rápido |
|
|
120
|
+
| `mixtral` | ~32GB | Superior | Médio |
|
|
121
|
+
| `qwen2.5:14b` | ~11GB | Muito boa | Médio |
|
|
122
|
+
|
|
123
|
+
## Troubleshooting
|
|
124
|
+
|
|
125
|
+
### Ollama não está rodando
|
|
126
|
+
```bash
|
|
127
|
+
ollama serve
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Modelo não instalado
|
|
131
|
+
```bash
|
|
132
|
+
ollama pull mistral
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Memória insuficiente
|
|
136
|
+
Use um modelo menor ou quantização:
|
|
137
|
+
```bash
|
|
138
|
+
ollama pull mistral:7b-q4_0
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### JSON mal formatado
|
|
142
|
+
O pipeline tenta extrair JSON mesmo de respostas malformadas. Se falhar, a entidade será listada nos erros do relatório final. Você pode:
|
|
143
|
+
1. Processar novamente apenas as entidades que falharam
|
|
144
|
+
2. Ajustar o prompt em `prompts.py`
|
|
145
|
+
3. Criar o JSON manualmente
|
|
146
|
+
|
|
147
|
+
## Uso Programático
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
from pdf_extractor import extract_entities, list_available_sections
|
|
151
|
+
from pipeline import run_pipeline, LLMClient
|
|
152
|
+
|
|
153
|
+
# Listar seções
|
|
154
|
+
sections = list_available_sections("tormenta20.pdf")
|
|
155
|
+
|
|
156
|
+
# Extrair entidades de uma seção
|
|
157
|
+
entities = extract_entities("tormenta20.pdf", "racas", "racas")
|
|
158
|
+
|
|
159
|
+
# Executar pipeline completo
|
|
160
|
+
stats = run_pipeline(
|
|
161
|
+
pdf_path="tormenta20.pdf",
|
|
162
|
+
section="racas",
|
|
163
|
+
entity_type="racas",
|
|
164
|
+
model="mistral",
|
|
165
|
+
output_dir="./output"
|
|
166
|
+
)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Contribuindo
|
|
170
|
+
|
|
171
|
+
Se encontrar padrões de extração que não funcionam bem, ajuste os regex em `ENTITY_PATTERNS` no arquivo `pdf_extractor.py`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Ferramentas para extração de dados do PDF do Tormenta 20.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .pdf_extractor import PDFExtractor, extract_entities, list_available_sections
|
|
6
|
+
from .prompts import get_prompt, PROMPTS
|
|
7
|
+
from .pipeline import run_pipeline, LLMClient
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"PDFExtractor",
|
|
11
|
+
"extract_entities",
|
|
12
|
+
"list_available_sections",
|
|
13
|
+
"get_prompt",
|
|
14
|
+
"PROMPTS",
|
|
15
|
+
"run_pipeline",
|
|
16
|
+
"LLMClient"
|
|
17
|
+
]
|